diff --git a/fhem/FHEM/60_EM.pm b/fhem/FHEM/60_EM.pm index fdaa3c87c..c41ece08d 100755 --- a/fhem/FHEM/60_EM.pm +++ b/fhem/FHEM/60_EM.pm @@ -53,7 +53,7 @@ EM_Define($$) Log 3, "EM opening device $dev"; my $po = new Device::SerialPort ($dev); - return "Can't open $dev: $!\n" if(!$po); + return "Can't open $dev: $!" if(!$po); Log 3, "EM opened device $dev"; $po->close(); @@ -229,7 +229,10 @@ EmGetData($$) $d = EmMakeMsg(pack('H*', $d)); my $serport = new Device::SerialPort ($dev); - die "Can't open $dev: $!\n" if(!$serport); + if(!$serport) { + Log 1, "EM: Can't open $dev: $!"; + return undef; + } $serport->reset_error(); $serport->baudrate(38400); $serport->databits(8); @@ -282,6 +285,7 @@ EmGetData($$) if(b($retval,1) != 0) { $rm = "EM Bad second byte"; goto DONE; } if(w($retval,2) != $l-7) { $rm = "EM Length mismatch"; goto DONE; } if(!EmCrcCheck($retval,$l-7)) { $rm = "EM Bad CRC"; goto DONE; } + $serport->close(); return substr($retval, 4, $l-7); } } diff --git a/fhem/FHEM/61_EMWZ.pm b/fhem/FHEM/61_EMWZ.pm index b069d5929..a20781d4a 100755 --- a/fhem/FHEM/61_EMWZ.pm +++ b/fhem/FHEM/61_EMWZ.pm @@ -61,7 +61,7 @@ EMWZ_GetStatus($) my $cur_energy = $pulses / $ec; # ec = U/kWh my $cur_power = $cur_energy / 5 * 60; # 5minute interval scaled to 1h - if($cur_power > 100) { + if($cur_power > 30) { # 20Amp x 3 Phase my $msg = "EMWZ Bogus reading: curr. power is reported to be $cur_power"; Log GetLogLevel($name,2), $msg; return $msg; diff --git a/fhem/FHEM/62_EMEM.pm b/fhem/FHEM/62_EMEM.pm index 82714a548..5e2cf2bb6 100755 --- a/fhem/FHEM/62_EMEM.pm +++ b/fhem/FHEM/62_EMEM.pm @@ -52,7 +52,7 @@ EMEM_GetStatus($) my $iec = 1000; my $cur_power = $pulses / 100; - if($cur_power > 100) { + if($cur_power > 30) { # 20Amp x 3 Phase my $msg = "EMEM Bogus reading: curr. power is reported to be $cur_power"; Log GetLogLevel($name,2), $msg; return $msg;