From 6f88e2ebbf9098c5061c5a87a1c43ebc6aa3f0ff Mon Sep 17 00:00:00 2001 From: immiimmi Date: Sun, 2 Mar 2014 07:57:46 +0000 Subject: [PATCH] THZ: bugfix, undefFn improved git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@5093 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_THZ.pm | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/fhem/FHEM/00_THZ.pm b/fhem/FHEM/00_THZ.pm index c06164bef..daf4fb573 100644 --- a/fhem/FHEM/00_THZ.pm +++ b/fhem/FHEM/00_THZ.pm @@ -1,7 +1,7 @@ ############################################## # 00_THZ -# by immi 02/2014 -# v. 0.070 +# by immi 03/2014 +# v. 0.071 # this code is based on the hard work of Robert; I just tried to port it # http://robert.penz.name/heat-pump-lwz/ # http://heatpumpmonitor.penz.name/heatpumpmonitorwiki/ @@ -213,10 +213,7 @@ sub THZ_Define($$) } $hash->{DeviceName} = $dev; - my $ret = DevIo_OpenDev($hash, 0, undef); - - - THZ_Refresh_all_gets($hash); + my $ret = DevIo_OpenDev($hash, 0, "THZ_Refresh_all_gets"); return $ret; } @@ -234,7 +231,7 @@ sub THZ_Refresh_all_gets($) { foreach my $cmdhash (keys %gets) { my %par = ( command => $cmdhash, hash => $hash ); RemoveInternalTimer(\%par); - InternalTimer(gettimeofday() + $timedelay++ , "THZ_GetRefresh", \%par, 0); + InternalTimer(gettimeofday() + ($timedelay++)/2 , "THZ_GetRefresh", \%par, 0); } #refresh all registers; the register with interval_command ne 0 will keep on refreshing } @@ -316,7 +313,7 @@ sub THZ_Ready($) { my ($hash) = @_; - return DevIo_OpenDev($hash, 1, undef) + return DevIo_OpenDev($hash, 1, "THZ_Refresh_all_gets") if($hash->{STATE} eq "disconnected"); # This is relevant for windows/USB only @@ -726,8 +723,8 @@ sub THZ_Parse($) { "BoosterStage3: " . ((hex(substr($message,46,1)) & 0b0001) / 0b0001) . " " . #status bit "BoosterStage2: " . ((hex(substr($message,46,1)) & 0b0010) / 0b0010) . " " . #status bit "BoosterStage1: " . ((hex(substr($message,46,1)) & 0b0100) / 0b0100). " " . #status bit - "HighPressureSensor: " . (1-((hex(substr($message,49,1)) & 0b0001) / 0b0001)). " " . #status bit #P1 inverterd? - "LowPressureSensor: " . (1-((hex(substr($message,49,1)) & 0b0010) / 0b0010)). " " . #status bit #P3 inverterd? + "HighPressureSensor: " . (1-((hex(substr($message,49,1)) & 0b0001) / 0b0001)) . " " . #status bit #P1 inverterd? + "LowPressureSensor: " . (1-((hex(substr($message,49,1)) & 0b0010) / 0b0010)) . " " . #status bit #P3 inverterd? "EvaporatorIceMonitor: " . ((hex(substr($message,49,1)) & 0b0100) / 0b0100). " " . #status bit #N3 "SignalAnode: " . ((hex(substr($message,49,1)) & 0b1000) / 0b1000). " " . #status bit #S1 "EVU_release: " . ((hex(substr($message,48,1)) & 0b0001) / 0b0001). " " . #status bit @@ -880,10 +877,18 @@ sub THZ_debugread($){ } + + + + +##################################### + + + sub THZ_Undef($$) { my ($hash, $arg) = @_; my $name = $hash->{NAME}; - + RemoveInternalTimer($hash); foreach my $d (sort keys %defs) { if(defined($defs{$d}) && defined($defs{$d}{IODev}) && @@ -898,6 +903,19 @@ sub THZ_Undef($$) { return undef; } + + + + + + + + + + + + + 1; @@ -965,7 +983,7 @@ sub THZ_Undef($$) { Eltron Wärmepumpe.
Getestet mit einer Tecalor THZ303/Sol (Serielle Geschwindigkeit 57600/115200@USB) und einer THZ403 (Serielle Geschwindigkeit 115200) mit identischer Firmware 4.39.
- Getestet mit einer Stiebel LWZ404 (Serielle Geschwindigkeit 115200@USB) mit Firmware 4.39.
+ Getestet mit einer Stiebel LWZ404 (Serielle Geschwindigkeit 115200@USB) mit Firmware 5.39.
Getestet auf FritzBox, nas-qnap, Raspberry Pi and MacOS.
Dieses Modul funktioniert nicht mit äterer Firmware; Gleichwohl, das "parsing" könnte leicht angepasst werden da die Register gut beschrieben wurden.