HM devices: THSensor,KFM (first try)
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@771 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -1117,10 +1117,10 @@ CUL_Attr(@)
|
|||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
|
|
||||||
if($a[3] eq "HomeMatic") {
|
if($a[3] eq "HomeMatic") {
|
||||||
return if($hash->{initString} eq "Ar");
|
return if($hash->{initString} =~ m/Ar/);
|
||||||
$hash->{Clients} = $clientsHomeMatic;
|
$hash->{Clients} = $clientsHomeMatic;
|
||||||
$hash->{MatchList} = \%matchListHomeMatic;
|
$hash->{MatchList} = \%matchListHomeMatic;
|
||||||
$hash->{initString} = "Ar";
|
$hash->{initString} = "X21\nAr"; # X21 is needed for RSSI reporting
|
||||||
CUL_SimpleWrite($hash, $hash->{initString});
|
CUL_SimpleWrite($hash, $hash->{initString});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -1128,7 +1128,7 @@ CUL_Attr(@)
|
|||||||
$hash->{Clients} = $clientsSlowRF;
|
$hash->{Clients} = $clientsSlowRF;
|
||||||
$hash->{MatchList} = \%matchListSlowRF;
|
$hash->{MatchList} = \%matchListSlowRF;
|
||||||
$hash->{initString} = "X21";
|
$hash->{initString} = "X21";
|
||||||
CUL_SimpleWrite($hash, "Ax");
|
CUL_SimpleWrite($hash, "Ax"); # reset AskSin
|
||||||
CUL_SimpleWrite($hash, $hash->{initString});
|
CUL_SimpleWrite($hash, $hash->{initString});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ my %culHmDevProps=(
|
|||||||
"41" => { st => "sensor", cl => "sender" },
|
"41" => { st => "sensor", cl => "sender" },
|
||||||
"42" => { st => "swi", cl => "sender" },
|
"42" => { st => "swi", cl => "sender" },
|
||||||
"43" => { st => "pushButton", cl => "sender" },
|
"43" => { st => "pushButton", cl => "sender" },
|
||||||
"60" => { st => "KFM100", cl => "sender" },
|
"60" => { st => "KFM100", cl => "sender" }, # Parse,unfinished
|
||||||
"70" => { st => "THSensor", cl => "sender" },
|
"70" => { st => "THSensor", cl => "sender" }, # Parse,unfinished
|
||||||
"80" => { st => "threeStateSensor",cl => "sender" },
|
"80" => { st => "threeStateSensor",cl => "sender" },
|
||||||
"81" => { st => "motionDetector", cl => "sender" },
|
"81" => { st => "motionDetector", cl => "sender" },
|
||||||
"C0" => { st => "keyMatic", cl => "sender" },
|
"C0" => { st => "keyMatic", cl => "sender" },
|
||||||
@@ -195,7 +195,8 @@ CUL_HM_Parse($$)
|
|||||||
$isack = 1;
|
$isack = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $st = AttrVal($name, "subType", undef);
|
my $st = AttrVal($name, "subType", "");
|
||||||
|
my $model = AttrVal($name, "model", "");
|
||||||
my $cm = "$channel$msgtype";
|
my $cm = "$channel$msgtype";
|
||||||
my $lcm = "$len$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);
|
push @event, "unknownMsg:$p" if(!@event);
|
||||||
|
|||||||
Reference in New Issue
Block a user