mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
47_OBIS: Fixed leading zeros in readings
git-svn-id: https://svn.fhem.de/fhem/trunk@11208 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
9657de5e92
commit
98930de19d
@ -11,6 +11,7 @@ package main;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Time::HiRes qw(gettimeofday usleep);
|
use Time::HiRes qw(gettimeofday usleep);
|
||||||
|
use Scalar::Util qw(looks_like_number);
|
||||||
use POSIX qw{strftime};
|
use POSIX qw{strftime};
|
||||||
|
|
||||||
my %OBIS_channels = ( "21"=>"power_L1",
|
my %OBIS_channels = ( "21"=>"power_L1",
|
||||||
@ -139,7 +140,6 @@ sub OBIS_Define($$)
|
|||||||
$hash->{helper}{TRIGGERTIME}=gettimeofday();
|
$hash->{helper}{TRIGGERTIME}=gettimeofday();
|
||||||
if( !$init_done ) {
|
if( !$init_done ) {
|
||||||
$attr{$name}{"event-on-change-reading"} = ".*";
|
$attr{$name}{"event-on-change-reading"} = ".*";
|
||||||
$attr{$name}{"event-min-interval"} = ".*:10";
|
|
||||||
}
|
}
|
||||||
my $t=OBIS_adjustAlign($hash,AttrVal($name,"alignTime",undef),$hash->{helper}{DEVICES}[1]);
|
my $t=OBIS_adjustAlign($hash,AttrVal($name,"alignTime",undef),$hash->{helper}{DEVICES}[1]);
|
||||||
Log3 ($hash,5,"OBIS ($name) - Internal timer set to ".FmtDateTime($t)) if ($hash->{helper}{DEVICES}[1]>0);
|
Log3 ($hash,5,"OBIS ($name) - Internal timer set to ".FmtDateTime($t)) if ($hash->{helper}{DEVICES}[1]>0);
|
||||||
@ -293,7 +293,6 @@ sub OBIS_Parse($$)
|
|||||||
|
|
||||||
my $remainingSML;
|
my $remainingSML;
|
||||||
($buffer,$remainingSML) = OBIS_trySMLdecode($hash,$buffer) if ($hash->{MeterType}=~/SML|Ext|Unknown/);
|
($buffer,$remainingSML) = OBIS_trySMLdecode($hash,$buffer) if ($hash->{MeterType}=~/SML|Ext|Unknown/);
|
||||||
return undef if(index($buffer,chr(13).chr(10)) == -1);
|
|
||||||
my $type= $hash->{MeterType};
|
my $type= $hash->{MeterType};
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
if(index($buffer,chr(13).chr(10)) ne -1){
|
if(index($buffer,chr(13).chr(10)) ne -1){
|
||||||
@ -329,13 +328,13 @@ sub OBIS_Parse($$)
|
|||||||
if ($rmsg =~ $OBIS_codes{$code}) {
|
if ($rmsg =~ $OBIS_codes{$code}) {
|
||||||
if ($code eq "Channels_sum") {
|
if ($code eq "Channels_sum") {
|
||||||
my $L=$hash->{helper}{Channels}{$1} // $OBIS_channels{$1} // "Unknown_Channel_$1";
|
my $L=$hash->{helper}{Channels}{$1} // $OBIS_channels{$1} // "Unknown_Channel_$1";
|
||||||
readingsBulkUpdate($hash, "sum_$L",$3.(AttrVal($name,"unitReadings","off") eq "off"?"":" $4"));
|
readingsBulkUpdate($hash, "sum_$L",(looks_like_number($3) ? $3+0 : $3).(AttrVal($name,"unitReadings","off") eq "off"?"":" $4"));
|
||||||
readingsBulkUpdate($hash, "dir_sum_$L",$hash->{helper}{directions}{$2} // $dir{$2}) if (length $2);
|
readingsBulkUpdate($hash, "dir_sum_$L",$hash->{helper}{directions}{$2} // $dir{$2}) if (length $2);
|
||||||
}
|
}
|
||||||
|
|
||||||
elsif ($code eq "Channels") {
|
elsif ($code eq "Channels") {
|
||||||
my $L=$hash->{helper}{Channels}{$1} // $OBIS_channels{$1} // "Unknown_Channel_$1";
|
my $L=$hash->{helper}{Channels}{$1} // $OBIS_channels{$1} // "Unknown_Channel_$1";
|
||||||
readingsBulkUpdate($hash, "$L",$3.(AttrVal($name,"unitReadings","off") eq "off"?"":" $4"));
|
readingsBulkUpdate($hash, "$L",(looks_like_number($3) ? $3+0 : $3).(AttrVal($name,"unitReadings","off") eq "off"?"":" $4"));
|
||||||
readingsBulkUpdate($hash, "dir_$L",$hash->{helper}{directions}{$2} // $dir{$2}) if (length $2);
|
readingsBulkUpdate($hash, "dir_$L",$hash->{helper}{directions}{$2} // $dir{$2}) if (length $2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,9 +342,9 @@ sub OBIS_Parse($$)
|
|||||||
my $L=$hash->{helper}{Channels}{$1.".".$2} // $OBIS_channels{$1.".".$2} // "Unknown_Channel_$1.$2";
|
my $L=$hash->{helper}{Channels}{$1.".".$2} // $OBIS_channels{$1.".".$2} // "Unknown_Channel_$1.$2";
|
||||||
my $chan=$3+0 > 0 ? "_Ch$3" : "";
|
my $chan=$3+0 > 0 ? "_Ch$3" : "";
|
||||||
if($1==1) {
|
if($1==1) {
|
||||||
readingsBulkUpdate($hash, $L.$chan ,$5 +AttrVal($name,"offset_energy",0).(AttrVal($name,"unitReadings","off") eq "off"?"":" $6"));
|
readingsBulkUpdate($hash, $L.$chan ,(looks_like_number($3) ? $5+0 : $5) +AttrVal($name,"offset_energy",0).(AttrVal($name,"unitReadings","off") eq "off"?"":" $6"));
|
||||||
} elsif ($1==2) {
|
} elsif ($1==2) {
|
||||||
readingsBulkUpdate($hash, $L.$chan ,$5 +AttrVal($name,"offset_feed",0).(AttrVal($name,"unitReadings","off") eq "off"?"":" $6"));
|
readingsBulkUpdate($hash, $L.$chan ,(looks_like_number($3) ? $5+0 : $5) +AttrVal($name,"offset_feed",0).(AttrVal($name,"unitReadings","off") eq "off"?"":" $6"));
|
||||||
}
|
}
|
||||||
readingsBulkUpdate($hash, "dir_$L",$hash->{helper}{directions}{$4} // $dir{$4}) if (length $4);
|
readingsBulkUpdate($hash, "dir_$L",$hash->{helper}{directions}{$4} // $dir{$4}) if (length $4);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user