1
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-07 22:29:19 +00:00

14_CUL_TCM97001.pm: Change ID generation for sensors

git-svn-id: https://svn.fhem.de/fhem/trunk@8379 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
dancer0705 2015-04-05 11:40:01 +00:00
parent a4a9609fe7
commit 24e380b208

View File

@ -166,22 +166,20 @@ CUL_TCM97001_Parse($$)
my @a = split("", $msg); my @a = split("", $msg);
my $id3 = hex($a[0] . $a[1]); my $id3 = hex($a[0] . $a[1]);
my $id4 = hex($a[0] . $a[1] . $a[2] . (hex($a[3]) & 0x3)); #my $id4 = hex($a[0] . $a[1] . $a[2] . (hex($a[3]) & 0x3));
my $def = $modules{CUL_TCM97001}{defptr}{$id3}; my $def = $modules{CUL_TCM97001}{defptr}{$id3};
my $def2 = $modules{CUL_TCM97001}{defptr}{$id4}; #my $def2 = $modules{CUL_TCM97001}{defptr}{$id4};
my $defUnknown = $modules{CUL_TCM97001}{defptr}{"Unknown"};
my $now = time(); my $now = time();
my $name = "Unknown"; my $name = "Unknown";
if($def) { if($def) {
$name = $def->{NAME}; $name = $def->{NAME};
} elsif($def2) { #} elsif($def2) {
$name = $def2->{NAME}; # $name = $def2->{NAME};
} elsif($defUnknown) { }
$name = $defUnknown->{NAME};
}
my $readedModel = AttrVal($name, "model", "Unknown"); my $readedModel = AttrVal($name, "model", "Unknown");
@ -190,7 +188,8 @@ CUL_TCM97001_Parse($$)
$rssi = hex(substr($msg, $l-2, 2)); $rssi = hex(substr($msg, $l-2, 2));
$rssi = ($rssi>=128 ? (($rssi-256)/2-74) : ($rssi/2-74)); $rssi = ($rssi>=128 ? (($rssi-256)/2-74) : ($rssi/2-74));
Log3 $name, 4, "CUL_TCM97001 $name $id3 or $id4 ($msg) length:" . length($msg) . " RSSI: $rssi"; #Log3 $name, 4, "CUL_TCM97001 $name $id3 or $id4 ($msg) length:" . length($msg) . " RSSI: $rssi";
Log3 $name, 4, "CUL_TCM97001 $name $id3 ($msg) length:" . length($msg) . " RSSI: $rssi";
my ($msgtype, $msgtypeH); my ($msgtype, $msgtypeH);
@ -287,20 +286,20 @@ CUL_TCM97001_Parse($$)
} elsif (length($msg) == 12) { } elsif (length($msg) == 12) {
my $bin = undef; my $bin = undef;
my $idType1 = hex($a[0] . $a[1]); my $idType1 = hex($a[0] . $a[1]);
my $idType2 = hex($a[0] . $a[1] . $a[2]); #my $idType2 = hex($a[0] . $a[1] . $a[2]);
my $idType3 = hex($a[0] . $a[1] . $a[2] . (hex($a[3]) & 0x3)); #my $idType3 = hex($a[0] . $a[1] . $a[2] . (hex($a[3]) & 0x3));
$def = $modules{CUL_TCM97001}{defptr}{$idType1}; $def = $modules{CUL_TCM97001}{defptr}{$idType1};
my $def2 = $modules{CUL_TCM97001}{defptr}{$idType2}; #my $def2 = $modules{CUL_TCM97001}{defptr}{$idType2};
my $def3 = $modules{CUL_TCM97001}{defptr}{$idType3}; #my $def3 = $modules{CUL_TCM97001}{defptr}{$idType3};
if($def) { if($def) {
$name = $def->{NAME}; $name = $def->{NAME};
} elsif($def2) { #} elsif($def2) {
$def = $def2; # $def = $def2;
$name = $def->{NAME}; # $name = $def->{NAME};
} elsif($def3) { #} elsif($def3) {
$def = $def3; # $def = $def3;
$name = $def->{NAME}; # $name = $def->{NAME};
} }
$readedModel = AttrVal($name, "model", "Unknown"); $readedModel = AttrVal($name, "model", "Unknown");
Log3 $name, 4, "CUL_TCM97001 Define Name: $name Model defined: $readedModel"; Log3 $name, 4, "CUL_TCM97001 Define Name: $name Model defined: $readedModel";
@ -318,7 +317,6 @@ CUL_TCM97001_Parse($$)
if($def) { if($def) {
$name = $def->{NAME}; $name = $def->{NAME};
} }
my @a = split("", $msg); my @a = split("", $msg);
my $bitReverse = undef; my $bitReverse = undef;
my $x = undef; my $x = undef;
@ -357,8 +355,7 @@ CUL_TCM97001_Parse($$)
$model="TCM21...."; $model="TCM21....";
$readedModel=$model; $readedModel=$model;
} else { } else {
$def = undef; $name = "Unknown";
$name = "Unknown";
} }
} }
@ -371,7 +368,8 @@ CUL_TCM97001_Parse($$)
# D+E+F Temperatur, wenn es negativ wird muss man negieren und dann 1 addieren, wie im ersten Post beschrieben. # D+E+F Temperatur, wenn es negativ wird muss man negieren und dann 1 addieren, wie im ersten Post beschrieben.
# G+H Hum - bit 0-7 # G+H Hum - bit 0-7
# I CRC? # I CRC?
$def = $modules{CUL_TCM97001}{defptr}{$idType3}; #$def = $modules{CUL_TCM97001}{defptr}{$idType3};
$def = $modules{CUL_TCM97001}{defptr}{$idType1};
if($def) { if($def) {
$name = $def->{NAME}; $name = $def->{NAME};
} }
@ -386,8 +384,10 @@ CUL_TCM97001_Parse($$)
if (checkValues($temp, $humidity)) { if (checkValues($temp, $humidity)) {
if(!$def) { if(!$def) {
Log3 $name, 2, "CUL_TCM97001 Unknown device $idType3, please define it"; #Log3 $name, 2, "CUL_TCM97001 Unknown device $idType3, please define it";
return "UNDEFINED CUL_TCM97001_$idType3 CUL_TCM97001 $idType3" if(!$def); #return "UNDEFINED CUL_TCM97001_$idType3 CUL_TCM97001 $idType3" if(!$def);
$name, 2, "CUL_TCM97001 Unknown device $idType1, please define it";
return "UNDEFINED CUL_TCM97001_$idType1 CUL_TCM97001 $idType1" if(!$def);
} }
$hashumidity = TRUE; $hashumidity = TRUE;
$hasbatcheck = TRUE; $hasbatcheck = TRUE;
@ -395,8 +395,7 @@ CUL_TCM97001_Parse($$)
$model="GT-WT-02"; $model="GT-WT-02";
$readedModel=$model; $readedModel=$model;
} else { } else {
$def = undef; $name = "Unknown";
$name = "Unknown";
} }
} }
#Log3 $name, 4, "CUL_TCM97001: CRC for TCM21.... Failed, checking other protocolls"; #Log3 $name, 4, "CUL_TCM97001: CRC for TCM21.... Failed, checking other protocolls";
@ -411,7 +410,8 @@ CUL_TCM97001_Parse($$)
# D Bit 4 Battery, 3 Manual, 2+1 Channel # D Bit 4 Battery, 3 Manual, 2+1 Channel
# E+F+G Bit 15+16 negativ temp, 14-0 temp # E+F+G Bit 15+16 negativ temp, 14-0 temp
# H+I Hum # H+I Hum
$def = $modules{CUL_TCM97001}{defptr}{$idType3}; #$def = $modules{CUL_TCM97001}{defptr}{$idType3};
$def = $modules{CUL_TCM97001}{defptr}{$idType1};
if($def) { if($def) {
$name = $def->{NAME}; $name = $def->{NAME};
} }
@ -434,8 +434,10 @@ CUL_TCM97001_Parse($$)
$mode = (hex($a[3]) & 0x4) >> 2; $mode = (hex($a[3]) & 0x4) >> 2;
if (checkValues($temp, $humidity)) { if (checkValues($temp, $humidity)) {
if(!$def) { if(!$def) {
Log3 $name, 2, "CUL_TCM97001 Unknown device $idType3, please define it"; Log3 $name, 2, "CUL_TCM97001 Unknown device $idType1, please define it";
return "UNDEFINED CUL_TCM97001_$idType3 CUL_TCM97001 $idType3" if(!$def); return "UNDEFINED CUL_TCM97001_$idType1 CUL_TCM97001 $idType1" if(!$def);
# Log3 $name, 2, "CUL_TCM97001 Unknown device $idType3, please define it";
# return "UNDEFINED CUL_TCM97001_$idType3 CUL_TCM97001 $idType3" if(!$def);
} }
$hashumidity = TRUE; $hashumidity = TRUE;
$hasbatcheck = TRUE; $hasbatcheck = TRUE;
@ -443,8 +445,7 @@ CUL_TCM97001_Parse($$)
$model="Prologue"; $model="Prologue";
$readedModel=$model; $readedModel=$model;
} else { } else {
$def = undef; $name = "Unknown";
$name = "Unknown";
} }
} }
@ -462,7 +463,8 @@ CUL_TCM97001_Parse($$)
# / / / / / / / / / Humidity # / / / / / / / / / Humidity
# 0101 0010 1001 0 0 00 0 010 0011 0000 1 101 1101 # 0101 0010 1001 0 0 00 0 010 0011 0000 1 101 1101
# Bit 0 4 12 13 14 16 17 28 29 36 # Bit 0 4 12 13 14 16 17 28 29 36
$def = $modules{CUL_TCM97001}{defptr}{$idType3}; #$def = $modules{CUL_TCM97001}{defptr}{$idType3};
$def = $modules{CUL_TCM97001}{defptr}{$idType1};
if($def) { if($def) {
$name = $def->{NAME}; $name = $def->{NAME};
} }
@ -483,8 +485,10 @@ CUL_TCM97001_Parse($$)
$mode = (hex($a[3]) & 0x4) >> 2; $mode = (hex($a[3]) & 0x4) >> 2;
if (checkValues($temp, $humidity)) { if (checkValues($temp, $humidity)) {
if(!$def) { if(!$def) {
Log3 $name, 2, "CUL_TCM97001 Unknown device $idType3, please define it"; #Log3 $name, 2, "CUL_TCM97001 Unknown device $idType3, please define it";
return "UNDEFINED CUL_TCM97001_$idType3 CUL_TCM97001 $idType3" if(!$def); #return "UNDEFINED CUL_TCM97001_$idType3 CUL_TCM97001 $idType3" if(!$def);
Log3 $name, 2, "CUL_TCM97001 Unknown device $idType1, please define it";
return "UNDEFINED CUL_TCM97001_$idType1 CUL_TCM97001 $idType1" if(!$def);
} }
$hashumidity = TRUE; $hashumidity = TRUE;
$hasbatcheck = TRUE; $hasbatcheck = TRUE;
@ -492,8 +496,7 @@ CUL_TCM97001_Parse($$)
$model="NC_WS"; $model="NC_WS";
$readedModel=$model; $readedModel=$model;
} else { } else {
$def = undef; $name = "Unknown";
$name = "Unknown";
} }
} }
@ -527,8 +530,7 @@ CUL_TCM97001_Parse($$)
$model="Rubicson"; $model="Rubicson";
$readedModel=$model; $readedModel=$model;
} else { } else {
$def = undef; $name = "Unknown";
$name = "Unknown";
} }
} }
@ -572,8 +574,7 @@ CUL_TCM97001_Parse($$)
$model="AURIOL"; $model="AURIOL";
$readedModel=$model; $readedModel=$model;
} else { } else {
$def = undef; $name = "Unknown";
$name = "Unknown";
} }
} }
@ -589,7 +590,7 @@ CUL_TCM97001_Parse($$)
if ($hashumidity == TRUE) { if ($hashumidity == TRUE) {
$msgtypeH = "humidity"; $msgtypeH = "humidity";
$valH = $humidity; $valH = $humidity;
Log3 $name, 4, "CUL_TCM97001 $msgtype $name $id4 T: $val H: $valH"; Log3 $name, 4, "CUL_TCM97001 $msgtype $name $id3 T: $val H: $valH";
} else { } else {
Log3 $name, 4, "CUL_TCM97001 $msgtype $name $id3 T: $val"; Log3 $name, 4, "CUL_TCM97001 $msgtype $name $id3 T: $val";
} }
@ -632,12 +633,14 @@ CUL_TCM97001_Parse($$)
$attr{$name}{model} = $model; $attr{$name}{model} = $model;
return $name; return $name;
} else { } else {
$name = $defUnknown->{NAME}; my $defUnknown = $modules{CUL_TCM97001}{defptr}{"Unknown"};
Log3 $name, 4, "CUL_TCM97001 Device not interplmeted yet name Unknown msg $msg";
if (!$defUnknown) { if (!$defUnknown) {
Log3 "Unknown", 2, "CUL_TCM97001 Unknown device Unknown, please define it"; Log3 "Unknown", 2, "CUL_TCM97001 Unknown device Unknown, please define it";
return "UNDEFINED CUL_TCM97001_Unknown CUL_TCM97001 Unknown" if(!$defUnknown); return "UNDEFINED CUL_TCM97001_Unknown CUL_TCM97001 Unknown" if(!$defUnknown);
} }
$name = $defUnknown->{NAME};
Log3 $name, 4, "CUL_TCM97001 Device not interplmeted yet name Unknown msg $msg";
my $state="Code: $msg"; my $state="Code: $msg";