From 1d140bcfcb432f0ec450553379d183f372c84b10 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Tue, 3 Dec 2013 20:42:58 +0000 Subject: [PATCH] FBDECT: Fixing readings git-svn-id: https://svn.fhem.de/fhem/trunk@4322 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_FBDECT.pm | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/10_FBDECT.pm b/fhem/FHEM/10_FBDECT.pm index c9ad9d7bb..2f9c818fe 100755 --- a/fhem/FHEM/10_FBDECT.pm +++ b/fhem/FHEM/10_FBDECT.pm @@ -20,6 +20,7 @@ my %fbdect_payload = ( 8 => { n=>"disconnected" }, 10 => { n=>"configChanged" }, 15 => { n=>"state", fmt=>'hex($pyld)?"on":"off"' }, + 16 => { n=>"relayTimes", fmt=>'FBDECT_decodeRelayTimes($pyld)' }, 18 => { n=>"current", fmt=>'sprintf("%0.4f A", hex($pyld)/10000)' }, 19 => { n=>"voltage", fmt=>'sprintf("%0.3f V", hex($pyld)/1000)' }, 20 => { n=>"power", fmt=>'sprintf("%0.2f W", hex($pyld)/100)' }, @@ -200,12 +201,22 @@ FBDECT_Parse($$@) return $hash->{NAME}; } +sub +FBDECT_decodeRelayTimes($) +{ + my ($p) = @_; + return "unknown" if(length($p) < 16); + return "disabled" if(substr($p, 12, 4) eq "0000"); + return $p; +} + sub FBDECT_decodeOptions($) { my ($p) = @_; my @opts; + return "uninitialized" if($p eq "0000ffff"); if(length($p) >= 8) { my $o = hex(substr($p,0,8)); push @opts, "powerOnState:".($o==0 ? "off" : ($o==1?"on" : "last")); @@ -229,8 +240,13 @@ FBDECT_decodeControl($) my @ctrl; for(my $off=8; $off+28<=length($p)/2; $off+=28) { - my ($n, $s); + if(substr($p,($off+ 8)*2,24) eq "000000050000000000000000") { + push @ctrl, "disabled"; + next; + } + + my ($n, $s); $s = "on"; $n = hex(substr($p,($off+ 4)*2,8)); @@ -241,7 +257,7 @@ FBDECT_decodeControl($) $s .= " ".($tbl{$n} ? $tbl{$n} : "rel=$n"); $n = hex(substr($p,($off+12)*2,8)); - $s .= " $n"; + $s .= sprintf(" %0.2f", $n/100); $n = hex(substr($p,($off+16)*2,8)); $s .= " delay:${n}sec"; @@ -359,8 +375,12 @@ FBDECT_Undef($$) <li>energy: $v Wh</li> <li>powerFactor: $v"</li> <li>temperature: $v C</li> + <li>options: uninitialized</li> <li>options: powerOnState:[on|off|last],lock:[none,webUi,remoteFb,button]</li> + <li>control: disabled</li> <li>control: on power < $v delay:$d sec do:state [on|off]</li> + <li>relaytimes: disabled</li> + <li>relaytimes: HEX</li> </ul> </ul> @@ -441,9 +461,12 @@ FBDECT_Undef($$) <li>energy: $v Wh</li> <li>powerFactor: $v"</li> <li>temperature: $v C</li> + <li>options: uninitialized</li> <li>options: powerOnState:[on|off|last],lock:[none,webUi,remoteFb,button]</li> + <li>control: disabled</li> <li>control: on power < $v delay:$d sec do:state [on|off]</li> - + <li>relaytimes: disabled</li> + <li>relaytimes: HEX</li> </ul> </ul> =end html_DE