From be0e3f57dfd3a1fce1a6e8a1faec5e3c455bef4d Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sat, 18 Dec 2010 07:49:55 +0000 Subject: [PATCH] HM devices: THSensor,KFM (first try) git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@771 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/00_CUL.pm | 6 +++--- FHEM/10_CUL_HM.pm | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/FHEM/00_CUL.pm b/FHEM/00_CUL.pm index c330f7813..4aa0818aa 100755 --- a/FHEM/00_CUL.pm +++ b/FHEM/00_CUL.pm @@ -1117,10 +1117,10 @@ CUL_Attr(@) my $hash = $defs{$name}; if($a[3] eq "HomeMatic") { - return if($hash->{initString} eq "Ar"); + return if($hash->{initString} =~ m/Ar/); $hash->{Clients} = $clientsHomeMatic; $hash->{MatchList} = \%matchListHomeMatic; - $hash->{initString} = "Ar"; + $hash->{initString} = "X21\nAr"; # X21 is needed for RSSI reporting CUL_SimpleWrite($hash, $hash->{initString}); } else { @@ -1128,7 +1128,7 @@ CUL_Attr(@) $hash->{Clients} = $clientsSlowRF; $hash->{MatchList} = \%matchListSlowRF; $hash->{initString} = "X21"; - CUL_SimpleWrite($hash, "Ax"); + CUL_SimpleWrite($hash, "Ax"); # reset AskSin CUL_SimpleWrite($hash, $hash->{initString}); } diff --git a/FHEM/10_CUL_HM.pm b/FHEM/10_CUL_HM.pm index c7e1d62c8..45af71a28 100755 --- a/FHEM/10_CUL_HM.pm +++ b/FHEM/10_CUL_HM.pm @@ -15,15 +15,15 @@ sub CUL_HM_SendCmd($$$$); sub CUL_HM_Set($@); my %culHmDevProps=( - "10" => { st => "switch", cl => "receiver" }, # Parse, Set - "20" => { st => "dimmer", cl => "receiver" }, # Parse, Set - "30" => { st => "blindActuator", cl => "receiver" }, # Parse, Set + "10" => { st => "switch", cl => "receiver" }, # Parse,Set + "20" => { st => "dimmer", cl => "receiver" }, # Parse,Set + "30" => { st => "blindActuator", cl => "receiver" }, # Parse,Set "40" => { st => "remote", cl => "sender" }, # Parse "41" => { st => "sensor", cl => "sender" }, "42" => { st => "swi", cl => "sender" }, "43" => { st => "pushButton", cl => "sender" }, - "60" => { st => "KFM100", cl => "sender" }, - "70" => { st => "THSensor", cl => "sender" }, + "60" => { st => "KFM100", cl => "sender" }, # Parse,unfinished + "70" => { st => "THSensor", cl => "sender" }, # Parse,unfinished "80" => { st => "threeStateSensor",cl => "sender" }, "81" => { st => "motionDetector", cl => "sender" }, "C0" => { st => "keyMatic", cl => "sender" }, @@ -195,7 +195,8 @@ CUL_HM_Parse($$) $isack = 1; } - my $st = AttrVal($name, "subType", undef); + my $st = AttrVal($name, "subType", ""); + my $model = AttrVal($name, "model", ""); my $cm = "$channel$msgtype"; my $lcm = "$len$channel$msgtype"; @@ -273,6 +274,33 @@ CUL_HM_Parse($$) } + } elsif($st eq "THSensor") { ########################################## + + if($p =~ m/(....)(..)/) { + + my ($t, $h) = ($1, $2); + $t = hex($t)/10; + $t -= 3276.8 if($t > 1638.4); + $h = sprintf("%.1f", hex($h)/2.55); + + + push @event, "state:T:$t H:$h"; + push @event, "temperature:$t"; + push @event, "humidity:$h"; + + } + + } elsif($st eq "KFM" && $model eq "KFM-Sensor") { + + if($p =~ m/814(.)0200(..)(..)(..)/) { + my ($k_cnt, $k_v1, $k_v2, $k_v3) = ($1,$2,$3,$4); + my $v = 128-hex($k_v2); # FIXME: calibrate + $v = 256+$v if($v < 0); + + push @event, "rawValue:$v"; + + } + } push @event, "unknownMsg:$p" if(!@event);