From 62d07b30105a1ae266241a78060d048c761ca398 Mon Sep 17 00:00:00 2001 From: HomeAuto_User <> Date: Sun, 2 Feb 2020 21:53:29 +0000 Subject: [PATCH] 14_SD_UT.pm: added new model Novy_840039 git-svn-id: https://svn.fhem.de/fhem/trunk@21099 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/14_SD_UT.pm | 146 +++++++++++++++++++++++++++++++----------- 2 files changed, 109 insertions(+), 38 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index b0aadc1d8..e83e765f4 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature 14_SD_UT: new model remote control Novy_840039 - bugfix: 88_Timer: fix2 list "Probably associated with" Forum: #1015549 - new: 70_DENON_AVR: initial commit. - bugfix: 93_DbLog: fix warning, Forum: #107950 diff --git a/fhem/FHEM/14_SD_UT.pm b/fhem/FHEM/14_SD_UT.pm index 85edacc4f..73aa5e3ee 100644 --- a/fhem/FHEM/14_SD_UT.pm +++ b/fhem/FHEM/14_SD_UT.pm @@ -57,24 +57,46 @@ # get sduino_dummy raw MU;;P0=-12064;;P1=717;;P2=-669;;P3=1351;;P4=-1319;;D=012323414141234123232323232323232323232323;; #} get sduino_dummy raw MU;;P0=697;;P1=-1352;;P2=-679;;P3=1343;;D=01010101010231023232323232323232323232323;CP=0;R=27;; ############################################################################################################################################################################### -# - Remote Control Novy_840029 for Novy Pureline 6830 kitchen hood [Protocol 86] (Länge je nach Taste 12 oder 18 Bit) -#{ 0100 "novy_button" - nicht geprüft -# 0101 "+_button" - i.O. -# 0110 "-_button" - i.O. +# - Remote Control Novy_840029 for Novy Pureline 6830 kitchen hood [Protocol 86] (Länge je nach Taste 12 oder 18 Bit) [additionally Protocol 81] +#{ 0100 "novy" - nicht geprüft +# 0101 "speed_plus" - i.O. +# 0110 "speed_minus" - i.O. # 0111010001 "light_on_off" - nur 10 Bit, SIGNALduino.pm hängt 2 Nullen an -# 0111010011 "power_button" - nur 10 Bit, SIGNALduino.pm hängt 2 Nullen an +# 0111010011 "power_on_off" - nur 10 Bit, SIGNALduino.pm hängt 2 Nullen an # https://github.com/RFD-FHEM/RFFHEM/issues/331 # nibble 0-1 -> Ident | nibble 2-4 -> Tastencode -# light on/off button - get sduino_dummy raw MU;;P0=710;;P1=353;;P2=-403;;P4=-761;;P6=-16071;;D=20204161204120412041204120414141204120202041612041204120412041204141412041202020416120412041204120412041414120412020204161204120412041204120414141204120202041;;CP=1;;R=40;; -# + button - get sduino_dummy raw MU;;P0=22808;;P1=-24232;;P2=701;;P3=-765;;P4=357;;P5=-15970;;P7=-406;;D=012345472347234723472347234723454723472347234723472347234547234723472347234723472345472347234723472347234723454723472347234723472347234;;CP=4;;R=39;; -# - button - get sduino_dummy raw MU;;P0=-8032;;P1=364;;P2=-398;;P3=700;;P4=-760;;P5=-15980;;D=0123412341234123412341412351234123412341234123414123512341234123412341234141235123412341234123412341412351234123412341234123414123;;CP=1;;R=40;; -# power button - get sduino_dummy raw MU;;P0=-756;;P1=718;;P2=354;;P3=-395;;P4=-16056;;D=01020202310231310202423102310231023102310202023102313102024231023102310231023102020231023131020242310231023102310231020202310231310202;;CP=2;;R=41;; -#} novy button - get sduino_dummy raw MU;;P0=706;;P1=-763;;P2=370;;P3=-405;;P4=-15980;;D=0123012301230304230123012301230123012303042;;CP=2;;R=42;; +# light_on_off - hex_lengh 5 get sduino_dummy raw MU;;P0=710;;P1=353;;P2=-403;;P4=-761;;P6=-16071;;D=20204161204120412041204120414141204120202041612041204120412041204141412041202020416120412041204120412041414120412020204161204120412041204120414141204120202041;;CP=1;;R=40;; +# novy - hex_lengh 3 get sduino_dummy raw MU;;P0=706;;P1=-763;;P2=370;;P3=-405;;P4=-15980;;D=0123012301230304230123012301230123012303042;;CP=2;;R=42;; +# power_on_off - hex_lengh 5 get sduino_dummy raw MU;;P0=-756;;P1=718;;P2=354;;P3=-395;;P4=-16056;;D=01020202310231310202423102310231023102310202023102313102024231023102310231023102020231023131020242310231023102310231020202310231310202;;CP=2;;R=41;; +# speed_minus - hex_lengh 3 get sduino_dummy raw MU;;P0=-8032;;P1=364;;P2=-398;;P3=700;;P4=-760;;P5=-15980;;D=0123412341234123412341412351234123412341234123414123512341234123412341234141235123412341234123412341412351234123412341234123414123;;CP=1;;R=40;; +#} speed_plus - hex_lengh 3 get sduino_dummy raw MU;;P0=22808;;P1=-24232;;P2=701;;P3=-765;;P4=357;;P5=-15970;;P7=-406;;D=012345472347234723472347234723454723472347234723472347234547234723472347234723472345472347234723472347234723454723472347234723472347234;;CP=4;;R=39;; +### +# - Remote Control Novy_840039 for Novy Cloud 230 kitchen hood [Protocol 86] (Länge je nach Taste 12 oder 18 Bit) [additionally Protocol 81] +# https://github.com/RFD-FHEM/RFFHEM/issues/792 | https://forum.fhem.de/index.php/topic,107867.0.html +#{ nibble 0-1 -> Ident | nibble 2-4 -> Tastencode +# 0111010011 "power_on_off" - nur 10 Bit, SIGNALduino.pm hängt 2 Nullen an hex_lengh 5 get sduino_dummy raw MU;;P0=-749;;P1=378;;P2=-456;;P3=684;;P4=-16081;;D=01230101012301232301014123012301230123012301010123012323010141230123012301230123010101230123230101412;;CP=1;;R=66;; +# 0110110110 "cooking_light_on" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P0=-4768;;P1=380;;P2=-397;;P3=690;;P4=-755;;P5=-16077;;CP=1;;R=39;;D=0123412341234123412341412341412341412351234123412341234123414123414123414123;;O;;w=0;; +# 0110110100 "cooking_light_off" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P0=382;;P1=200;;P2=-745;;P4=-394;;P5=696;;P6=-16083;;CP=0;;R=81;;D=1204520204520204520454560452045204520452045202045202045204545;;O;;w=0;; +# 0110110101 "cooking_light_dim_plus" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P0=-753;;P1=387;;P2=-419;;P3=679;;P6=-16050;;CP=1;;R=58;;D=0123012301012301012301230161230123012301230123010123010123012301;;p;;w=0;; +# 0110110011 "cooking_light_dim_minus" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P1=386;;P2=-394;;P3=694;;P4=-794;;P5=-16064;;CP=1;;R=51;;D=123412341234123412341412341412323414151234123412341234123414123414123234141;;p;;w=0;; +# 0111001110 "cooking_light_cold" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P0=-92;;P1=371;;P2=-738;;P4=-393;;P5=702;;P6=-16072;;CP=1;;R=69;;D=012145214521212145452121214561452145214521452145212121454521212145;;e;;w=0;; +# 0111001011 "cooking_light_warm" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P0=-17440;;P1=381;;P2=-415;;P3=668;;P4=-756;;P6=-6786;;CP=1;;R=85;;D=0123412341234123412341414123234123414101634123414141232341234141;;e;;w=0;; +# 0110111110 "ambient_light_on" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P0=-9524;;P1=364;;P2=-414;;P3=669;;P4=-755;;P5=-16076;;CP=1;;R=83;;D=0123412341234123412341412341414141412351234123412341234123414123414141414123;;e;;w=0;; +# 0110111100 "ambient_light_off" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P1=371;;P2=-406;;P3=685;;P4=-744;;P6=-16050;;CP=1;;R=88;;D=123412341234123412341412341414141232361234123412341234123414123414141412323;;e;;w=0;; +# 0110111101 "ambient_light_dim_plus" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P0=-10584;;P1=362;;P2=-417;;P3=678;;P4=-765;;P5=-16075;;CP=1;;R=67;;D=0123412341234123412341412341414141234151234123412341234123414123414141412341;;O;;w=0;; +# 0110111011 "ambient_light_dim_minus" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P2=-14541;;P3=-396;;P4=707;;P5=-733;;P6=367;;CP=6;;R=86;;D=62634563456345634563456563456565634565626345634563456345634565634565656345656;;p;;w=0;; +# 0111010110 "ambient_light_cold" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P1=363;;P2=-416;;P3=683;;P4=-755;;P5=-16073;;CP=1;;R=74;;D=123412341234123412341414123412341412351234123412341234123414141234123414123;;p;;w=0;; +# 0111001101 "ambient_light_warm" - i.O. hex_lengh 5 get sduino_dummy raw MU;;P0=381;;P2=-751;;P4=-419;;P5=678;;P6=-16060;;CP=0;;R=78;;D=6045204520452045204520202045452020452060452045204520452045202020454520204520;;p;;w=1;; +# 0110 "fan_minus" - i.O. hex_lengh 3 get sduino_dummy raw MU;;P0=388;;P1=-756;;P2=264;;P3=-399;;P4=683;;P5=-16082;;CP=0;;R=67;;D=0123410341034103410341050341034103410341034103410;;e;;w=0;; +# 0101 "fan_plus" - i.O. hex_lengh 3 get sduino_dummy raw MU;;P1=-16074;;P2=366;;P3=-757;;P6=-422;;P7=680;;CP=2;;R=81;;D=671267326732673267326732326712673267326732673267323267;;e;;w=0;; +# 0110011101 "fan_left" - not assigned for Novy Cloud 230 hex_lengh 5 get sduino_dummy raw MU;;P0=378;;P2=-788;;P3=-434;;P4=649;;P5=-16070;;CP=0;;R=79;;D=02034203420203434202020342050342034203420342034202034342020203420;;p;;w=0;; +# 0110011010 "fan_right" - not assigned for Novy Cloud 230 hex_lengh 5 get sduino_dummy raw MU;;P0=-16705;;P1=361;;P2=-2704;;P3=663;;P4=-778;;P5=-423;;CP=1;;R=68;;D=012341534153415341415353414153415301534153415341534153414153534141534153;;O;;w=0;; +#} ############################################################################################################################################################################### # - CAME Drehtor Antrieb - remote CAME_TOP_432EV [Protocol 86] and [additionally Protocol 81] #{ https://github.com/RFD-FHEM/RFFHEM/issues/151 # nibble 0-1 -> Ident | nibble 2 -> Tastencode -#} get sduino_dummy raw MU;;P0=-322;;P1=136;;P2=-15241;;P3=288;;P4=-735;;P6=723;;D=0123434343064343430643434306234343430643434306434343062343434306434343064343430623434343064343430643434306234343430643434306434343062343434306434343064343430623434343064343430643434306234343430643434306434343062343434306434343064343430;;CP=3;;R=27;; +#} left_button - get sduino_dummy raw MU;;P0=-322;;P1=136;;P2=-15241;;P3=288;;P4=-735;;P6=723;;D=0123434343064343430643434306234343430643434306434343062343434306434343064343430623434343064343430643434306234343430643434306434343062343434306434343064343430623434343064343430643434306234343430643434306434343062343434306434343064343430;;CP=3;;R=27;; ############################################################################################################################################################################### # - Hoermann HS1-868-BS [Protocol 69] #{ https://github.com/RFD-FHEM/RFFHEM/issues/344 | https://github.com/RFD-FHEM/RFFHEM/issues/149 @@ -389,7 +411,28 @@ my %models = ( "0110" => "speed_minus", "0111010001" => "light_on_off", # 0111010000 "0111010011" => "power_on_off", # 0111010010 - hex_lengh => "3,5", + hex_lengh => "3,5", # 3 or 5, not 3.5 + Protocol => "P86", + Typ => "remote" + }, + "Novy_840039" => { "0111010011" => "power_on_off", # Novy_840029 same code! + "0110110110" => "cooking_light_on", + "0110110100" => "cooking_light_off", + "0110110101" => "cooking_light_dim_plus", + "0110110011" => "cooking_light_dim_minus", + "0111001110" => "cooking_light_cold", + "0111001011" => "cooking_light_warm", + "0110111110" => "ambient_light_on", + "0110111100" => "ambient_light_off", + "0110111101" => "ambient_light_dim_plus", + "0110111011" => "ambient_light_dim_minus", + "0111010110" => "ambient_light_cold", + "0111001101" => "ambient_light_warm", + "0110" => "fan_minus", # Novy_840029 same code! + "0101" => "fan_plus", # Novy_840029 same code! + "0110011101" => "fan_left", + "0110011010" => "fan_right", + hex_lengh => "3,5", # 3 or 5, not 3.5 Protocol => "P86", Typ => "remote" }, @@ -609,7 +652,9 @@ sub SD_UT_Initialize($) { $hash->{ParseFn} = "SD_UT_Parse"; $hash->{SetFn} = "SD_UT_Set"; $hash->{AttrFn} = "SD_UT_Attr"; - $hash->{AttrList} = "repeats:1,2,3,4,5,6,7,8,9 IODev do_not_notify:1,0 ignore:0,1 showtime:1,0 model:".join(",", sort keys %models)." $readingFnAttributes "; + $hash->{AttrList} = "repeats:1,2,3,4,5,6,7,8,9 IODev do_not_notify:1,0 ". + "ignore:0,1 showtime:1,0 model:".join(",", sort keys %models). + " $readingFnAttributes UTclock"; $hash->{AutoCreate} = { "MD_2003R.*" => {ATTR => "model:MD_2003R", FILTER => "%NAME", autocreateThreshold => "3:180", GPLOT => ""}, @@ -654,8 +699,8 @@ sub SD_UT_Define($$) { } } - ### [2] checks CAME_TOP_432EV & Novy_840029 & Unitec_47031 ### - if (($a[2] eq "CAME_TOP_432EV" || $a[2] eq "Novy_840029" || $a[2] eq "Unitec_47031") && not $a[3] =~ /^[0-9a-fA-F]{2}/s) { + ### [2] checks CAME_TOP_432EV & Novy_840029 & Novy_840039 & Unitec_47031 ### + if (($a[2] eq "CAME_TOP_432EV" || $a[2] eq "Novy_840029" || $a[2] eq "Novy_840039" || $a[2] eq "Unitec_47031") && not $a[3] =~ /^[0-9a-fA-F]{2}/s) { return "wrong HEX-Value! ($a[3]) $a[2] HEX-Value to short | long or not HEX (0-9 | a-f | A-F){2}"; } ### [3] checks SA_434_1_mini & QUIGG_DMV & TR_502MSV ### @@ -720,6 +765,7 @@ sub SD_UT_Set($$$@) { my $value = ""; # value from models cmd my $save = ""; # bits from models cmd my $repeats = AttrVal($name,'repeats', '5'); + my $UTclock = AttrVal($name,'UTclock', undef); Log3 $name, 4, "$ioname: SD_UT_Set attr_model=$model name=$name (before check)" if($cmd ne "?"); return $ret if ($defs{$name}->{DEF} eq "unknown"); # no setlist @@ -760,6 +806,12 @@ sub SD_UT_Set($$$@) { my $adr = sprintf( "%08b", hex($definition[1])); # argument 1 - adress to binary with 8 digits $msg = $models{$model}{Protocol} . "#" . $adr; $msgEnd = "#R" . $repeats; + ############ Novy_840039 ############ + } elsif ($model eq "Novy_840039" && $cmd ne "?") { + my $adr = sprintf( "%08b", hex($definition[1])); # argument 1 - adress to binary with 8 digits + $msg = $models{$model}{Protocol} . "#" . $adr; + $msgEnd = "#R" . $repeats; + $UTclock = 375 if (not defined($UTclock)); ############ CAME_TOP_432EV ############ } elsif ($model eq "CAME_TOP_432EV") { my $adr = sprintf( "%08b", hex($definition[1])); # argument 1 - adress to binary with 8 digits @@ -843,7 +895,7 @@ sub SD_UT_Set($$$@) { $msgEnd = "0P#R" . $repeats; # one pulse for end marker, pause, repeats } } - + Log3 $name, 4, "$ioname: SD_UT_Set attr_model=$model msg=$msg msgEnd=$msgEnd" if(defined $msgEnd); if ($cmd eq "?") { @@ -905,6 +957,8 @@ sub SD_UT_Set($$$@) { Log3 $name, 5, "$ioname: SD_UT_Set attr_model=$model msg=$msg cmd=$cmd value=$value (cmd loop)"; } + $msg .= '#C' . $UTclock if (defined($UTclock)); # optional Clockpulse + readingsSingleUpdate($hash, "LastAction", "send", 0) if ($models{$model}{Typ} eq "remote"); readingsSingleUpdate($hash, "state" , $cmd, 1); @@ -1013,6 +1067,12 @@ sub SD_UT_Parse($$) { $devicedef = "Novy_840029 " . $deviceCode; $def = $modules{SD_UT}{defptr}{$devicedef}; } + ### Novy_840039 [P86] ### + if (!$def && ($protocol == 86 || $protocol == 81)) { + $deviceCode = substr($rawData,0,2); + $devicedef = "Novy_840039 " . $deviceCode; + $def = $modules{SD_UT}{defptr}{$devicedef}; + } } if ($hlen == 5) { @@ -1133,9 +1193,8 @@ sub SD_UT_Parse($$) { my $button = $models{RC_10}{buttons}{substr($bitData,20,3)}; $devicedef = "RC_10 ".$deviceCode."_".$button; $def = $modules{SD_UT}{defptr}{$devicedef}; - - if ($button ne "all") - { + + if ($button ne "all") { $state = substr($bitData,23,1) eq "1" ? "on" : "off" } else { $state = substr($bitData,20,4); @@ -1340,8 +1399,8 @@ sub SD_UT_Parse($$) { } elsif ($model eq "TR_502MSV" && $protocol == 34) { $state = substr($bitData,12,8); $deviceCode = substr($bitData,0,12); - ############ Novy_840029 ############ Protocol 86 ############ - } elsif ($model eq "Novy_840029" && ($protocol == 86 || $protocol == 81)) { + ############ Novy_840029, Novy_840039 ############ Protocol 86 ############ + } elsif ($model eq "Novy_840029" || $model eq "Novy_840039" && ($protocol == 86 || $protocol == 81)) { if ($hlen == 3) { # 12 Bit [3] $state = substr($bitData,8); # 4 Bit } else { # 20 Bit [5] @@ -1411,8 +1470,8 @@ sub SD_UT_Parse($$) { $state = "warning"; } } - } elsif ($model eq "RC_10" && $protocol == 90) { ############ Manax | mumbi ############ Protocol 90 ############ + } elsif ($model eq "RC_10" && $protocol == 90) { ## Check fixed bits ## Workaround to send ## my $nibble4 = substr($bitData,16,4); # evey 0000 ? my $nibble5 = substr($bitData,20,4); # Button and State @@ -1423,8 +1482,8 @@ sub SD_UT_Parse($$) { readingsBulkUpdate($hash, "x_n5-8_off" , $nibble5.$nibble6to8, 0) if ($state eq "off"); $deviceCode = substr($bitData,0,16); - } elsif ($model eq "KL_RF01" && $protocol == 93) { ############ ESTO KL_RF01 ############ Protocol 90 ############ + } elsif ($model eq "KL_RF01" && $protocol == 93) { ## Check fixed bits my $unknown1 = substr($bitData,20,4); # ? my $unknown2 = substr($bitData,28,4); # ? @@ -1471,6 +1530,10 @@ sub SD_UT_Parse($$) { last; } } + + if ($model eq "Novy_840029" || $model eq "Novy_840039") { + $state = $state =~ /^[01]+$/ ? "Please check your model. The code $deviceCode is not supported." : $state; + } } readingsBulkUpdate($hash, "deviceCode", $deviceCode, 0) if (defined($deviceCode) && $models{$model}{Typ} eq "remote"); @@ -1513,13 +1576,13 @@ sub SD_UT_Attr(@) { ### ERROR for Users my $allowed_models; - foreach my $keys (sort keys %models) { # read allowed_models with the same hex_lengh + foreach my $keys (keys %models) { # read allowed_models with the same hex_lengh $allowed_models.= $keys.", " if ($models{$keys}{hex_lengh} eq $hex_lengh); } Log3 $name, 4, "SD_UT_Attr Check for the change, $oldmodel hex_lengh=$hex_lengh, attrValue=$attrValue needed hex_lengh=".$models{$attrValue}{hex_lengh}; - return "ERROR! You want to choose the $oldmodel model to $attrValue.\nPlease check your selection.\nThe length of RAWMSG must be the same!\n\nAllowed models are: $allowed_models" if ($models{$attrValue}{hex_lengh} ne $hex_lengh && $oldmodel ne "unknown"); # variants one - return "ERROR! You want to choose the unknown model to $attrValue.\nPlease check your selection.\nRAWMSG length is wrong!\n\nAllowed models are: $allowed_models" if (not ($models{$attrValue}{hex_lengh} =~ /($hex_lengh)/ ) && $oldmodel eq "unknown"); # variants two/three + return "ERROR! You want to choose the $oldmodel model to $attrValue.\nPlease check your selection.\nThe length of RAWMSG must be the same!\n\nAllowed models are: $allowed_models" if ($models{$attrValue}{hex_lengh} !~ /$hex_lengh/ && $oldmodel ne "unknown"); # variants one + return "ERROR! You want to choose the unknown model to $attrValue.\nPlease check your selection.\nRAWMSG length is wrong!\n\nAllowed models are: $allowed_models" if (not ($models{$attrValue}{hex_lengh} =~ /($hex_lengh)/ ) && $oldmodel eq "unknown"); # variants two/three ### #### #### ### if ($attrName eq "model" && $attrValue eq "unknown") { @@ -1569,8 +1632,8 @@ sub SD_UT_Attr(@) { $deviceCode = substr($bitData,0,12); $deviceCode = sprintf("%03X", oct( "0b$deviceCode" ) ); $devicename = $devicemodel."_".$deviceCode; - ############ Novy_840029 ############ - } elsif ($attrName eq "model" && $attrValue eq "Novy_840029") { + ############ Novy_840029 || Novy_840039 ############ + } elsif ($attrName eq "model" && ($attrValue eq "Novy_840029" || $attrValue eq "Novy_840039") ) { $deviceCode = substr($bitData,0,8); $deviceCode = sprintf("%02X", oct( "0b$deviceCode" ) ); $devicename = $devicemodel."_".$deviceCode; @@ -1640,16 +1703,15 @@ sub SD_UT_Attr(@) { Log3 $name, 3, "SD_UT_Attr UNDEFINED sensor $attrValue detected, code $deviceCode (DoTrigger)" if ($devicemodel ne "unknown"); - $modules{SD_UT}{defptr}{deletecache} = $name if ($hash->{DEF} eq "unknown"); + $modules{SD_UT}{defptr}{deletecache} = $name; # delete old device Log3 $name, 5, "SD_UT: Attr cmd=$cmd devicename=$name attrName=$attrName attrValue=$attrValue oldmodel=$oldmodel"; readingsSingleUpdate($hash, "state", $state, 0); DoTrigger ("global","UNDEFINED unknown_please_select_model SD_UT unknown") if ($devicename eq "unknown_please_select_model"); # if user push attr return to unknown - DoTrigger ("global","UNDEFINED $devicename SD_UT $devicemodel $deviceCode") if ($devicename ne "unknown_please_select_model"); # create new device + DoTrigger ("global","UNDEFINED $devicename SD_UT $devicemodel $deviceCode") if ($devicename ne "unknown_please_select_model"); # create new device - #CommandAttr( undef, "$devicename model $attrValue" ) if ($devicename ne "unknown_please_select_model"); # set model | Function not reliable !!! - $attr{$devicename}{model} = "$attrValue" if ($devicename ne "unknown_please_select_model"); # set model + $attr{$devicename}{model} = "$attrValue"; # set model } else { readingsSingleUpdate($hash, "state", "Please press button again!", 0); @@ -1706,8 +1768,8 @@ sub SD_UT_tristate2bin($) { 1; =pod -=item summary ... -=item summary_DE ... +=item summary module for some SIGNALduino devices +=item summary_DE Universalmodul für einige SIGNALduino Devices =begin html @@ -1733,6 +1795,7 @@ sub SD_UT_tristate2bin($) { + @@ -1964,13 +2027,16 @@ sub SD_UT_tristate2bin($) {

+
Generated readings of the models
-