From 375e804ef34d2e3d92abd150fd2a30d268882b3a Mon Sep 17 00:00:00 2001 From: icinger <> Date: Fri, 20 May 2016 18:55:57 +0000 Subject: [PATCH] 47_OBIS: Fixed some error-messages at startup git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@11485 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/47_OBIS.pm | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/FHEM/47_OBIS.pm b/FHEM/47_OBIS.pm index 830e8078b..8f9d47859 100644 --- a/FHEM/47_OBIS.pm +++ b/FHEM/47_OBIS.pm @@ -72,7 +72,7 @@ sub OBIS_Initialize($) $hash->{ReadyFn} = "OBIS_Ready"; $hash->{DefFn} = "OBIS_Define"; $hash->{ParseFn} = "OBIS_Parse"; -# $hash->{SetFn} = "OBIS_Set"; + #$hash->{SetFn} = "OBIS_Set"; $hash->{UndefFn} = "OBIS_Undef"; $hash->{AttrFn} = "OBIS_Attr"; @@ -116,7 +116,7 @@ sub OBIS_Define($$) my $baudrate; my $devi; ($devi, $baudrate) = split("@", $dev); - + $hash->{helper}{SPEED}="0"; if (defined($baudrate)) { ## added for ser2net connection if($baudrate =~ m/(\d+)(,([78])(,([NEO])(,([012]))?)?)?/) { $baudrate = $1 if(defined($1)); @@ -162,7 +162,9 @@ sub GetUpdate($) $hash->{helper}{EoM}=-1; if ($hash->{helper}{DEVICES}[1] eq "") {return undef;} - DevIo_SimpleWrite($hash,$hash->{helper}{DEVICES}[0],undef) ; + if( $init_done ) { + DevIo_SimpleWrite($hash,$hash->{helper}{DEVICES}[0],undef) ; + } 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); InternalTimer($t, "GetUpdate", $hash, 1) if ($hash->{helper}{DEVICES}[1]>0); @@ -185,11 +187,12 @@ sub OBIS_Undef($$) sub OBIS_Read($) { my ($hash) = @_; - if( !$init_done ) { return(undef)}; - my $name = $hash->{NAME}; + if( $init_done ) { + my $name = $hash->{NAME}; - my $buf = DevIo_SimpleRead($hash); - OBIS_Parse($hash,$buf) if ($hash->{helper}{EoM}!=1); + my $buf = DevIo_SimpleRead($hash); + OBIS_Parse($hash,$buf) if ($hash->{helper}{EoM}!=1); + } return(undef); } @@ -330,10 +333,13 @@ sub OBIS_Parse($$) my $rmsg=""; $rmsg = substr($buffer, 0, index($buffer,chr(13).chr(10))); Log3 $hash,5,"OBIS ($name) - Msg-Parse: $rmsg"; + my $channel=" "; if($rmsg=~/\/.*|^((?:\d{1,3}-\d{1,3}:)?\d{1,3}.\d{1,3}.\d{1,3})(?:\*\d{1,3})?(?:\(.*?\))?\(.*?\)|!/) { # old regex: \/.*|\d-\d{1,3}:\d{1,3}.\d{1,3}.\d{1,3}\*\d{1,3}\(.*?\)|! - my $channel=$1; - $channel=~s/:/\./; - $channel=~s/-/\./; + if (length $1) { + $channel=$1; + $channel=~s/:/\./; + $channel=~s/-/\./; + } if ($hash->{MeterType} eq "Unknown") {$hash->{MeterType}="Standard"} if($rmsg=~/^([23456789]+)-.*/) { Log3 $hash,3,"OBIS ($name) - Unknown OBIS-Device, please report: $rmsg".chr(13).chr(10)."Please report to User icinger at forum.fhem.de"; @@ -344,12 +350,12 @@ sub OBIS_Parse($$) $hash->{helper}{EoM}+=1 if ($hash->{helper}{DEVICES}[1]>0); } #Version - if ($rmsg=~ /.*\/(.*)/) { + elsif ($rmsg=~ /.*\/(.*)/) { DevIo_SimpleWrite($hash,$hash->{helper}{DEVICES}[2],undef) if (!$hash->{helper}{DEVICES}[2] eq ""); if (ReadingsVal($name,"Version","") ne $1) {readingsBulkUpdate($hash, "Version" ,$1); } $hash->{helper}{EoM}=0; } - if ($hash->{helper}{EoM}!=1) { + elsif ($hash->{helper}{EoM}!=1) { my @patterns=values %OBIS_codes; if (!$rmsg~~@patterns) { Log3 $hash,3,"OBIS ($name) - Unknown Message: $rmsg".chr(13).chr(10)."Please report to User icinger at forum.fhem.de" @@ -701,8 +707,6 @@ sub OBIS_decodeTL($){ Reduces CPU-load. unitReadings
Adds the units to the readings like w, wH, A etc. - ignoreUnknown
- Ignores unknown OBIS-Data
@@ -770,9 +774,8 @@ sub OBIS_decodeTL($){ kann das zu einer spürbaren Senkung der Prozessorleistung führen. unitReadings
Hängt bei den Readings auch die Einheiten an, zB w, wH, A usw. - ignoreUnknown
- Ignoriert unbekannte OBIS-Datensätze +
=end html_DE