HMConfig.pm 197 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317
  1. ##############################################
  2. # $Id: HMConfig.pm 17554 2018-10-17 18:25:03Z martinp876 $
  3. # CUL HomeMatic device configuration data
  4. #####################################################
  5. # configuration data for CUL_HM -used to split code and configuration
  6. package HMConfig;
  7. use strict;
  8. use warnings;
  9. ############globals############
  10. use vars qw(%culHmModel);
  11. use vars qw(%culHmRegDefShLg);
  12. use vars qw(%culHmRegDefine);
  13. use vars qw(%culHmRegGeneral);
  14. use vars qw(%culHmRegType);
  15. use vars qw(%culHmRegModel);
  16. use vars qw(%culHmRegChan);
  17. use vars qw(%culHmGlobalGets);
  18. use vars qw(%culHmVrtGets);
  19. use vars qw(%culHmSubTypeGets);
  20. use vars qw(%culHmModelGets);
  21. use vars qw(%culHmSubTypeDevSets);
  22. use vars qw(%culHmGlobalSetsChn);
  23. use vars qw(%culHmReglSets);
  24. use vars qw(%culHmGlobalSets);
  25. use vars qw(%culHmGlobalSetsVrtDev);
  26. use vars qw(%culHmSubTypeSets);
  27. use vars qw(%culHmModelSets);
  28. use vars qw(%culHmChanSets);
  29. use vars qw(%culHmFunctSets);
  30. use vars qw(%culHmBits);
  31. use vars qw(@culHmCmdFlags);
  32. use vars qw(%culHmTpl);
  33. use vars qw($K_actDetID);
  34. # ----------------modul globals-----------------------
  35. my $K_actDetID = '000000'; # id of actionDetector
  36. #my %culHmDevProps=(
  37. # "01" => { st => "AlarmControl",
  38. # "10" => { st => "switch",
  39. # "12" => { st => "outputUnit",
  40. # "20" => { st => "dimmer",
  41. # "30" => { st => "blindActuator",
  42. # "39" => { st => "ClimateControl",
  43. # "40" => { st => "remote",
  44. # "41" => { st => "sensor",
  45. # "42" => { st => "swi",
  46. # "43" => { st => "pushButton",
  47. # "44" => { st => "singleButton",
  48. # "51" => { st => "powerMeter",
  49. # "58" => { st => "thermostat",
  50. # "60" => { st => "KFM100",
  51. # "70" => { st => "THSensor",
  52. # "80" => { st => "threeStateSensor"
  53. # "81" => { st => "motionDetector",
  54. # "C0" => { st => "keyMatic",
  55. # "C1" => { st => "winMatic",
  56. # "C3" => { st => "tipTronic",
  57. # "CD" => { st => "smokeDetector",
  58. #);
  59. # chan supports autocreate of channels for the device
  60. # Syntax <chnName>:<chnNoStart>:<chnNoEnd>
  61. # chn=>{btn:1:3,disp:4,aux:5:7} wil create
  62. # <dev>_btn1,<dev>_btn2,<dev>_btn3 as channel 1 to 3
  63. # <dev>_disp as channel 4
  64. # <dev>_aux1,<dev>_aux2,<dev>_aux7 as channel 5 to 7
  65. # autocreate for single channel devices is possible not recommended
  66. #rxt - receivetype of the device------
  67. # l: receive on lazy config - no idea how this works so far.....
  68. # c: receive on config
  69. # w: receive in wakeup
  70. # b: receive on burst
  71. # f: receive on burst if enabled
  72. #register list definition - identifies valid register lists
  73. # 1,3,5:3p.4.5 => list 1 valid for all channel
  74. # => list 3 for all channel
  75. # => list 5 only for channel 3 but assotiated with peers
  76. # => list 5 for channel 4 and 5 with peer=00000000
  77. #
  78. %culHmModel=(
  79. "0001" => {name=>"HM-LC-SW1-PL-OM54" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  80. ,"0002" => {name=>"HM-LC-SW1-SM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  81. ,"0003" => {name=>"HM-LC-SW4-SM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",}
  82. ,"0004" => {name=>"HM-LC-SW1-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  83. ,"0005" => {name=>"HM-LC-BL1-FM" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  84. ,"0006" => {name=>"HM-LC-BL1-SM" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  85. ,"0007" => {name=>"KS550" ,alias=>"HM-WDS100-C6-O"}
  86. ,"0008" => {name=>"HM-RC-4" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:4",}
  87. ,"0009" => {name=>"HM-LC-SW2-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",}
  88. ,"000A" => {name=>"HM-LC-SW2-SM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",}
  89. ,"000B" => {name=>"HM-WS550" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'p' ,chn=>"",}
  90. ,"000D" => {name=>"ASH550" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}
  91. ,"000E" => {name=>"ASH550I" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}
  92. ,"000F" => {name=>"S550IA" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}
  93. ,"0011" => {name=>"HM-LC-SW1-PL" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  94. ,"0012" => {name=>"HM-LC-DIM1L-CV" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  95. ,"0013" => {name=>"HM-LC-DIM1L-PL" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  96. ,"0014" => {name=>"HM-LC-SW1-SM-ATMEGA168" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}
  97. ,"0015" => {name=>"HM-LC-SW4-SM-ATMEGA168" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",}
  98. ,"0016" => {name=>"HM-LC-DIM2L-CV" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:2",}
  99. ,"0018" => {name=>"CMM" ,st=>'remote' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}
  100. ,"0019" => {name=>"HM-SEC-KEY" ,st=>'keyMatic' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"",}
  101. ,"001A" => {name=>"HM-RC-P1" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}
  102. ,"001B" => {name=>"HM-RC-SEC3" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:3",}
  103. ,"001C" => {name=>"HM-RC-SEC3-B" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:3",}
  104. ,"001D" => {name=>"HM-RC-KEY3" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:3",}
  105. ,"001E" => {name=>"HM-RC-KEY3-B" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:3",}
  106. ,"001F" => {name=>"KS888" ,alias=>"HM-WDS100-C6-O"}
  107. ,"0022" => {name=>"WS888" ,st=>'' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  108. ,"0026" => {name=>"HM-SEC-KEY-S" ,st=>'keyMatic' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"",}
  109. ,"0027" => {name=>"HM-SEC-KEY-O" ,st=>'keyMatic' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"",}
  110. ,"0028" => {name=>"HM-SEC-WIN" ,st=>'winMatic' ,cyc=>'' ,rxt=>'b' ,lst=>'1:1,3:1p' ,chn=>"Win:1:1,Akku:2:2",}
  111. ,"0029" => {name=>"HM-RC-12" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:12",}
  112. ,"002A" => {name=>"HM-RC-12-B" ,alias=>"HM-RC-12"}
  113. ,"002B" => {name=>"HM-WS550Tech" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'p' ,chn=>"",}
  114. ,"002C" => {name=>"KS550TECH" ,alias=>"HM-WDS100-C6-O"}
  115. ,"002D" => {name=>"HM-LC-SW4-PCB" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",}
  116. ,"002E" => {name=>"HM-LC-DIM2L-SM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:2",}
  117. ,"002F" => {name=>"HM-SEC-SC" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",} # remove wakeup - need retest
  118. ,"0030" => {name=>"HM-SEC-RHS" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"",} # remove wakeup - need retest
  119. ,"0031" => {name=>"HM-WS550LCB" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'p' ,chn=>"",}
  120. ,"0032" => {name=>"HM-WS550LCW" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'p' ,chn=>"",}
  121. ,"0033" => {name=>"KS550LC" ,alias=>"HM-WDS100-C6-O"}
  122. ,"0034" => {name=>"HM-PBI-4-FM" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:4",} # HM Push Button Interface
  123. ,"0035" => {name=>"HM-PB-4-WM" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:4",}
  124. ,"0036" => {name=>"HM-PB-2-WM" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:2",} # RC file - see also 0BF
  125. ,"0037" => {name=>"HM-RC-19" ,st=>'remote' ,cyc=>'' ,rxt=>'c:b' ,lst=>'1,4:1p.2p.3p.4p.5p.6p.7p.8p.9p.10p.11p.12p.13p.14p.15p.16p'
  126. ,chn=>"Btn:1:17,Disp:18:18",}
  127. ,"0038" => {name=>"HM-RC-19-B" ,alias=>"HM-RC-19"}
  128. ,"0039" => {name=>"HM-CC-TC" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p:2p,5:2.3p,6:2',chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3",}
  129. ,"003A" => {name=>"HM-CC-VD" ,st=>'thermostat' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'p,5' ,chn=>"",}
  130. ,"003B" => {name=>"HM-RC-4-B" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:4",}
  131. ,"003C" => {name=>"HM-WDS20-TH-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:f' ,lst=>'p' ,chn=>"",} #:w todo should be wakeup, does not react
  132. ,"003D" => {name=>"HM-WDS10-TH-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:f:w' ,lst=>'p' ,chn=>"",} #:w todo should be wakeup, does not react
  133. ,"003E" => {name=>"HM-WDS30-T-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",} #:w remark: this device behaves on wakeup
  134. ,"003F" => {name=>"HM-WDS40-TH-I" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:f' ,lst=>'p' ,chn=>"",} #:w todo should be wakeup, does not react
  135. #,"0040" => {name=>"HM-WDS100-C6-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p,1' ,chn=>"",} #:w todo should be wakeup, does not react
  136. ,"0040" => {name=>"HM-WDS100-C6-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p,1,1:1p' ,chn=>"",} #:w todo should be wakeup, does not react
  137. ,"0041" => {name=>"HM-WDC7000" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'' ,lst=>'1,4' ,chn=>"",}
  138. ,"0042" => {name=>"HM-SEC-SD" ,st=>'smokeDetector' ,cyc=>'99:00' ,rxt=>'b' ,lst=>'p' ,chn=>"",}
  139. ,"0043" => {name=>"HM-SEC-TIS" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}
  140. ,"0044" => {name=>"HM-SEN-EP" ,st=>'sensor' ,cyc=>'' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"Sen:1:2",}
  141. ,"0045" => {name=>"HM-SEC-WDS" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}
  142. ,"0046" => {name=>"HM-SWI-3-FM" ,st=>'swi' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"Sw:1:3",}
  143. ,"0047" => {name=>"KFM-Sensor" ,st=>'KFM100' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"",}
  144. ,"0048" => {name=>"IS-WDS-TH-OD-S-R3" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}
  145. ,"0049" => {name=>"KFM-Display" ,st=>'KFM100' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  146. ,"004A" => {name=>"HM-SEC-MDIR" ,st=>'motionDetector' ,cyc=>'00:20' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",}
  147. ,"004B" => {name=>"HM-Sec-Cen" ,st=>'AlarmControl' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  148. ,"004C" => {name=>"HM-RC-12-SW" ,alias=>"HM-RC-12"}
  149. ,"004D" => {name=>"HM-RC-19-SW" ,alias=>"HM-RC-19"}
  150. ,"004E" => {name=>"HM-LC-DDC1-PCB" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # door drive controller 1-channel (PCB)
  151. ,"004F" => {name=>"HM-SEN-MDIR-SM" ,st=>'motionDetector' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",}
  152. ,"0050" => {name=>"HM-SEC-SFA-SM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Siren:1:1,Flash:2:2",}
  153. ,"0051" => {name=>"HM-LC-SW1-PB-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}
  154. ,"0052" => {name=>"HM-LC-SW2-PB-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Sw:1:2",}
  155. ,"0053" => {name=>"HM-LC-BL1-PB-FM" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  156. ,"0054" => {name=>"DORMA_RC-H" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"",} # DORMA Remote 4 buttons
  157. ,"0056" => {name=>"HM-CC-SCD" ,st=>'smokeDetector' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}
  158. ,"0057" => {name=>"HM-LC-DIM1T-PL" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  159. ,"0058" => {name=>"HM-LC-DIM1T-CV" ,alias=>"HM-LC-DIM1T-PL"}
  160. ,"0059" => {name=>"HM-LC-DIM1T-FM" ,alias=>"HM-LC-DIM1T-PL"}
  161. ,"005A" => {name=>"HM-LC-DIM2T-SM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",}#4virt- is this a faulty entry?
  162. ,"005C" => {name=>"HM-OU-CF-PL" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Led:1:1,Sound:2:2",}
  163. ,"005D" => {name=>"HM-Sen-MDIR-O" ,st=>'motionDetector' ,cyc=>'00:10' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",}
  164. ,"005F" => {name=>"HM-SCI-3-FM" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"Sw:1:3",}
  165. ,"0060" => {name=>"HM-PB-4DIS-WM" ,alias=>"HM-PB-4DIS-WM-2"}
  166. ,"0061" => {name=>"HM-LC-SW4-DR" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",}
  167. ,"0062" => {name=>"HM-LC-SW2-DR" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",}
  168. ,"0064" => {name=>"DORMA_atent" ,st=>'' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"Btn:1:3",} # DORMA Remote 3 buttons
  169. ,"0065" => {name=>"DORMA_BRC-H" ,st=>'singleButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"Btn:1:4",} # Dorma Remote 4 single buttons
  170. ,"0066" => {name=>"HM-LC-SW4-WM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",}
  171. ,"0067" => {name=>"HM-LC-Dim1PWM-CV" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  172. ,"0068" => {name=>"HM-LC-Dim1TPBU-FM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  173. ,"0069" => {name=>"HM-LC-Sw1PBU-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  174. ,"006A" => {name=>"HM-LC-Bl1PBU-FM" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  175. ,"006B" => {name=>"HM-PB-2-WM55" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:2",}
  176. ,"006C" => {name=>"HM-LC-SW1-BA-PCB" ,st=>'switch' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"",}
  177. ,"006D" => {name=>"HM-OU-LED16" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'p,1' ,chn=>"Led:1:16",}
  178. ,"006E" => {name=>"HM-LC-Dim1L-CV-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  179. ,"006F" => {name=>"HM-LC-Dim1L-Pl-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  180. ,"0070" => {name=>"HM-LC-Dim2L-SM-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:2,Dim1_V:3:4,Dim2_V:5:6",}#
  181. ,"0071" => {name=>"HM-LC-Dim1T-Pl-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  182. ,"0072" => {name=>"HM-LC-Dim1T-CV-644" ,alias=>"HM-LC-Dim1T-Pl-644"}
  183. ,"0073" => {name=>"HM-LC-Dim1T-FM-644" ,alias=>"HM-LC-Dim1T-Pl-644"}
  184. ,"0074" => {name=>"HM-LC-Dim2T-SM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:2,Dim_V:3:4,Dim2_V:5:6",}#
  185. ,"0075" => {name=>"HM-OU-CFM-PL" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Led:1:1,Mp3:2:2",}
  186. ,"0076" => {name=>"HM-Sys-sRP-Pl" ,st=>'repeater' ,cyc=>'' ,rxt=>'' ,lst=>'p,2' ,chn=>"",} # repeater
  187. ,"0078" => {name=>"HM-Dis-TD-T" ,st=>'switch' ,cyc=>'' ,rxt=>'b' ,lst=>'3' ,chn=>"",} #
  188. ,"0079" => {name=>"ROTO_ZEL-STG-RM-FWT" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p:2p,5:2.3p,6:2',chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3",}
  189. ,"007A" => {name=>"ROTO_ZEL-STG-RM-FSA" ,st=>'thermostat' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'p,5' ,chn=>"",} #Roto VD
  190. ,"007B" => {name=>"ROTO_ZEL-STG-RM-FEP-230V",st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount)
  191. ,"007C" => {name=>"ROTO_ZEL-STG-RM-FZS" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled socket adapter switch actuator 1-channel
  192. ,"007D" => {name=>"ROTO_ZEL-STG-RM-WT-2" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",} # HM Push Button 2
  193. ,"007E" => {name=>"ROTO_ZEL-STG-RM-DWT-10" ,alias=>"HM-PB-4DIS-WM-2"}
  194. ,"007F" => {name=>"ROTO_ZEL-STG-RM-FST-UP4" ,alias=>"HM-PBI-4-FM"} # HM Push Button Interface
  195. ,"0080" => {name=>"ROTO_ZEL-STG-RM-HS-4" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",} # HM Remote 4 buttons
  196. ,"0081" => {name=>"ROTO_ZEL-STG-RM-FDK" ,alias=>"HM-SEC-RHS"}
  197. ,"0082" => {name=>"Roto_ZEL-STG-RM-FFK" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",} # HM Shutter Contact
  198. ,"0083" => {name=>"Roto_ZEL-STG-RM-FSS-UP3" ,st=>'swi' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"",} # HM Switch Interface 3 switches
  199. ,"0084" => {name=>"Schueco_263-160" ,st=>'smokeDetector' ,cyc=>'' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",} # HM SENSOR_FOR_CARBON_DIOXIDE
  200. ,"0086" => {name=>"Schueco_263-146" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount)
  201. ,"0087" => {name=>"Schueco_263-147" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount)
  202. ,"0088" => {name=>"Schueco_263-132" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # 1 channel dimmer L (ceiling voids)
  203. ,"0089" => {name=>"Schueco_263-134" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # 1 channel dimmer T (ceiling voids)
  204. ,"008A" => {name=>"Schueco_263-133" ,alias=>"HM-LC-Dim1TPBU-FM"} # 1 channel dimmer TPBU (flush mount)
  205. ,"008B" => {name=>"Schueco_263-130" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled switch actuator 1-channel (flush-mount)
  206. ,"008C" => {name=>"Schueco_263-131" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled switch actuator 1-channel (flush-mount)
  207. ,"008D" => {name=>"Schueco_263-135" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",} # HM Push Button 2
  208. ,"008E" => {name=>"Schueco_263-155" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",} # HM Remote Display 4 buttons
  209. ,"008F" => {name=>"Schueco_263-145" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",} # HM Push Button Interface
  210. ,"0090" => {name=>"Schueco_263-162" ,st=>'motionDetector' ,cyc=>'00:30' ,rxt=>'c:w:l' ,lst=>'1,3' ,chn=>"",} # HM radio-controlled motion detector
  211. ,"0091" => {name=>"Schueco_263-167" ,st=>'smokeDetector' ,cyc=>'99:00' ,rxt=>'b' ,lst=>'p' ,chn=>"",} # HM Smoke Detector Schueco
  212. ,"0092" => {name=>"Schueco_263-144" ,st=>'switch' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"",} # HM Switch Interface 3 switches
  213. ,"0093" => {name=>"Schueco_263-158" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",} #
  214. ,"0094" => {name=>"Schueco_263-157" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",} #
  215. ,"0095" => {name=>"HM-CC-RT-DN" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p:1p.2p.4p.5p.6p,3:3p.6p,1,7:3p.4'
  216. ,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,Clima:4:4,ClimaTeam:5:5,remote:6:6"} #
  217. ,"0096" => {name=>"WDF-solar" ,st=>'blindActuatorSol' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"win:1:1,blind:2:3",} #
  218. ,"009B" => {name=>"Schueco_263-xxx" ,st=>'tipTronic' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1:1.2,3:1p.3p',chn=>"act:1:1,sen:2:2,sec:3:3",} #
  219. ,"009F" => {name=>"HM-Sen-Wa-Od" ,st=>'sensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",} #capacitive filling level sensor
  220. ,"00A0" => {name=>"HM-RC-4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"Btn:1:4",} # init : ,01,01,1E
  221. ,"00A1" => {name=>"HM-LC-SW1-PL2" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} #
  222. ,"00A2" => {name=>"ROTO_ZEL-STG-RM-FZS-2" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} #radio-controlled socket adapter switch actuator 1-channel
  223. ,"00A3" => {name=>"HM-LC-Dim1L-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  224. ,"00A4" => {name=>"HM-LC-Dim1T-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  225. ,"00A5" => {name=>"HM-RC-Sec4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"armInt:1:1,armExt:2:2,light:3:3,disarm:4:4",}
  226. ,"00A6" => {name=>"HM-RC-Key4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"unlock:1:1,lock:2:2,light:3:3,open:4:4",}
  227. ,"00A7" => {name=>"HM-Sen-RD-O" ,st=>'sensRain' ,cyc=>'' ,rxt=>'' ,lst=>'1:1,4:1p' ,chn=>"Rain:1:1,Heating:2:2",}#stc:70 THSensor
  228. ,"00A8" => {name=>"HM-WDS30-OT2-SM" ,st=>'THSensor' ,cyc=>'12:00' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"T1:1:1,T2:2:2,T1_T2:3:3,T2_T1:4:4,Event:5:5",}
  229. ,"00A9" => {name=>"HM-PB-6-WM55" ,st=>'remote' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:6",}
  230. ,"00AA" => {name=>"HM-SEC-SD-2" ,st=>'smokeDetector' ,cyc=>'99:00' ,rxt=>'c:3' ,lst=>'p' ,chn=>"",}
  231. ,"00AB" => {name=>"HM-LC-SW4-BA-PCB" ,st=>'switch' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"Sw:1:4",}
  232. ,"00AC" => {name=>"HM-ES-PMSw1-Pl" ,st=>'powerMeter' ,cyc=>'00:10' ,rxt=>'' ,lst=>'1,3:1p,4:3p.4p.5p.6p'
  233. ,chn=>"Sw:1:1,Pwr:2:2,SenPwr:3:3,SenI:4:4,SenU:5:5,SenF:6:6"}
  234. ,"00AD" => {name=>"HM-TC-IT-WM-W-EU" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:b' ,lst=>'p:1p.2p.6p.7p,3:3p.6p,1,7:2.3p.7p,8:2,9:2'
  235. ,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,remote:6:6,SwitchTr:7:7",}
  236. ,"00AE" => {name=>"HM-WDS100-C6-O-2" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p,1,1:1p,4' ,chn=>"",}# odd: list one with and without peer on one channel
  237. ,"00AF" => {name=>"HM-OU-CM-PCB" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}
  238. ,"00B1" => {name=>"HM-SEC-SC-2" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",}
  239. ,"00B2" => {name=>"HM-SEC-WDS-2" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}
  240. ,"00B3" => {name=>"HM-LC-Dim1L-Pl-3" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  241. ,"00B4" => {name=>"HM-LC-Dim1T-Pl-3" ,alias=>"HM-LC-Dim1T-Pl-644"}
  242. ,"00B5" => {name=>"HM-LC-Dim1PWM-CV-2" ,alias=>"HM-LC-Dim1PWM-CV"}
  243. ,"00B6" => {name=>"HM-LC-Dim1TPBU-FM-2" ,alias=>"HM-LC-Dim1TPBU-FM"}
  244. ,"00B7" => {name=>"HM-LC-Dim1L-CV-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  245. ,"00B8" => {name=>"HM-LC-Dim2L-SM-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:2,Dim1_V:3:4,Dim2_V:5:6",}#
  246. ,"00B9" => {name=>"HM-LC-Dim1T-CV-2" ,alias=>"HM-LC-Dim1T-Pl-644"}
  247. ,"00BA" => {name=>"HM-LC-Dim1T-FM-2" ,alias=>"HM-LC-Dim1T-Pl-644"}
  248. ,"00BB" => {name=>"HM-LC-Dim2T-SM-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2,Sw1_V:3:4,Sw2_V:5:6",}#
  249. ,"00BC" => {name=>"HM-WDS40-TH-I-2" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:f' ,lst=>'p' ,chn=>"",} #:w todo should be wakeup, does not react
  250. ,"00BD" => {name=>"HM-CC-RT-DN-BoM" ,alias=>"HM-CC-RT-DN"}
  251. ,"00BE" => {name=>"HM-MOD-Re-8" ,st=>'switch' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"Sw:1:8",}
  252. ,"00BF" => {name=>"HM-PB-2-FM" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"Btn:1:2",}
  253. ,"00C0" => {name=>"HM-SEC-MDIR-2" ,alias=>"HM-SEC-MDIR"}
  254. ,"00C1" => {name=>"HM-Sen-MDIR-O-2" ,st=>'motionDetector' ,cyc=>'00:10' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",}
  255. ,"00C2" => {name=>"HM-PB-2-WM55-2" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:2",}
  256. ,"00C3" => {name=>"HM-SEC-RHS-2" ,alias=>"HM-SEC-RHS"}
  257. ,"00C7" => {name=>"HM-SEC-SCo" ,st=>'threeStateSensor' ,cyc=>'02:50' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",}
  258. ,"00C8" => {name=>"HM-LC-Sw1-Pl-3" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  259. ,"00C9" => {name=>"HM-LC-Sw1-SM-2" ,alias=>"HM-LC-Sw1-Pl-3"}
  260. ,"00CA" => {name=>"HM-LC-Sw1-FM-2" ,alias=>"HM-LC-Sw1-Pl-3"}
  261. ,"00CB" => {name=>"HM-LC-Sw2-FM-2" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",}
  262. ,"00CC" => {name=>"HM-LC-Sw2-DR-2" ,alias=>"HM-LC-Sw2-FM-2"}
  263. ,"00CD" => {name=>"HM-LC-Sw4-SM-2" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",}
  264. ,"00CE" => {name=>"HM-LC-Sw4-PCB-2" ,alias=>"HM-LC-Sw4-SM-2"}
  265. ,"00CF" => {name=>"HM-LC-Sw4-WM-2" ,alias=>"HM-LC-Sw4-SM-2"}
  266. ,"00D0" => {name=>"HM-LC-Sw4-DR-2" ,alias=>"HM-LC-Sw4-SM-2"}
  267. ,"00D1" => {name=>"HM-LC-Bl1-SM-2" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount)
  268. ,"00D2" => {name=>"HM-LC-Bl1-FM-2" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount)
  269. # check config modess,"00D3" => {name=>"HM-Dis-WM55" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1' ,chn=>"Dis:1:10",}
  270. ,"00D3" => {name=>"HM-Dis-WM55" ,st=>'display' ,cyc=>'' ,rxt=>'c' ,lst=>'1,p' ,chn=>"Dis:1:10",}
  271. ,"00D4" => {name=>"HM-RC-4-3" ,st=>'remote' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:4",}
  272. ,"00D5" => {name=>"HM-RC-Sec4-3" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"armInt:1:1,armExt:2:2,light:3:3,disarm:4:4",}
  273. ,"00D6" => {name=>"HM-RC-Key4-3" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"unlock:1:1,lock:2:2,light:3:3,open:4:4",}
  274. ,"00D7" => {name=>"HM-ES-PMSw1-Pl-DN-R1" ,alias=>"HM-ES-PMSw1-Pl"}
  275. ,"00D8" => {name=>"HM-LC-Sw1-Pl-DN-R1" ,alias=>"HM-LC-Sw1-Pl-3"}
  276. ,"00D9" => {name=>"HM-MOD-Em-8" ,st=>'remote' ,cyc=>'' ,rxt=>'l' ,lst=>'1,4' ,chn=>"Btn:1:8",}
  277. ,"00DA" => {name=>"HM-RC-8" ,st=>'remote' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:8",}
  278. ,"00DB" => {name=>"HM-Sen-MDIR-WM55" ,st=>'motionAndBtn' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:2,Motion:3:3",}
  279. ,"00DC" => {name=>"HM-Sen-DB-PCB" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}
  280. ,"00DD" => {name=>"HM-PB-4DIS-WM-2" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:20",}
  281. ,"00DE" => {name=>"HM-ES-TX-WM" ,st=>'powerSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'1' ,chn=>"IEC:1:2",} # strom/gassensor
  282. ,"00E0" => {name=>"HM-RC-2-PBU-FM" ,st=>'remote' ,cyc=>'' ,rxt=>'' ,lst=>'1,4' ,chn=>"Btn:1:2",} # HM Wireless Sender 2-channel for brand switch systems, flush mount
  283. ,"00E1" => {name=>"HM-RC-Dis-H-x-EU" ,st=>'remote' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:20",} #"HM Remote Control with Displays"
  284. ,"00E2" => {name=>"HM-ES-PMSw1-Pl-DN-R2" ,alias=>"HM-ES-PMSw1-Pl"}
  285. ,"00E3" => {name=>"HM-ES-PMSw1-Pl-DN-R3" ,alias=>"HM-ES-PMSw1-Pl"}
  286. ,"00E4" => {name=>"HM-ES-PMSw1-Pl-DN-R4" ,alias=>"HM-ES-PMSw1-Pl"}
  287. ,"00E5" => {name=>"HM-ES-PMSw1-Pl-DN-R5" ,alias=>"HM-ES-PMSw1-Pl"}
  288. ,"00E6" => {name=>"HM-LC-Sw1-Pl-DN-R2" ,alias=>"HM-LC-Sw1-Pl-3"}
  289. ,"00E7" => {name=>"HM-LC-Sw1-Pl-DN-R3" ,alias=>"HM-LC-Sw1-Pl-3"}
  290. ,"00E8" => {name=>"HM-LC-Sw1-Pl-DN-R4" ,alias=>"HM-LC-Sw1-Pl-3"}
  291. ,"00E9" => {name=>"HM-LC-Sw1-Pl-DN-R5" ,alias=>"HM-LC-Sw1-Pl-3"}
  292. ,"00EA" => {name=>"HM-ES-PMSw1-DR" ,alias=>"HM-ES-PMSw1-Pl"}
  293. ,"00EB" => {name=>"HM-LC-Sw1-Pl-CT-R1" ,alias=>"HM-LC-Sw1-Pl-3"}
  294. ,"00EC" => {name=>"HM-LC-Sw1-Pl-CT-R2" ,alias=>"HM-LC-Sw1-Pl-3"}
  295. ,"00ED" => {name=>"HM-LC-Sw1-Pl-CT-R3" ,alias=>"HM-LC-Sw1-Pl-3"}
  296. ,"00EE" => {name=>"HM-LC-Sw1-Pl-CT-R4" ,alias=>"HM-LC-Sw1-Pl-3"}
  297. ,"00EF" => {name=>"HM-LC-Sw1-Pl-CT-R5" ,alias=>"HM-LC-Sw1-Pl-3"}
  298. ,"00F0" => {name=>"HM-LC-Sw1-DR" ,alias=>"HM-LC-Sw1-Pl-3"}
  299. ,"00F3" => {name=>"SensoTimer-ST-6" ,st=>'timer' ,cyc=>'' ,rxt=>'c:b' ,lst=>'1,4:5p.6p.7p.8p.9p' ,chn=>"Sw:1:2,Sen:3:4,Key:5:7,ecoKey:8:9",}
  300. ,"00F4" => {name=>"HM-LC-RGBW-WM" ,st=>'rgb' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Color:2:2,Auto:3:3",}
  301. ,"00F5" => {name=>"HM-LC-Dim1T-FM-LF" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  302. ,"00F6" => {name=>"HM-ES-PMSw1-SM" ,alias=>"HM-ES-PMSw1-Pl"}
  303. ,"00F7" => {name=>"HM-SEC-MDIR-3" ,alias=>"HM-SEC-MDIR"}
  304. ,"00F8" => {name=>"HM-RC-4-3-D" ,st=>'remote' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:4",}
  305. ,"00F9" => {name=>"HM-Sec-Sir-WM" ,st=>'siren' ,cyc=>'' ,rxt=>'c:b' ,lst=>'1,3' ,chn=>"Sen:1:2,Panic:3:3,Arm:4:4",}
  306. ,"00FA" => {name=>"HM-OU-CFM-TW" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'c:b' ,lst=>'3' ,chn=>"Led:1:1,Mp3:2:2",}
  307. ,"00FB" => {name=>"HM-Dis-EP-WM55" ,st=>'display' ,cyc=>'' ,rxt=>'c:b' ,lst=>'1,4:1p.2p' ,chn=>"Btn:1:2,Dis:3:3,Key:4:8",}
  308. ,"00FC" => {name=>"OLIGO-smart-iq-HM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:2,Dim1_V:3:4,Dim2_V:5:6",}
  309. ,"00FD" => {name=>"HM-Sen-LI-O" ,st=>'senBright' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1' ,chn=>""}
  310. ,"0101" => {name=>"HM-LC-Sw2PBU-FM" ,alias=>"HM-LC-Sw2-FM-2"}
  311. ,"0102" => {name=>"HM-WDS30-OT2-SM-2" ,alias=>"HM-WDS30-OT2-SM" }
  312. ,"0103" => {name=>"HM-LC-Sw1-PCB" ,alias=>"HM-LC-Sw1-Pl-3" }
  313. ,"0104" => {name=>"HM-LC-AO-SM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  314. ,"0105" => {name=>"HM-LC-Dim1T-DR" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:1,Dim_V:2:3",}
  315. ,"0106" => {name=>"HM-MOD-EM-8Bit" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"Btn:1:2,Tr:3:3",}
  316. ,"0107" => {name=>"HM-LC-Ja1PBU-FM" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}
  317. ,"0108" => {name=>"HM-HM-LC-DW-WM" ,st=>'rgb' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Bright:1:1,Col:2:2,Bright_V1:3:3,Col_V1:4:4,Bright_V2:5:5,Col_V2:6:6",}
  318. ,"0109" => {name=>"HM-DW-WM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Dim:1:2,Dim1_V:3:4,Dim2_V:5:6",}
  319. ,"010A" => {name=>"HM-Sen-MDIR-O-3" ,alias=>"HM-Sen-MDIR-O-2" }
  320. ,"8001" => {name=>"PS-switch" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",}
  321. ,"8002" => {name=>"PS-Th-Sens" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'1,4' ,chn=>"Sen:1:4",}
  322. ,"FFF0" => {name=>"CCU-FHEM" ,st=>'virtual' ,cyc=>'' ,rxt=>'' ,lst=>'' ,chn=>"Btn:1:50",}
  323. # "HM-LGW-O-TW-W-EU" #Funk LAN Gateway
  324. #################open:---------------------------
  325. );
  326. foreach my $al (keys %culHmModel){ # duplicate entries for alias devices
  327. next if (!defined $culHmModel{$al}{alias});
  328. foreach my $mt (keys %culHmModel){
  329. if (($culHmModel{$al}{alias}) eq $culHmModel{$mt}{name}){
  330. foreach(grep !/name/, keys %{$culHmModel{$mt}}){
  331. $culHmModel{$al}{$_} = $culHmModel{$mt}{$_};
  332. }
  333. last;
  334. }
  335. }
  336. delete $culHmModel{$al} if (!defined$culHmModel{$al}{st}); # not found - remove entry
  337. }
  338. ##----------definitions for register settings-----------------
  339. # definition of Register for all devices
  340. # a: address, incl bits 13.4 4th bit in reg 13
  341. # s: size 2.0 = 2 byte, 0.5 = 5 bit. Max is 4.0!!
  342. # l: list number. List0 will be for channel 0
  343. # List 1 will set peer to 00000000
  344. # list 3 will need the input of a peer!
  345. # min: minimal input value
  346. # max: maximal input value
  347. # c: conversion, will point to a routine for calculation
  348. # f: factor to be used if c = 'factor'
  349. # u: unit for description
  350. # t: txt description
  351. # lit: if the command is a literal options will be entered here
  352. # d: if '1' the register will appear in Readings
  353. #
  354. %culHmRegDefShLg = (# register that are available for short AND long button press. Will be merged to rgister list at init
  355. #blindActuator mainly
  356. ActionType =>{a=> 10.0,s=>0.2,l=>3,min=>0 ,max=>3 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"" ,lit=>{off=>0,jmpToTarget=>1,toggleToCnt=>2,toggleToCntInv=>3}},
  357. OffTimeMode =>{a=> 10.6,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"off time meant absolut or at least" ,lit=>{absolut=>0,minimal=>1}},
  358. OnTimeMode =>{a=> 10.7,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"on time meant absolut or at least" ,lit=>{absolut=>0,minimal=>1}},
  359. MaxTimeF =>{a=> 29.0,s=>1.0,l=>3,min=>0 ,max=>25.5 ,c=>'' ,p=>'y',f=>10 ,u=>'s' ,d=>0,t=>"max time first direction." ,lit=>{unused=>25.5}},
  360. DriveMode =>{a=> 31.0,s=>1.0,l=>3,min=>0 ,max=>3 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{direct=>0,viaUpperEnd=>1,viaLowerEnd=>2,viaNextEnd=>3}},
  361. #dimmer mainly
  362. OnDly =>{a=> 6.0,s=>1.0,l=>3,min=>0 ,max=>111600,c=>'fltCvT' ,p=>'y',f=>'' ,u=>'s' ,d=>0,t=>"on delay"},
  363. OnTime =>{a=> 7.0,s=>1.0,l=>3,min=>0 ,max=>111600,c=>'fltCvT' ,p=>'y',f=>'' ,u=>'s' ,d=>0,t=>"on time" ,lit=>{unused=>111600}},
  364. OffDly =>{a=> 8.0,s=>1.0,l=>3,min=>0 ,max=>111600,c=>'fltCvT' ,p=>'y',f=>'' ,u=>'s' ,d=>0,t=>"off delay"},
  365. OffTime =>{a=> 9.0,s=>1.0,l=>3,min=>0 ,max=>111600,c=>'fltCvT' ,p=>'y',f=>'' ,u=>'s' ,d=>0,t=>"off time" ,lit=>{unused=>111600}},
  366. ActionTypeDim =>{a=> 10.0,s=>0.4,l=>3,min=>0 ,max=>8 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"" ,lit=>{off=>0,jmpToTarget=>1,toggleToCnt=>2,toggleToCntInv=>3,upDim=>4,downDim=>5,toggelDim=>6,toggelDimToCnt=>7,toggelDimToCntInv=>8}},
  367. OffDlyBlink =>{a=> 14.5,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"blink when in off delay" ,lit=>{off=>0,on=>1}},
  368. OnLvlPrio =>{a=> 14.6,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{high=>0,low=>1}},
  369. OnDlyMode =>{a=> 14.7,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{setToOff=>0,NoChange=>1}},
  370. OffLevel =>{a=> 15.0,s=>1.0,l=>3,min=>0 ,max=>100 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"PowerLevel off"},
  371. OnMinLevel =>{a=> 16.0,s=>1.0,l=>3,min=>0 ,max=>100 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"minimum PowerLevel"},
  372. OnLevel =>{a=> 17.0,s=>1.0,l=>3,min=>0 ,max=>100.5 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>1,t=>"PowerLevel on" ,lit=>{oldLevel=>100.5}},
  373. OnLevelArm =>{a=> 17.0,s=>1.0,l=>3,min=>0 ,max=>100 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"onLevel on" ,lit=>{disarmed=>0,extSens=>50,allSens=>200}},
  374. OffLevelKm =>{a=> 15.0,s=>1.0,l=>3,min=>0 ,max=>127.5 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"OnLevel 127.5=locked"},
  375. OnLevelKm =>{a=> 17.0,s=>1.0,l=>3,min=>0 ,max=>127.5 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"OnLevel 127.5=locked"},
  376. RampOnSp =>{a=> 34.0,s=>1.0,l=>3,min=>0 ,max=>1 ,c=>'' ,p=>'y',f=>200 ,u=>'s' ,d=>0,t=>"Ramp on speed"},
  377. RampOffSp =>{a=> 35.0,s=>1.0,l=>3,min=>0 ,max=>1 ,c=>'' ,p=>'y',f=>200 ,u=>'s' ,d=>0,t=>"Ramp off speed"},
  378. RampSstep =>{a=> 18.0,s=>1.0,l=>3,min=>0 ,max=>100 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"rampStartStep"},
  379. RampOnTime =>{a=> 19.0,s=>1.0,l=>3,min=>0 ,max=>111600,c=>'fltCvT' ,p=>'y',f=>'' ,u=>'s' ,d=>0,t=>"rampOnTime"},
  380. RampOffTime =>{a=> 20.0,s=>1.0,l=>3,min=>0 ,max=>111600,c=>'fltCvT' ,p=>'y',f=>'' ,u=>'s' ,d=>0,t=>"rampOffTime"},
  381. DimMinLvl =>{a=> 21.0,s=>1.0,l=>3,min=>0 ,max=>100 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"dimMinLevel"},
  382. DimMaxLvl =>{a=> 22.0,s=>1.0,l=>3,min=>0 ,max=>100 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"dimMaxLevel"},
  383. DimStep =>{a=> 23.0,s=>1.0,l=>3,min=>0 ,max=>100 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"dimStep"},
  384. OffDlyStep =>{a=> 24.0,s=>1.0,l=>3,min=>0.1 ,max=>25.6 ,c=>'' ,p=>'y',f=>2 ,u=>'%' ,d=>0,t=>"off delay step if blink is active"},
  385. OffDlyNewTime =>{a=> 25.0,s=>1.0,l=>3,min=>0.1 ,max=>25.6 ,c=>'' ,p=>'y',f=>10 ,u=>'s' ,d=>0,t=>"off delay blink time for low"},
  386. OffDlyOldTime =>{a=> 26.0,s=>1.0,l=>3,min=>0.1 ,max=>25.6 ,c=>'' ,p=>'y',f=>10 ,u=>'s' ,d=>0,t=>"off delay blink time for high"},
  387. DimElsOffTimeMd =>{a=> 38.6,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{absolut=>0,minimal=>1}},
  388. DimElsOnTimeMd =>{a=> 38.7,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{absolut=>0,minimal=>1}},
  389. DimElsActionType=>{a=> 38.0,s=>0.4,l=>3,min=>0 ,max=>8 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{off=>0,jmpToTarget=>1,toggleToCnt=>2,toggleToCntInv=>3,upDim=>4,downDim=>5,toggelDim=>6,toggelDimToCnt=>7,toggelDimToCntInv=>8}},
  390. #output Unit
  391. ActTypeMp3 =>{a=> 36 ,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Tone or MP3 to be played"},
  392. ActTypeLed =>{a=> 36 ,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"LED color" ,lit=>{no=>0x00,redS=>0x11,redL=>0x12,greenS=>0x21,greenL=>0x22,orangeS=>0x31,orangeL=>0x32}},
  393. ActTypeOuCf =>{a=> 36 ,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"type sound or LED" ,lit=>{no=>0,short=>1,long=>2}},
  394. ActNum =>{a=> 37 ,s=>1 ,l=>3,min=>1 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Number of repetitions"},
  395. Intense =>{a=> 43 ,s=>1 ,l=>3,min=>10 ,max=>255 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Volume" ,lit=>{vol_100=>255,vol_90=>250,vol_80=>246,vol_70=>240,vol_60=>234,vol_50=>227,vol_40=>218,vol_30=>207,vol_20=>190,vol_10=>162,vol_00=>10}},
  396. # statemachines
  397. BlJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,dlyOn=>1,refOn=>2,on=>3,dlyOff=>4,refOff=>5,off=>6,rampOn=>8,rampOff=>9}},
  398. BlJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,dlyOn=>1,refOn=>2,on=>3,dlyOff=>4,refOff=>5,off=>6,rampOn=>8,rampOff=>9}},
  399. BlJtDlyOn =>{a=> 12.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from delayOn" ,lit=>{no=>0,dlyOn=>1,refOn=>2,on=>3,dlyOff=>4,refOff=>5,off=>6,rampOn=>8,rampOff=>9}},
  400. BlJtDlyOff =>{a=> 12.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from delayOff" ,lit=>{no=>0,dlyOn=>1,refOn=>2,on=>3,dlyOff=>4,refOff=>5,off=>6,rampOn=>8,rampOff=>9}},
  401. BlJtRampOn =>{a=> 13.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from rampOn" ,lit=>{no=>0,dlyOn=>1,refOn=>2,on=>3,dlyOff=>4,refOff=>5,off=>6,rampOn=>8,rampOff=>9}},
  402. BlJtRampOff =>{a=> 13.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from rampOff" ,lit=>{no=>0,dlyOn=>1,refOn=>2,on=>3,dlyOff=>4,refOff=>5,off=>6,rampOn=>8,rampOff=>9}},
  403. BlJtRefOn =>{a=> 30.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from refOn" ,lit=>{no=>0,dlyOn=>1,refOn=>2,on=>3,dlyOff=>4,refOff=>5,off=>6,rampOn=>8,rampOff=>9}},
  404. BlJtRefOff =>{a=> 30.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from refOff" ,lit=>{no=>0,dlyOn=>1,refOn=>2,on=>3,dlyOff=>4,refOff=>5,off=>6,rampOn=>8,rampOff=>9}},
  405. DimJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  406. DimJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  407. DimJtDlyOn =>{a=> 12.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from delayOn" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  408. DimJtDlyOff =>{a=> 12.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from delayOff" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  409. DimJtRampOn =>{a=> 13.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from rampOn" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  410. DimJtRampOff =>{a=> 13.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from rampOff" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  411. DimElsJtOn =>{a=> 39.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"else Jump from on" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  412. DimElsJtOff =>{a=> 39.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"else Jump from off" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  413. DimElsJtDlyOn =>{a=> 40.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"else Jump from delayOn" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  414. DimElsJtDlyOff =>{a=> 40.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"else Jump from delayOff" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  415. DimElsJtRampOn =>{a=> 41.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"else Jump from rampOn" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  416. DimElsJtRampOff =>{a=> 41.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"else Jump from rampOff" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
  417. ttJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,on=>2,off=>5}},
  418. ttJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,on=>2,off=>5}},
  419. SwJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}},
  420. SwJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}},
  421. SwJtDlyOn =>{a=> 12.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from delayOn" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}},
  422. SwJtDlyOff =>{a=> 12.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from delayOff" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}},
  423. KeyJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>7 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,dlyUnlock=>1,rampUnlock=>2,unLock=>3,dlyLock=>4,rampLock=>5,lock=>6,open=>8}},
  424. KeyJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>7 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,dlyUnlock=>1,rampUnlock=>2,unLock=>3,dlyLock=>4,rampLock=>5,lock=>6,open=>8}},
  425. WinJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,rampOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}},
  426. WinJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,rampOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}},
  427. WinJtRampOn =>{a=> 13.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,rampOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}},
  428. WinJtRampOff =>{a=> 13.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,rampOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}},
  429. CtRampOn =>{a=> 1.0,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from rampOn" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
  430. CtRampOff =>{a=> 1.4,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from rampOff" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
  431. CtDlyOn =>{a=> 2.0,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from delayOn" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
  432. CtDlyOff =>{a=> 2.4,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from delayOff" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
  433. CtOn =>{a=> 3.0,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from on" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
  434. CtOff =>{a=> 3.4,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from off" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
  435. CtValLo =>{a=> 4.0,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Condition value low for CT table" },
  436. CtValHi =>{a=> 5.0,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Condition value high for CT table" },
  437. CtRefOn =>{a=> 28.0,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from refOn" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
  438. CtRefOff =>{a=> 28.4,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from refOff" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
  439. TempRC =>{a=> 45 ,s=>0.6,l=>3,min=>4.5 ,max=>30.5 ,c=>'' ,p=>'y',f=>2 ,u=>'C' ,d=>0,t=>"temperature if required by CtrlRc reg"},
  440. CtrlRc =>{a=> 46 ,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"set mode and/or temperature" ,lit=>{no=>0,tempOnly=>1,auto=>2,autoAndTemp=>3,manuAndTemp=>4,boost=>5,toggle=>6}},
  441. ActHsvCol =>{a=> 47 ,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"activate color value"},
  442. ActColPrgm =>{a=> 48 ,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"activate color program"},
  443. ActMinBoarder =>{a=> 49 ,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"activate minimal boarder"},
  444. ActMaxBoarder =>{a=> 50 ,s=>1 ,l=>3,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"activate maximal boarder"},
  445. );
  446. %culHmRegDefine = (
  447. #--- list 0, device and protocol level-----------------
  448. burstRx =>{a=> 1.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>'device reacts on Burst' ,lit=>{off=>0,on=>1}},
  449. intKeyVisib =>{a=> 2.7,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>'visibility of internal channel' ,lit=>{invisib=>0,visib=>1}},
  450. pairCentral =>{a=> 10.0,s=>3.0,l=>0,min=>0 ,max=>16777215,c=>'hex' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>'pairing to central'},
  451. #remote mainly
  452. backlOnTime =>{a=> 5.0,s=>0.6,l=>0,min=>0 ,max=>5 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Backlight ontime[s]" ,lit=>{0=>0,5=>1,10=>2,15=>3,20=>4,25=>5}},
  453. backlOnMode =>{a=> 5.6,s=>0.2,l=>0,min=>0 ,max=>2 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Backlight mode" ,lit=>{off=>0,auto=>2}},
  454. backlOnMode2 =>{a=> 5.6,s=>0.2,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Backlight mode" ,lit=>{off=>0,on=>1}},
  455. ledMode =>{a=> 5.6,s=>0.2,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"LED mode" ,lit=>{off=>0,on=>1}},
  456. displayInvert =>{a=> 5.6,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"invert Display" ,lit=>{off=>0,on=>1}},
  457. statMsgTxtAlign =>{a=> 5.7,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Status message align" ,lit=>{right=>0,left=>1}},
  458. language =>{a=> 7.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Language" ,lit=>{English=>0,German=>1}},
  459. backAtKey =>{a=> 13.7,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Backlight at keystroke" ,lit=>{off=>0,on=>1}},
  460. backAtMotion =>{a=> 13.6,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Backlight at motion" ,lit=>{off=>0,on=>1}},
  461. backAtCharge =>{a=> 13.5,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Backlight at Charge" ,lit=>{off=>0,on=>1}},
  462. stbyTime =>{a=> 14.0,s=>1.0,l=>0,min=>1 ,max=>99 ,c=>'' ,p=>'n',f=>'' ,u=>'s' ,d=>1,t=>"Standby Time"},
  463. stbyTime2 =>{a=> 14.0,s=>1.0,l=>0,min=>1 ,max=>120 ,c=>'' ,p=>'n',f=>'' ,u=>'s' ,d=>1,t=>"Standby Time"},
  464. backOnTime =>{a=> 14.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'s' ,d=>1,t=>"Backlight On Time"},
  465. btnLock =>{a=> 15.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Button Lock" ,lit=>{off=>0,on=>1}},#1 is proofen
  466. # keymatic/winmatic secific register
  467. keypressSignal =>{a=> 3.0,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Keypress beep" ,lit=>{off=>0,on=>1}},
  468. lowBatSignal =>{a=> 3.3,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Alarm on low battery" ,lit=>{off=>0,on=>1}},
  469. signal =>{a=> 3.4,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Confirmation beep" ,lit=>{off=>0,on=>1}},
  470. signalTone =>{a=> 3.6,s=>0.2,l=>0,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{low=>0,mid=>1,high=>2,veryHigh=>3}},
  471. brightness =>{a=> 4.0,s=>0.4,l=>0,min=>0 ,max=>15 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Display brightness"},
  472. energyOpt =>{a=> 8.0,s=>1.0,l=>0,min=>0 ,max=>127 ,c=>'' ,p=>'n',f=>1 ,u=>'s' ,d=>1,t=>"energy Option: Duration of ilumination",lit=>{permanent=>0}},
  473. powerSupply =>{a=> 8.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"power supply option" ,lit=>{main=>0,bat=>1}},
  474. # sec_mdir
  475. cyclicInfoMsg =>{a=> 9.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"cyclic message" ,lit=>{off=>0,on=>1,on_100=>200}},
  476. sabotageMsg =>{a=> 16.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"enable sabotage message" ,lit=>{off=>0,on=>1}},# sc needs 1 - others?
  477. cyclicInfoMsgDis=>{a=> 17.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"cyclic message"},
  478. lowBatLimit =>{a=> 18.0,s=>1.0,l=>0,min=>10 ,max=>12 ,c=>'' ,p=>'n',f=>10 ,u=>'V' ,d=>1,t=>"low batterie limit, step .1V"},
  479. lowBatLimitBA =>{a=> 18.0,s=>1.0,l=>0,min=>5 ,max=>15 ,c=>'' ,p=>'n',f=>10 ,u=>'V' ,d=>0,t=>"low batterie limit, step .1V"},
  480. lowBatLimitBA2 =>{a=> 18.0,s=>1.0,l=>0,min=>0 ,max=>15 ,c=>'' ,p=>'n',f=>10 ,u=>'V' ,d=>0,t=>"low batterie limit, step .1V"},
  481. lowBatLimitBA3 =>{a=> 18.0,s=>1.0,l=>0,min=>0 ,max=>12 ,c=>'' ,p=>'n',f=>10 ,u=>'V' ,d=>0,t=>"low batterie limit, step .1V"},
  482. lowBatLimitFS =>{a=> 18.0,s=>1.0,l=>0,min=>2 ,max=>3 ,c=>'' ,p=>'n',f=>10 ,u=>'V' ,d=>0,t=>"low batterie limit, step .1V"},
  483. lowBatLimitRT =>{a=> 18.0,s=>1.0,l=>0,min=>2 ,max=>2.5 ,c=>'' ,p=>'n',f=>10 ,u=>'V' ,d=>0,t=>"low batterie limit, step .1V"},
  484. batDefectLimit =>{a=> 19.0,s=>1.0,l=>0,min=>0.1 ,max=>2 ,c=>'' ,p=>'n',f=>100 ,u=>'Ohm' ,d=>1,t=>"batterie defect detection"},
  485. transmDevTryMax =>{a=> 20.0,s=>1.0,l=>0,min=>1 ,max=>10 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"max message re-transmit"},
  486. confBtnTime =>{a=> 21.0,s=>1.0,l=>0,min=>1 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'min' ,d=>0,t=>"255=permanent" ,lit=>{permanent=>255}},
  487. #repeater
  488. compMode =>{a=> 23.0,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"compatibility moden" ,lit=>{off=>0,on=>1}},
  489. localResDis =>{a=> 24.0,s=>1.0,l=>0,min=>1 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"local reset disable" ,lit=>{off=>0,on=>200}},
  490. globalBtnLock =>{a=> 25.0,s=>1.0,l=>0,min=>1 ,max=>255 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"global button lock" ,lit=>{off=>0,on=>200}},
  491. modusBtnLock =>{a=> 26.0,s=>1.0,l=>0,min=>1 ,max=>255 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"mode button lock" ,lit=>{off=>0,on=>200}},
  492. paramSel =>{a=> 27.0,s=>1.0,l=>0,min=>0 ,max=>4 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"data transfered to peer" ,lit=>{off=>0,T1=>1,T2=>2,T1_T2=>3,T2_T1=>4}},
  493. RS485IdleTime =>{a=> 29.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"Idle Time"},
  494. speedMultiply =>{a=> 30.0,s=>1.0,l=>0,min=>1 ,max=>5 ,c=>'' ,p=>'n',f=>'' ,u=>'x200Hz',d=>0,t=>"speed multiply"},
  495. devRepeatCntMax =>{a=> 31.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"act as repeater"},
  496. wakeupDefChan =>{a=> 32.0,s=>1.0,l=>0,min=>0 ,max=>20 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"wakeup default channel"},
  497. wakeupBehavior =>{a=> 33.0,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"wakeup behavior" ,lit=>{off=>0,on=>1}},
  498. wakeupBehavMsg =>{a=> 33.1,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"wakeup behavior status message" ,lit=>{off=>0,on=>1}},
  499. wakeupBehavMsg_R=>{a=> 33.2,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"wakeup behavior status message resistance",lit=>{off=>0,on=>1}},
  500. alarmTimeMax =>{a=> 34.0,s=>1.0,l=>0,min=>1 ,max=>900 ,c=>'fltCvT60' ,p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"maximum Alarm time" ,lit=>{unused=>0}},
  501. baudrate =>{a=> 35.0,s=>1.0,l=>0,min=>0 ,max=>6 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"baudrate" ,lit=>{Bd300=>0,Bd600=>1,Bd1200=>2,Bd2400=>3,Bd4800=>4,Bd9600=>5,Bd19200=>6}},
  502. serialFormat =>{a=> 36.0,s=>1.0,l=>0,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"serial Format" ,lit=>{s7D1PE1S=>0,s7D1PE2S=>1,s8D0PN1S=>2,s8D1PE1S=>3}},
  503. powerMode =>{a=> 37.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"meter powermode" ,lit=>{mainPower=>0,batPower=>1}},
  504. protocolMode =>{a=> 38.0,s=>1.0,l=>0,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"meter protocol mode" ,lit=>{modeA=>0,modeB=>1,modeC=>2,modeD=>3}},
  505. samplPerCycl =>{a=> 39.0,s=>1.0,l=>0,min=>1 ,max=>10 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"samples per cycle"},
  506. #rf_st_6_sh r:TRANSMIT_DEV_TRY_MAX l:0 idx:20 size:1 type:integer log## ty: integer min:1.0 max:10.0 def:5.0 uni:
  507. #un-identified List0
  508. # addr Dec!!
  509. # SEC-WM55 02:01 (AES on?)
  510. # CC-RT 02:01 16:00
  511. # TC-IT 02:01 16:00
  512. # SEC-WDS 02:01 16:01(sabotage) ?
  513. # 4DIS 02:01
  514. # HM-SEC-MDIR 02:01
  515. # SEC-SC 02:00
  516. # Blind 9:00 10:00 20:00
  517. # BL1TPBU 02:01 21:FF
  518. # Dim1TPBU 02:01 21:FF 22:00
  519. # HM-MOD-Re-8 30:49
  520. # HM-ES-TX-WM 5C:38 F1:FC
  521. # tx: D1E8 9158
  522. #Keymatic 3.3 unknown, seen 1 here
  523. #--- list 1, Channel level------------------
  524. #blindActuator mainly
  525. sign =>{a=> 8.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"signature (AES)" ,lit=>{off=>0,on=>1}},
  526. driveDown =>{a=> 11.0,s=>2.0,l=>1,min=>0 ,max=>6000.0,c=>'' ,p=>'n',f=>10 ,u=>'s' ,d=>1,t=>"drive time up"},
  527. driveUp =>{a=> 13.0,s=>2.0,l=>1,min=>0 ,max=>6000.0,c=>'' ,p=>'n',f=>10 ,u=>'s' ,d=>1,t=>"drive time up"},
  528. driveTurn =>{a=> 15.0,s=>1.0,l=>1,min=>0.5 ,max=>25.5 ,c=>'' ,p=>'n',f=>10 ,u=>'s' ,d=>1,t=>"engine uncharge - fhem min = 0.5s for protection. HM min= 0s (use regBulk if necessary)"},
  529. refRunCounter =>{a=> 16.0,s=>1.0,l=>1,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"start reference run after n non-end drives"},
  530. #remote mainly
  531. longPress =>{a=> 4.4,s=>0.4,l=>1,min=>0.3 ,max=>1.8 ,c=>'m10s3' ,p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"time to detect key long press"},
  532. dblPress =>{a=> 9.0,s=>0.4,l=>1,min=>0 ,max=>1.5 ,c=>'' ,p=>'n',f=>10 ,u=>'s' ,d=>0,t=>"time to detect double press"},
  533. msgShowTime =>{a=> 45.0,s=>1.0,l=>1,min=>0.0 ,max=>120 ,c=>'' ,p=>'n',f=>2 ,u=>'s' ,d=>1,t=>"Message show time(RC19). 0=always on"},
  534. beepAtAlarm =>{a=> 46.0,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Beep Alarm" ,lit=>{none=>0,tone1=>1,tone2=>2,tone3=>3}},
  535. beepAtService =>{a=> 46.2,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Beep Service" ,lit=>{none=>0,tone1=>1,tone2=>2,tone3=>3}},
  536. beepAtInfo =>{a=> 46.4,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Beep Info" ,lit=>{none=>0,tone1=>1,tone2=>2,tone3=>3}},
  537. backlAtAlarm =>{a=> 47.0,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Backlight Alarm" ,lit=>{off=>0,on=>1,blinkSlow=>2,blinkFast=>3}},
  538. backlAtService =>{a=> 47.2,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Backlight Service" ,lit=>{off=>0,on=>1,blinkSlow=>2,blinkFast=>3}},
  539. backlAtInfo =>{a=> 47.4,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Backlight Info" ,lit=>{off=>0,on=>1,blinkSlow=>2,blinkFast=>3}},
  540. #dimmer mainly
  541. loadErrCalib =>{a=> 18.0,s=>1.0,l=>1,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>"" ,d=>0,t=>"Load Error Calibration"},
  542. transmitTryMax =>{a=> 48.0,s=>1.0,l=>1,min=>1 ,max=>10 ,c=>'' ,p=>'n',f=>'' ,u=>"" ,d=>0,t=>"max message re-transmit"},
  543. loadAppearBehav =>{a=> 49.0,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>"" ,d=>1,t=>"behavior on load appearence at restart",lit=>{off=>0,last=>1,btnPress=>2,btnPressIfWasOn=>3}},
  544. ovrTempLvl =>{a=> 50.0,s=>1.0,l=>1,min=>30 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>"C" ,d=>0,t=>"overtemperatur level"},
  545. fuseDelay =>{a=> 51.0,s=>1.0,l=>1,min=>0 ,max=>2.55 ,c=>'' ,p=>'n',f=>100 ,u=>"s" ,d=>0,t=>"fuse delay"},
  546. redTempLvl =>{a=> 52.0,s=>1.0,l=>1,min=>30 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>"C" ,d=>0,t=>"reduced temperatur recover"},
  547. redLvl =>{a=> 53.0,s=>1.0,l=>1,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>2 ,u=>"%" ,d=>0,t=>"reduced power level"},
  548. powerUpAction =>{a=> 86.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>"" ,d=>1,t=>"on: simulate short press of peer self01 (self02 if dual buttons) after power up",lit=>{off=>0,on=>1}},
  549. statusInfoMinDly=>{a=> 87.0,s=>0.5,l=>1,min=>0 ,max=>15.5 ,c=>'' ,p=>'n',f=>2 ,u=>"s" ,d=>0,t=>"status message min delay" ,lit=>{unused=>0}},
  550. statusInfoRandom=>{a=> 87.5,s=>0.3,l=>1,min=>0 ,max=>7 ,c=>'' ,p=>'n',f=>'' ,u=>"s" ,d=>0,t=>"status message random delay"},
  551. characteristic =>{a=> 88.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>"" ,d=>1,t=>"" ,lit=>{linear=>0,square=>1}},
  552. charactLvlLimit =>{a=> 88.1,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>"" ,d=>1,t=>"" ,lit=>{halfConst=>0,max=>1}},
  553. charactColAssign=>{a=> 88.2,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>"" ,d=>1,t=>"" ,lit=>{warm=>0,cold=>1}},
  554. charactBase =>{a=> 88.4,s=>0.4,l=>1,min=>0 ,max=>2 ,c=>'lit' ,p=>'n',f=>'' ,u=>"" ,d=>1,t=>"" ,lit=>{crossfade=>0,dim2warm=>1,dim2hot=>2}},
  555. logicCombination=>{a=> 89.0,s=>0.5,l=>1,min=>0 ,max=>16 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"" ,lit=>{inactive=>0,or=>1,and=>2,xor=>3,nor=>4,nand=>5,orinv=>6,andinv=>7,plus=>8,minus=>9,mul=>10,plusinv=>11,minusinv=>12,mulinv=>13,invPlus=>14,invMinus=>15,invMul=>16}},
  556. #SCD
  557. msgScdPosA =>{a=> 32.6,s=>0.2,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position A" ,lit=>{noMsg=>0,lvlNormal=>1}},
  558. msgScdPosB =>{a=> 32.4,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position B" ,lit=>{noMsg=>0,lvlNormal=>1,lvlAddStrong=>2,lvlAdd=>3}},
  559. msgScdPosC =>{a=> 32.2,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position C" ,lit=>{noMsg=>0,lvlNormal=>1,lvlAddStrong=>2,lvlAdd=>3}},
  560. msgScdPosD =>{a=> 32.0,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position D" ,lit=>{noMsg=>0,lvlNormal=>1,lvlAddStrong=>2,lvlAdd=>3}},
  561. #wds - different literals
  562. msgWdsPosA =>{a=> 32.6,s=>0.2,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position A" ,lit=>{noMsg=>0,dry=>1}},
  563. msgWdsPosB =>{a=> 32.4,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position B" ,lit=>{noMsg=>0,dry=>1,water=>2,wet=>3}},
  564. msgWdsPosC =>{a=> 32.2,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position C" ,lit=>{noMsg=>0, water=>2,wet=>3}},
  565. #rhs - different literals
  566. msgRhsPosA =>{a=> 32.6,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position A" ,lit=>{noMsg=>0,closed=>1,open=>2,tilted=>3}},
  567. msgRhsPosB =>{a=> 32.4,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position B" ,lit=>{noMsg=>0,closed=>1,open=>2,tilted=>3}},
  568. msgRhsPosC =>{a=> 32.2,s=>0.2,l=>1,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position C" ,lit=>{noMsg=>0,closed=>1,open=>2,tilted=>3}},
  569. #SC - different literals
  570. msgScPosA =>{a=> 32.6,s=>0.2,l=>1,min=>0 ,max=>2 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position A" ,lit=>{noMsg=>0,closed=>1,open=>2}},
  571. msgScPosB =>{a=> 32.4,s=>0.2,l=>1,min=>0 ,max=>2 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Message for position B" ,lit=>{noMsg=>0,closed=>1,open=>2}},
  572. # keymatic/winmatic specific register
  573. holdTime =>{a=> 20 ,s=>1, l=>1,min=>0 ,max=>8.16 ,c=>'' ,p=>'n',f=>31.25 ,u=>'s' ,d=>0,t=>"Holdtime for door opening"},
  574. holdPWM =>{a=> 21 ,s=>1, l=>1,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Holdtime pulse wide modulation"},
  575. setupDir =>{a=> 22 ,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Rotation direction for locking" ,lit=>{right=>0,left=>1}},
  576. setupPosition =>{a=> 23 ,s=>1 ,l=>1,min=>0 ,max=>3000 ,c=>'' ,p=>'n',f=>0.06666 ,u=>'deg' ,d=>1,t=>"Rotation angle neutral position"},
  577. angelOpen =>{a=> 24 ,s=>1 ,l=>1,min=>0 ,max=>3000 ,c=>'' ,p=>'n',f=>0.06666 ,u=>'deg' ,d=>1,t=>"Door opening angle"},
  578. angelMax =>{a=> 25 ,s=>1 ,l=>1,min=>0 ,max=>3000 ,c=>'' ,p=>'n',f=>0.06666 ,u=>'deg' ,d=>1,t=>"Angle maximum"},
  579. angelLocked =>{a=> 26 ,s=>1 ,l=>1,min=>0 ,max=>3000 ,c=>'' ,p=>'n',f=>0.06666 ,u=>'deg' ,d=>1,t=>"Angle Locked position"},
  580. pullForce =>{a=> 28 ,s=>1 ,l=>1,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>2 ,u=>'%' ,d=>1,t=>"pull force level"},
  581. pushForce =>{a=> 29 ,s=>1 ,l=>1,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>2 ,u=>'%' ,d=>1,t=>"push force level"},
  582. tiltMax =>{a=> 30 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"maximum tilt level"},
  583. ledFlashUnlocked=>{a=> 31.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"LED blinks when not locked" ,lit=>{off=>0,on=>1}},
  584. ledFlashLocked =>{a=> 31.6,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"LED blinks when locked" ,lit=>{off=>0,on=>1}},
  585. seqPulse1 =>{a=> 36 ,s=>1 ,l=>1,min=>0 ,max=>4.08 ,c=>'' ,p=>'n',f=>62.5 ,u=>'s' ,d=>1,t=>"Sequence Pulse. 0= unused, otherwise min= 0.032sec"},
  586. seqPulse2 =>{a=> 37 ,s=>1 ,l=>1,min=>0 ,max=>4.08 ,c=>'' ,p=>'n',f=>62.5 ,u=>'s' ,d=>1,t=>"Sequence Pulse. 0= unused, otherwise min= 0.032sec"},
  587. seqPulse3 =>{a=> 38 ,s=>1 ,l=>1,min=>0 ,max=>4.08 ,c=>'' ,p=>'n',f=>62.5 ,u=>'s' ,d=>1,t=>"Sequence Pulse. 0= unused, otherwise min= 0.032sec"},
  588. seqPulse4 =>{a=> 39 ,s=>1 ,l=>1,min=>0 ,max=>4.08 ,c=>'' ,p=>'n',f=>62.5 ,u=>'s' ,d=>1,t=>"Sequence Pulse. 0= unused, otherwise min= 0.032sec"},
  589. seqPulse5 =>{a=> 40 ,s=>1 ,l=>1,min=>0 ,max=>4.08 ,c=>'' ,p=>'n',f=>62.5 ,u=>'s' ,d=>1,t=>"Sequence Pulse. 0= unused, otherwise min= 0.032sec"},
  590. seqTolerance =>{a=> 44 ,s=>1 ,l=>1,min=>0.016,max=>4.08 ,c=>'' ,p=>'n',f=>62.5 ,u=>'s' ,d=>1,t=>"Sequence tolernace"},
  591. waterUppThr =>{a=> 6.0,s=>1 ,l=>1,min=>0 ,max=>256 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"water upper threshold"},
  592. waterlowThr =>{a=> 7.0,s=>1 ,l=>1,min=>0 ,max=>256 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"water lower threshold"},
  593. # change 90 to 91 due to log: reg 90 not available but 91 available...
  594. caseDesign =>{a=> 91.0,s=>1 ,l=>1,min=>1 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"case desing" ,lit=>{verticalBarrel=>1,horizBarrel=>2,rectangle=>3}},
  595. caseHigh =>{a=> 94.0,s=>2 ,l=>1,min=>100 ,max=>10000 ,c=>'' ,p=>'n',f=>'' ,u=>'cm' ,d=>1,t=>"case hight"},
  596. fillLevel =>{a=> 98.0,s=>2 ,l=>1,min=>100 ,max=>300 ,c=>'' ,p=>'n',f=>'' ,u=>'cm' ,d=>1,t=>"fill level"},
  597. caseWidth =>{a=>102.0,s=>2 ,l=>1,min=>100 ,max=>10000 ,c=>'' ,p=>'n',f=>'' ,u=>'cm' ,d=>1,t=>"case width"},
  598. caseLength =>{a=>106.0,s=>2 ,l=>1,min=>100 ,max=>10000 ,c=>'' ,p=>'n',f=>'' ,u=>'cm' ,d=>1,t=>"case length"},
  599. meaLength =>{a=>108.0,s=>2 ,l=>1,min=>110 ,max=>310 ,c=>'' ,p=>'n',f=>'' ,u=>'cm' ,d=>1,t=>""},
  600. useCustom =>{a=>110.0,s=>1 ,l=>1,min=>110 ,max=>310 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"use custom" ,lit=>{off=>0,on=>200}},
  601. averaging =>{a=>122.0,s=>1 ,l=>1,min=>1 ,max=>16 ,c=>'' ,p=>'n',f=>'' ,u=>'s' ,d=>1,t=>"averaging period"},
  602. txMinDly =>{a=>123.0,s=>0.7,l=>1,min=>0 ,max=>16 ,c=>'' ,p=>'n',f=>'' ,u=>'s' ,d=>1,t=>"min transmit delay"},
  603. txThrPwr =>{a=>124.0,s=>3 ,l=>1,min=>0.01 ,max=>3680 ,c=>'' ,p=>'n',f=>100 ,u=>'W' ,d=>1,t=>"threshold power" ,lit=>{unused=>0}},
  604. txThrCur =>{a=>127.0,s=>2 ,l=>1,min=>0 ,max=>16000 ,c=>'' ,p=>'n',f=>'' ,u=>'mA' ,d=>1,t=>"threshold current" ,lit=>{unused=>0}},
  605. txThrVlt =>{a=>129.0,s=>2 ,l=>1,min=>0.0 ,max=>230 ,c=>'' ,p=>'n',f=>10 ,u=>'V' ,d=>1,t=>"threshold voltage" ,lit=>{unused=>0}},
  606. txThrFrq =>{a=>131.0,s=>1 ,l=>1,min=>0.00 ,max=>2.55 ,c=>'' ,p=>'n',f=>100 ,u=>'Hz' ,d=>1,t=>"threshold frequency" ,lit=>{unused=>0}},
  607. cndTxFalling =>{a=>132.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"trigger if falling" ,lit=>{off=>0,on=>1}},
  608. cndTxRising =>{a=>132.1,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"trigger if rising" ,lit=>{off=>0,on=>1}},
  609. cndTxCycBelow =>{a=>132.2,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"cyclic trigger if level is below cndTxCycBelow",lit=>{off=>0,on=>1}},
  610. cndTxCycAbove =>{a=>132.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"cyclic trigger if level is above cndTxDecAbove",lit=>{off=>0,on=>1}},
  611. cndTxDecAbove =>{a=>133 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"decission level for cndTxCycAbove"},
  612. cndTxDecBelow =>{a=>134 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"decission level for cndTxCycBelow"},
  613. txThrHiPwr =>{a=>135.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,p=>'n',f=>'100' ,u=>'W' ,d=>1,t=>"threshold low power"},
  614. txThrLoPwr =>{a=>139.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,p=>'n',f=>'100' ,u=>'W' ,d=>1,t=>"threshold high power"},
  615. txThrHiCur =>{a=>135.0,s=>4 ,l=>1,min=>0 ,max=>16000 ,c=>'' ,p=>'n',f=>'' ,u=>'mA' ,d=>1,t=>"threshold low current"},
  616. txThrLoCur =>{a=>139.0,s=>4 ,l=>1,min=>0 ,max=>16000 ,c=>'' ,p=>'n',f=>'' ,u=>'mA' ,d=>1,t=>"threshold high current"},
  617. txThrHiVlt =>{a=>135.0,s=>4 ,l=>1,min=>115 ,max=>255 ,c=>'' ,p=>'n',f=>'10' ,u=>'V' ,d=>1,t=>"threshold low voltage"},
  618. txThrLoVlt =>{a=>139.0,s=>4 ,l=>1,min=>115 ,max=>255 ,c=>'' ,p=>'n',f=>'10' ,u=>'V' ,d=>1,t=>"threshold high voltage"},
  619. txThrHiFrq =>{a=>135.0,s=>4 ,l=>1,min=>48.72,max=>51.27 ,c=>'' ,p=>'n',f=>'100' ,u=>'Hz' ,d=>1,t=>"threshold low frequency"},
  620. txThrLoFrq =>{a=>139.0,s=>4 ,l=>1,min=>48.72,max=>51.27 ,c=>'' ,p=>'n',f=>'100' ,u=>'Hz' ,d=>1,t=>"threshold high frequency"},
  621. voltage_0 =>{a=>173.0,s=>1 ,l=>1,min=>0 ,max=>0.2 ,c=>'' ,p=>'n',f=>'200' ,u=>'%' ,d=>1,t=>"lower Voltage"},
  622. voltage_100 =>{a=>174.0,s=>1 ,l=>1,min=>0.3 ,max=>1.0 ,c=>'' ,p=>'n',f=>'200' ,u=>'%' ,d=>1,t=>"higher Voltage"},
  623. relayDelay =>{a=>175.0,s=>1 ,l=>1,min=>0 ,max=>111600 ,c=>'fltCvT' ,p=>'n',f=>'' ,u=>'s' ,d=>1,t=>"relay off delay time"},
  624. evtFltrPeriod =>{a=> 1.0,s=>0.4,l=>1,min=>0.5 ,max=>7.5 ,c=>'' ,p=>'n',f=>2 ,u=>'s' ,d=>1,t=>"event filter period"},
  625. evtFltrNum =>{a=> 1.4,s=>0.4,l=>1,min=>1 ,max=>15 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"sensitivity - read each n-th puls"},
  626. minInterval =>{a=> 2.0,s=>0.3,l=>1,min=>0 ,max=>4 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"interval in sec" ,lit=>{15=>0,30=>1,60=>2,120=>3,240=>4}},
  627. captInInterval =>{a=> 2.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"capture motion in interval, send result in next trigger" ,lit=>{off=>0,on=>1}},
  628. brightFilter =>{a=> 2.4,s=>0.4,l=>1,min=>0 ,max=>7 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"7: filter fast changes to 0: no filter of light changes"},
  629. eventDlyTime =>{a=> 33 ,s=>1 ,l=>1,min=>0 ,max=>7620 ,c=>'fltCvT60',p=>'n',f=>'' ,u=>'s' ,d=>1,t=>"filters short events, causes reporting delay"},
  630. ledOnTime =>{a=> 34 ,s=>1 ,l=>1,min=>0 ,max=>1.275 ,c=>'' ,p=>'n',f=>200 ,u=>'s' ,d=>0,t=>"LED ontime"},
  631. eventFilterTime =>{a=> 35 ,s=>1 ,l=>1,min=>0 ,max=>7620 ,c=>'fltCvT60',p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"event filter time"},
  632. eventFilterTimeB=>{a=> 35 ,s=>1 ,l=>1,min=>5 ,max=>7620 ,c=>'fltCvT60',p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"event filter time"},
  633. # - different range
  634. evtFltrTime =>{a=> 35.0,s=>1 ,l=>1,min=>600 ,max=>1200 ,c=>'fltCvT' ,p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"event filter time"},
  635. # weather units
  636. sunThresh =>{a=> 5 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"Sunshine threshold"},
  637. stormUpThresh =>{a=> 6 ,s=>1 ,l=>1,min=>0 ,max=>200 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"Storm upper threshold"},
  638. stormLowThresh =>{a=> 7 ,s=>1 ,l=>1,min=>0 ,max=>200 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"Storm lower threshold"},
  639. windSpeedRsltSrc=>{a=> 10 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"wind result source" ,lit=>{average=>0,max=>1}},
  640. # others
  641. localResetDis =>{a=> 7 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"LocalReset disable" ,lit=>{off=>0,on=>200}},
  642. cndTxThrhHi =>{a=>135 ,s=>2 ,l=>1,min=>0 ,max=>3000 ,c=>'' ,p=>'n',f=>'' ,u=>'mV' ,d=>0,t=>"threshold high condition"},
  643. cndTxThrhLo =>{a=>139 ,s=>2 ,l=>1,min=>0 ,max=>3000 ,c=>'' ,p=>'n',f=>'' ,u=>'mV' ,d=>0,t=>"threshold high condition"},
  644. highHoldTime =>{a=>143 ,s=>1 ,l=>1,min=>60 ,max=>7620 ,c=>'fltCvT60',p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"hold time on high state"},
  645. evntRelFltTime =>{a=>145 ,s=>1 ,l=>1,min=>1 ,max=>7620 ,c=>'fltCvT60',p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"event filter release time "},
  646. triggerMode =>{a=>146.0,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"define type of event report " ,lit=>{off=>0,sensor=>33,switch=>34,button=>35}},
  647. mtrType =>{a=>149.0,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"type of measurement" ,lit=>{gas=>1,IR=>2,LED=>4,IEC=>8,unknown=>255}},
  648. mtrConstIr =>{a=>150.0,s=>2 ,l=>1,min=>1 ,max=>65536 ,c=>'' ,p=>'n',f=>'' ,u=>'U/kWh',d=>0,t=>"constant IR"},
  649. mtrConstGas =>{a=>152.0,s=>2 ,l=>1,min=>0.001,max=>65.536 ,c=>'' ,p=>'n',f=>1000 ,u=>'m3/I' ,d=>0,t=>"constant gas"},
  650. mtrConstLed =>{a=>154.0,s=>2 ,l=>1,min=>1 ,max=>65536 ,c=>'' ,p=>'n',f=>'' ,u=>'i/kWh',d=>0,t=>"constant led"},
  651. mtrSensIr =>{a=>156.0,s=>1 ,l=>1,min=>-99 ,max=>99 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>0,t=>"sensiblity IR"},
  652. humDesVal =>{a=>157.0,s=>1 ,l=>1,min=>0 ,max=>7 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"humidity desired value"},
  653. watDuration =>{a=>158.0,s=>1 ,l=>1,min=>0 ,max=>90 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"watering duration"},
  654. wat1_hour =>{a=>159.0,s=>1 ,l=>1,min=>0 ,max=>24 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"watering hour 1"},
  655. wat1_min =>{a=>160.0,s=>1 ,l=>1,min=>0 ,max=>60 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"watering minutes 1"},
  656. wat2_hour =>{a=>161.0,s=>1 ,l=>1,min=>0 ,max=>24 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"watering hour 2"},
  657. wat2_min =>{a=>162.0,s=>1 ,l=>1,min=>0 ,max=>60 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"watering minutes 2"},
  658. eco_days =>{a=>163.0,s=>1 ,l=>1,min=>0 ,max=>7 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"eco days"},
  659. waRed =>{a=>164.0,s=>1 ,l=>1,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>0,t=>"whitebalance red"},
  660. waGreen =>{a=>165.0,s=>1 ,l=>1,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>0,t=>"whitebalance green"},
  661. waBlue =>{a=>166.0,s=>1 ,l=>1,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>0,t=>"whitebalance blue"},
  662. colChangeSpeed =>{a=>167.0,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,p=>'n',f=>'' ,u=>'s/U' ,d=>0,t=>"color change speed"},
  663. acusticMultiDly =>{a=>169.7,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"acustic mutli exec delay" ,lit=>{off=>0,on=>1}},
  664. acusticArmSens =>{a=>169.4,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"acustic arm sensor" ,lit=>{off=>0,on=>1}},
  665. acusticArmDly =>{a=>169.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"acustic delay arm" ,lit=>{off=>0,on=>1}},
  666. acusticExtArm =>{a=>169.2,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"acustic external arm sensor" ,lit=>{off=>0,on=>1}},
  667. acusticExtDly =>{a=>169.1,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"acustic external delay arm" ,lit=>{off=>0,on=>1}},
  668. acusticDisArm =>{a=>169.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"acustic disarm " ,lit=>{off=>0,on=>1}},
  669. opticMultiDly =>{a=>170.7,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"optic mutli exec delay" ,lit=>{off=>0,on=>1}},
  670. opticArmSens =>{a=>170.4,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"optic arm sensor" ,lit=>{off=>0,on=>1}},
  671. opticArmDly =>{a=>170.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"optic delay arm" ,lit=>{off=>0,on=>1}},
  672. opticExtArm =>{a=>170.2,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"optic external arm sensor" ,lit=>{off=>0,on=>1}},
  673. opticExtDly =>{a=>170.1,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"optic external delay arm" ,lit=>{off=>0,on=>1}},
  674. opticDisArm =>{a=>170.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"optic disarm " ,lit=>{off=>0,on=>1}},
  675. soundId =>{a=>171.0,s=>1 ,l=>1,min=>0 ,max=>72 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"sound ID" ,lit=>{unused=>0}},
  676. txThresPercent =>{a=>172.0,s=>1 ,l=>1,min=>10 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>0,t=>"threshold percent" ,lit=>{unused=>0}},
  677. dataTransCond =>{a=>176.0,s=>1 ,l=>1,min=>10 ,max=>111600 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"dataTransmitCondition" ,lit=>{lvlChng_H_L=>0,lvlChng_L_H=>1,lvlChng_any=>2,stbl4TimeEnable=>3,sndImmediateEnable=>4,stbl4TimeDisable=>5,sndImmediateDisable=>6}},
  678. stabFltTime =>{a=>177.0,s=>1 ,l=>1,min=>10 ,max=>111600 ,c=>'fltCvT' ,p=>'n',f=>'' ,u=>'s' ,d=>0,t=>"stability filter time"},
  679. dInProp0 =>{a=>178.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Data Input Propertie" ,lit=>{off=>0,on=>1}},
  680. dInProp1 =>{a=>178.1,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Data Input Propertie" ,lit=>{off=>0,on=>1}},
  681. dInProp2 =>{a=>178.2,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Data Input Propertie" ,lit=>{off=>0,on=>1}},
  682. dInProp3 =>{a=>178.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Data Input Propertie" ,lit=>{off=>0,on=>1}},
  683. dInProp4 =>{a=>178.4,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Data Input Propertie" ,lit=>{off=>0,on=>1}},
  684. dInProp5 =>{a=>178.5,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Data Input Propertie" ,lit=>{off=>0,on=>1}},
  685. dInProp6 =>{a=>178.6,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Data Input Propertie" ,lit=>{off=>0,on=>1}},
  686. dInProp7 =>{a=>178.7,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Data Input Propertie" ,lit=>{off=>0,on=>1}},
  687. refRunTimeSlats =>{a=>179 ,s=>2 ,l=>1,min=>0 ,max=>10 ,c=>'' ,p=>'n',f=>50 ,u=>'s' ,d=>0,t=>"reference run time slats" ,lit=>{off=>0,on=>1}},
  688. posSaveTime =>{a=>181 ,s=>1 ,l=>1,min=>0.1 ,max=>25.5 ,c=>'' ,p=>'n',f=>10 ,u=>'s' ,d=>0,t=>"position save time" ,lit=>{off=>0,on=>1}},
  689. #rf_es_tx_wm r:TX_THRESHOLD_POWER l:1 idx:124 size:3 type:integer log## ty: float min:0.01 max:160000.0 def:100.00 uni:W Conv## ty: float_integer_scale factor:100 offset:
  690. #rf_es_tx_wm r:METER_TYPE l:1 idx:149 size:1 type:integer log## ty: option min: max: def: uni: Conv## ty: option_integer factor: offset:
  691. #rf_es_tx_wm r:POWER_STRING l:1 idx:54 size:16 type:string log## ty: string min: max: def: uni:
  692. #rf_es_tx_wm r:ENERGY_COUNTER_STRING l:1 idx:70 size:16 type:string log## ty: string min: max: def: uni:
  693. #rf_hm-wds100-c6-o-2 r:SUNSHINE_THRESHOLD l:1 idx:5.0 size:1.0 type:integer log## ty: integer min:0 max:0xff def: uni:
  694. #rf_hm-wds100-c6-o-2 r:WIND_SPEED_RESULT_SOURCE l:1 idx:10 size:1.0 type:integer log## ty: option min: max: def: uni:
  695. #rf_hm-wds100-c6-o-2 r:STORM_UPPER_THRESHOLD l:1 idx:6.0 size:1.0 type:integer log## ty: integer min:0 max:0xff def: uni:
  696. #rf_hm-wds100-c6-o-2 r:STORM_LOWER_THRESHOLD l:1 idx:7.0 size:1.0 type:integer log## ty: integer min:0 max:0xff def: uni:
  697. #un-identified List1
  698. # SEC-WM55 08:01 (AES on?)
  699. # SEC-WDS 34:0x64 ?
  700. # SEC-SC 08:00 ?
  701. # RC19 08:00 ? RC19 Button 08:08
  702. # Bl1PBU 08:00 09:00 10:00
  703. # ES-PMSw1-Pl Ch1 : 93:20 94:45
  704. # logicCombination=>{a=> 89.0,s=>0.5,l=>1,min=>0 ,max=>16 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"".
  705. # "inactive=>unused\n".
  706. # "or =>max(state,chan)\n".
  707. # "and =>min(state,chan)\n".
  708. # "xor =>0 if both are != 0, else max\n".
  709. # "nor =>100-max(state,chan)\n".
  710. # "nand =>100-min(state,chan)\n".
  711. # "orinv =>max((100-chn),state)\n".
  712. # "andinv =>min((100-chn),state)\n".
  713. # "plus =>state + chan\n".
  714. # "minus =>state - chan\n".
  715. # "mul =>state * chan\n".
  716. # "plusinv =>state + 100 - chan\n".
  717. # "minusinv=>state - 100 + chan\n".
  718. # "mulinv =>state * (100 - chan)\n".
  719. # "invPlus =>100 - state - chan\n".
  720. # "invMinus=>100 - state + chan\n".
  721. # "invMul =>100 - state * chan\n",lit=>{inactive=>0,or=>1,and=>2,xor=>3,nor=>4,nand=>5,orinv=>6,andinv=>7,plus=>8,minus=>9,mul=>10,plusinv=>11,minusinv=>12,mulinv=>13,invPlus=>14,invMinus=>15,invMul=>16}},
  722. #
  723. #
  724. #CC-TC
  725. #--- list 3, link level for actor - mainly in short/long hash, only specials here------------------
  726. lgMultiExec =>{a=>138.5,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"execution per repeat message" ,lit=>{off=>0,on=>1}},
  727. shMultiExec =>{a=> 10.5,s=>0.1,l=>3,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>0,t=>"reg unused, placeholder only" ,lit=>{off=>0,on=>1}},
  728. #--- list 4, link level for Button ------------------
  729. peerNeedsBurst =>{a=> 1.0,s=>0.1,l=>4,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"peer expects burst" ,lit=>{off=>0,on=>1}},
  730. expectAES =>{a=> 1.7,s=>0.1,l=>4,min=>0 ,max=>1 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"expect AES" ,lit=>{off=>0,on=>1}},
  731. lcdSymb =>{a=> 2.0,s=>0.1,l=>4,min=>0 ,max=>8 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"symbol to display on message" ,lit=>{"none"=>0,"bulb"=>1,"switch"=>2,"window"=>3,"door"=>4,"blind"=>5,"scene"=>6,"phone"=>7,"bell"=>8}},
  732. lcdLvlInterp =>{a=> 3.0,s=>0.1,l=>4,min=>0 ,max=>5 ,c=>'lit' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"bitmask for symbols" ,lit=>{"none"=>0,"light"=>1,"blind"=>2,"marquee"=>3,"door"=>4,"window"=>5}},
  733. fillLvlUpThr =>{a=> 4.0,s=>1 ,l=>4,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"fill level upper threshold"},
  734. fillLvlLoThr =>{a=> 5.0,s=>1 ,l=>4,min=>0 ,max=>255 ,c=>'' ,p=>'y',f=>'' ,u=>'' ,d=>1,t=>"fill level lower threshold"},
  735. #rf_hm-wds100-c6-o-2 r:PEER_NEEDS_BURST l:4 idx:1.0 size:1.0 type:integer log## ty: integer min:0 max:0xff def: uni:
  736. #rf_st_6_sh r:PEER_NEEDS_BURST l:4 idx:1.0 size:0.1 type:integer log## ty: boolean min: max: def:false uni:
  737. #rf_st_6_sh r:EXPECT_AES l:4 idx:1.7 size:0.1 type:integer log## ty: boolean min: max: def:false uni:
  738. #--- list 5,6 parameter for channel -------------- ----
  739. displayMode =>{a=> 1.0,s=>0.1,l=>5,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"" ,lit=>{"temp-only"=>0,"temp-hum"=>1}},
  740. displayTemp =>{a=> 1.1,s=>0.1,l=>5,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"" ,lit=>{actual=>0,setpoint=>1}},
  741. displayTempUnit =>{a=> 1.2,s=>0.1,l=>5,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"" ,lit=>{celsius=>0,fahrenheit=>1}},
  742. controlMode =>{a=> 1.3,s=>0.2,l=>5,min=>0 ,max=>3 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"" ,lit=>{manual=>0,auto=>1,central=>2,party=>3}},
  743. decalcDay =>{a=> 1.5,s=>0.3,l=>5,min=>0 ,max=>7 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"Decalc weekday" ,lit=>{Sat=>0,Sun=>1,Mon=>2,Tue=>3,Wed=>4,Thu=>5,Fri=>6}},
  744. mdTempValve =>{a=> 2.6,s=>0.2,l=>5,min=>0 ,max=>2 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"" ,lit=>{auto=>0,close=>1,open=>2}},
  745. "day-temp" =>{a=> 3 ,s=>0.6,l=>5,min=>6 ,max=>30 ,c=>'' ,p=>'n',f=>2 ,u=>'C' ,d=>1,t=>"comfort or day temperatur"},
  746. "night-temp" =>{a=> 4 ,s=>0.6,l=>5,min=>6 ,max=>30 ,c=>'' ,p=>'n',f=>2 ,u=>'C' ,d=>1,t=>"lower or night temperatur"},
  747. tempWinOpen =>{a=> 5 ,s=>0.6,l=>5,min=>6 ,max=>30 ,c=>'' ,p=>'y',f=>2 ,u=>'C' ,d=>1,t=>"Temperature for Win open"},
  748. "party-temp" =>{a=> 6 ,s=>0.6,l=>5,min=>6 ,max=>30 ,c=>'' ,p=>'n',f=>2 ,u=>'C' ,d=>1,t=>"Temperature for Party"},
  749. decalMin =>{a=> 8 ,s=>0.3,l=>5,min=>0 ,max=>50 ,c=>'' ,p=>'n',f=>0.1 ,u=>'min' ,d=>0,t=>"Decalc min"},
  750. decalHr =>{a=> 8.3,s=>0.5,l=>5,min=>0 ,max=>23 ,c=>'' ,p=>'n',f=>'' ,u=>'h' ,d=>0,t=>"Decalc hour"},
  751. partyEndHr =>{a=> 97 ,s=>0.6,l=>6,min=>0 ,max=>23 ,c=>'' ,p=>'n',f=>'' ,u=>'h' ,d=>1,t=>"Party end hour. Use cmd partyMode to set"},
  752. partyEndMin =>{a=> 97.7,s=>0.1,l=>6,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'min' ,d=>1,t=>"Party end min. Use cmd partyMode to set" ,lit=>{"00"=>0,"30"=>1}},
  753. partyEndDay =>{a=> 98 ,s=>1 ,l=>6,min=>0 ,max=>200 ,c=>'' ,p=>'n',f=>'' ,u=>'d' ,d=>1,t=>"Party duration days. Use cmd partyMode to set"},
  754. #Thermal-cc-VD
  755. valveOffset =>{a=> 9 ,s=>0.5,l=>5,min=>0 ,max=>25 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>1,t=>"Valve offset"}, # size actually 0.5
  756. valveErrorPos =>{a=> 10 ,s=>1 ,l=>5,min=>0 ,max=>99 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>1,t=>"Valve position when error"},# size actually 0.7
  757. dayTemp =>{a=> 1 ,s=>0.6,l=>7,min=>15 ,max=>30 ,c=>'' ,p=>'n',f=>'2' ,u=>'C' ,d=>1,t=>"comfort or day temperatur"},
  758. nightTemp =>{a=> 2 ,s=>0.6,l=>7,min=>5 ,max=>25 ,c=>'' ,p=>'n',f=>'2' ,u=>'C' ,d=>1,t=>"lower or night temperatur"},
  759. tempMin =>{a=> 3 ,s=>0.6,l=>7,min=>4.5 ,max=>14.5 ,c=>'' ,p=>'n',f=>'2' ,u=>'C' ,d=>0,t=>"minimum temperatur"},
  760. tempMax =>{a=> 4 ,s=>0.6,l=>7,min=>15 ,max=>30.5 ,c=>'' ,p=>'n',f=>'2' ,u=>'C' ,d=>0,t=>"maximum temperatur"},
  761. winOpnTempI =>{a=> 5 ,s=>0.6,l=>7,min=>5 ,max=>30 ,c=>'' ,p=>'n',f=>'2' ,u=>'C' ,d=>0,t=>"lowering temp when Window is opened - internal detector"},
  762. winOpnTemp =>{a=> 5 ,s=>0.6,l=>7,min=>5 ,max=>30 ,c=>'' ,p=>'y',f=>'2' ,u=>'C' ,d=>0,t=>"lowering temp when Window is opened"},
  763. winOpnPeriod =>{a=> 6 ,s=>0.4,l=>7,min=>0 ,max=>60 ,c=>'' ,p=>'n',f=>'0.2' ,u=>'min' ,d=>0,t=>"period lowering when window is open"},
  764. decalcWeekday =>{a=> 7 ,s=>0.3,l=>7,min=>0 ,max=>7 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"decalc at day" ,lit=>{Sat=>0,Sun=>1,Mon=>2,Tue=>3,Wed=>4,Thu=>5,Fri=>6}},
  765. decalcTime =>{a=> 8 ,s=>0.6,l=>7,min=>0 ,max=>1410 ,c=>'min2time' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"decalc at hour"},
  766. tempOffset =>{a=> 9 ,s=>0.4,l=>7,min=>0 ,max=>15 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"temperature offset" ,lit=>{"-3.5K"=>0,"-3.0K"=>1,"-2.5K"=>2,"-2.0K"=>3,"-1.5K"=>4,"-1.0K"=>5,"-0.5K"=>6,
  767. "0.0K"=>7, "0.5K"=>8, "1.0K"=>9, "1.5K"=>10, "2.0K"=>11, "2.5K"=>12, "3.0K"=>13, "3.5K"=>14}},
  768. btnNoBckLight =>{a=> 9.4,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"button response without backlight" ,lit=>{off=>0,on=>1}},
  769. showSetTemp =>{a=> 9.5,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"show set or actual temperature" ,lit=>{actTemp=>0,setTemp=>1}},
  770. showHumidity =>{a=> 9.6,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"show temp only or also humidity" ,lit=>{temp=>0,tempHum=>1}},
  771. sendWeatherData =>{a=> 9.7,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"send weather data" ,lit=>{off=>0,on=>1}},
  772. boostPos =>{a=> 10.0,s=>0.5,l=>7,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>'0.2' ,u=>'%' ,d=>1,t=>"valve boost position"},
  773. boostPeriod =>{a=> 10.5,s=>0.3,l=>7,min=>0 ,max=>6 ,c=>'lit' ,p=>'n',f=>'' ,u=>'min' ,d=>0,t=>"boost period [min]" ,lit=>{0=>0,5=>1,10=>2,15=>3,20=>4,25=>5,30=>6}},
  774. valveOffsetRt =>{a=> 11 ,s=>0.7,l=>7,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>1,t=>"offset for valve"},
  775. valveMaxPos =>{a=> 12 ,s=>0.7,l=>7,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>0,t=>"valve maximum position"},
  776. valveErrPos =>{a=> 13 ,s=>0.7,l=>7,min=>0 ,max=>100 ,c=>'' ,p=>'n',f=>'' ,u=>'%' ,d=>0,t=>"valve error position"},
  777. daylightSaveTime=>{a=> 14 ,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"set daylight saving time" ,lit=>{off=>0,on=>1}},
  778. regAdaptive =>{a=> 14.1,s=>0.2,l=>7,min=>0 ,max=>2 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"adaptive regu on or off with default or determined values",lit=>{offDefault=>0,offDeter=>1,on=>2}},
  779. showInfo =>{a=> 14.3,s=>0.2,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"show date or time" ,lit=>{time=>0,date=>1}},
  780. winOpnBoost =>{a=> 14.5,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"boost after window closed" ,lit=>{off=>0,on=>1}},
  781. noMinMax4Manu =>{a=> 14.6,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"min/max is irrelevant for manual mode",lit=>{off=>0,on=>1}},
  782. showWeekday =>{a=> 14.7,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"show weekday" ,lit=>{off=>0,on=>1}},
  783. #hyst2point addr is 15 according to XML - not to my device. add "bug" register justin case
  784. hyst2pointRead =>{a=> 21.0,s=>0.5,l=>7,min=>0 ,max=>2 ,c=>'' ,p=>'y',f=>'10' ,u=>'C' ,d=>1,t=>"hysteresis range",},
  785. hyst2pointWrite =>{a=> 15.0,s=>1 ,l=>7,min=>0 ,max=>2 ,c=>'' ,p=>'y',f=>'10' ,u=>'C' ,d=>1,t=>"hysteresis range",},
  786. heatCool =>{a=> 15.7,s=>0.1,l=>7,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"select heating or cooling" ,lit=>{heating=>0,cooling=>1}},
  787. weekPrgSel =>{a=> 16.0,s=>1.0,l=>7,min=>0 ,max=>2 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"select week program" ,lit=>{prog1=>0,prog2=>1,prog3=>2}},
  788. modePrioParty =>{a=> 18.0,s=>0.3,l=>7,min=>0 ,max=>5 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"allow tempChange for party only by: " ,lit=>{RT_TC_SC_SELF=>0,all=>1,RT_TC_CCU_SELF=>2,CCU=>3,self=>4}},
  789. modePrioManu =>{a=> 18.3,s=>0.3,l=>7,min=>0 ,max=>5 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>"allow tempChange for manual only by: ",lit=>{RT_TC_SC_SELF=>0,all=>1,RT_TC_CCU_SELF=>2,CCU=>3,self=>4}},
  790. winOpnMode =>{a=> 19.5,s=>0.3,l=>7,min=>0 ,max=>4 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"enable internal Window open in modes: ",lit=>{off=>0,auto=>1,auto_manu=>2,auto_party=>3,on=>4}},
  791. winOpnDetFall =>{a=> 19.0,s=>0.5,l=>7,min=>0.5 ,max=>2.5 ,c=>'' ,p=>'n',f=>'10' ,u=>'K' ,d=>0,t=>"detect Window Open if temp falls more then..."},
  792. reguIntI =>{a=>202.0,s=>1 ,l=>7,min=>10 ,max=>20 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"regulator I-param internal mode"},
  793. reguIntP =>{a=>203.0,s=>1 ,l=>7,min=>25 ,max=>35 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"regulator P-param internal mode"},
  794. reguIntPstart =>{a=>204.0,s=>1 ,l=>7,min=>5 ,max=>45 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"regulator P-param internal mode start value"},
  795. reguExtI =>{a=>205.0,s=>1 ,l=>7,min=>10 ,max=>20 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"regulator I-param extern mode"},
  796. reguExtP =>{a=>206.0,s=>1 ,l=>7,min=>25 ,max=>35 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"regulator P-param extern mode"},
  797. reguExtPstart =>{a=>207.0,s=>1 ,l=>7,min=>5 ,max=>45 ,c=>'' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>"regulator P-param extern mode start value"},
  798. );
  799. #'THSensor'
  800. #'thermostat'
  801. #'smokeDetector'
  802. #'sensor'
  803. #'KFM100'
  804. #'AlarmControl'
  805. #'singleButton'
  806. #'outputUnit'
  807. #'repeater'
  808. #'blindActuatorSol'
  809. #'powerMeter'
  810. %culHmRegGeneral = (
  811. pairCentral =>1
  812. ,sign =>1
  813. );
  814. %culHmRegType = (
  815. swi =>{ peerNeedsBurst =>1,expectAES =>1}
  816. ,remote =>{ peerNeedsBurst =>1,expectAES =>1,dblPress =>1,longPress =>1}
  817. ,blindActuator =>{ intKeyVisib =>1
  818. ,driveUp =>1,driveDown =>1,driveTurn =>1,refRunCounter =>1
  819. ,confBtnTime =>1,localResDis =>1
  820. ,transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1
  821. ,MaxTimeF =>1
  822. ,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  823. ,OffLevel =>1,OnLevel =>1
  824. ,ActionType =>1,OnTimeMode =>1,OffTimeMode =>1,DriveMode =>1
  825. ,BlJtOn =>1,BlJtOff =>1,BlJtDlyOn =>1,BlJtDlyOff =>1
  826. ,BlJtRampOn =>1,BlJtRampOff =>1,BlJtRefOn =>1,BlJtRefOff =>1
  827. ,CtValLo =>1,CtValHi =>1
  828. ,CtOn =>1,CtDlyOn =>1,CtRampOn =>1,CtRefOn =>1
  829. ,CtOff =>1,CtDlyOff =>1,CtRampOff =>1,CtRefOff =>1
  830. ,lgMultiExec =>1,shMultiExec =>1
  831. }
  832. ,dimmer =>{ intKeyVisib =>1
  833. ,transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1
  834. ,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  835. ,OffDlyBlink =>1,OnLvlPrio =>1,OnDlyMode =>1
  836. ,ActionTypeDim =>1,OnTimeMode =>1,OffTimeMode =>1
  837. ,OffLevel =>1,OnMinLevel =>1,OnLevel =>1
  838. ,RampSstep =>1,RampOnTime =>1,RampOffTime =>1
  839. ,DimMinLvl =>1,DimMaxLvl =>1,DimStep =>1
  840. ,DimJtOn =>1,DimJtOff =>1,DimJtDlyOn =>1
  841. ,DimJtDlyOff =>1,DimJtRampOn =>1,DimJtRampOff =>1
  842. ,CtValLo =>1,CtValHi =>1
  843. ,CtOn =>1,CtDlyOn =>1,CtRampOn =>1
  844. ,CtOff =>1,CtDlyOff =>1,CtRampOff =>1
  845. ,OffDlyStep =>1,OffDlyNewTime =>1,OffDlyOldTime =>1
  846. ,lgMultiExec =>1,shMultiExec =>1
  847. }
  848. ,switch =>{ intKeyVisib =>1,
  849. ,OnTime =>1,OffTime =>1,OnDly =>1,OffDly =>1
  850. ,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
  851. ,CtValLo =>1,CtValHi =>1
  852. ,CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1
  853. ,ActionType =>1,OnTimeMode =>1,OffTimeMode =>1
  854. ,lgMultiExec =>1,shMultiExec =>1
  855. }
  856. ,winMatic =>{ intKeyVisib =>1,signal =>1,signalTone =>1,keypressSignal =>1}
  857. ,keyMatic =>{ signal =>1,signalTone =>1,keypressSignal =>1
  858. ,holdTime =>1,holdPWM =>1,setupDir =>1,setupPosition =>1
  859. ,angelOpen =>1,angelMax =>1,angelLocked =>1
  860. ,ledFlashUnlocked=>1,ledFlashLocked =>1
  861. ,CtValLo =>1,CtValHi =>1
  862. ,CtOn =>1,CtOff =>1
  863. ,ActionType =>1
  864. ,KeyJtOn =>1,KeyJtOff =>1
  865. ,OnTime =>1
  866. }
  867. ,motionDetector =>{ evtFltrPeriod =>1,evtFltrNum =>1,minInterval =>1
  868. ,captInInterval =>1,brightFilter =>1,ledOnTime =>1
  869. ,peerNeedsBurst =>1
  870. }
  871. ###motionAndBtn#########################
  872. ,threeStateSensor =>{ cyclicInfoMsg =>1, transmDevTryMax =>1
  873. , transmitTryMax =>1
  874. ,peerNeedsBurst =>1,expectAES =>1
  875. }
  876. ,sensRain =>{ transmDevTryMax =>1,localResDis =>1}
  877. ,tipTronic =>{ cyclicInfoMsg =>1,cyclicInfoMsgDis=>1,localResDis =>1,RS485IdleTime =>1}
  878. ,senBright =>{ cyclicInfoMsgDis=>1,localResDis =>1,transmDevTryMax =>1}
  879. ,powerMeter =>{ intKeyVisib =>1
  880. ,confBtnTime =>1,localResDis =>1
  881. ,transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1}
  882. ,outputUnit =>{ intKeyVisib =>1}
  883. ,powerSensor =>{ transmitTryMax =>1,transmDevTryMax =>1
  884. ,mtrType =>1,mtrConstIr =>1,mtrConstGas =>1,mtrConstLed =>1
  885. ,mtrSensIr =>1
  886. ,baudrate =>1,serialFormat =>1,powerMode =>1
  887. ,protocolMode =>1,samplPerCycl =>1
  888. }
  889. ,siren =>{ intKeyVisib =>1
  890. ,transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1
  891. ,alarmTimeMax =>1,cyclicInfoMsg =>1,sabotageMsg =>1,signalTone =>1
  892. ,lowBatLimitRT =>1,localResDis =>1,lowBatSignal =>1
  893. ,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  894. ,OnTimeMode =>1,OffTimeMode =>1
  895. ,ActionType =>1
  896. ,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
  897. ,CtValLo =>1,CtValHi =>1
  898. ,CtOn =>1,CtDlyOn =>1
  899. ,CtOff =>1,CtDlyOff =>1
  900. ,lgMultiExec =>1,shMultiExec =>1
  901. }
  902. ,rgb =>{ intKeyVisib =>1,localResDis =>1}
  903. );
  904. #clones - - - - - - - - - - - - - - -
  905. $culHmRegType{pushButton} = $culHmRegType{remote};
  906. %culHmRegModel = (
  907. "HM-RC-12" =>{ backAtKey =>1, backAtMotion =>1, backOnTime =>1}
  908. ,"HM-RC-19" =>{ backAtKey =>1, backAtMotion =>1, backOnTime =>1,backAtCharge =>1,language =>1}
  909. ,"HM-RC-4-2" =>{ localResDis =>1}
  910. ,"HM-LC-Dim1L-Pl" =>{ confBtnTime =>1,loadAppearBehav =>1,loadErrCalib =>1}
  911. ,"HM-HM-LC-DW-WM" =>{ confBtnTime =>1,
  912. ,transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1
  913. ,logicCombination=>1
  914. ,speedMultiply =>1
  915. ,ActionTypeDim =>1,
  916. ,CtValLo =>1,CtValHi =>1
  917. ,CtOn =>1,CtDlyOn =>1,CtRampOn =>1
  918. ,CtOff =>1,CtDlyOff =>1,CtRampOff =>1
  919. ,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  920. ,OnTimeMode =>1,OffTimeMode =>1,OnDlyMode =>1
  921. ,OffDlyBlink =>1,OnLvlPrio =>1
  922. ,DimJtOn =>1,DimJtDlyOn =>1,DimJtRampOff =>1
  923. ,DimJtOff =>1,DimJtDlyOff =>1,DimJtRampOn =>1
  924. ,OffLevel =>1,OnMinLevel =>1,OnLevel =>1
  925. ,RampSstep =>1,RampOnTime =>1,RampOffTime =>1
  926. ,DimMinLvl =>1,DimMaxLvl =>1,DimStep =>1
  927. ,OffDlyStep =>1,OffDlyNewTime =>1,OffDlyOldTime =>1
  928. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  929. ,DimElsActionType=>1
  930. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  931. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  932. ,lgMultiExec =>1,shMultiExec =>1
  933. }
  934. ,"HM-LC-Dim1L-CV-2" =>{ confBtnTime =>1,loadAppearBehav =>1,loadErrCalib =>1
  935. ,logicCombination=>1
  936. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  937. ,DimElsActionType=>1
  938. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  939. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  940. }
  941. ,"HM-LC-Dim1PWM-CV" =>{ confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1
  942. ,characteristic =>1,localResDis =>1
  943. ,logicCombination=>1,speedMultiply =>1
  944. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  945. ,DimElsActionType=>1
  946. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  947. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  948. }
  949. ,"HM-LC-Dim1T-DR" =>{ confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1
  950. ,fuseDelay =>1,localResDis =>1,logicCombination=>1
  951. }
  952. ,"HM-LC-DIM1T-PL" =>{ confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1
  953. ,fuseDelay =>1,localResDis =>1
  954. ,logicCombination=>1
  955. }
  956. ,"HM-LC-Dim1TPBU-FM" =>{ ovrTempLvl =>1,redTempLvl =>1,redLvl =>1
  957. ,fuseDelay =>1,localResDis =>1
  958. ,logicCombination=>1
  959. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  960. ,DimElsActionType=>1
  961. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  962. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  963. }
  964. ,"OLIGO-smart-iq-HM" =>{ confBtnTime =>1,
  965. ,characteristic =>1,localResDis =>1
  966. ,logicCombination=>1,speedMultiply =>1
  967. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  968. ,DimElsActionType=>1
  969. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  970. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  971. }
  972. ,"HM-CC-VD" =>{ valveOffset =>1,valveErrorPos =>1}
  973. ,"HM-CC-TC" =>{ burstRx =>1,backlOnTime =>1,backlOnMode =>1,btnLock =>1}
  974. ,"HM-CC-RT-DN" =>{ btnLock =>1,localResDis =>1,globalBtnLock =>1,modusBtnLock =>1
  975. ,cyclicInfoMsg =>1,cyclicInfoMsgDis=>1
  976. ,burstRx =>1,lowBatLimitRT =>1,backOnTime =>1
  977. }
  978. ,"HM-MOD-Em-8" =>{ lowBatLimitBA2 =>1,transmDevTryMax =>1,localResDis =>1
  979. ,ledMode =>1
  980. ,transmitTryMax =>1,eventFilterTime =>1
  981. ,msgScPosA =>1,msgScPosB =>1
  982. ,triggerMode =>1
  983. }
  984. ,"HM-MOD-EM-8Bit" =>{ lowBatLimitBA2 =>1,transmDevTryMax =>1,localResDis =>1
  985. ,ledMode =>1
  986. ,transmitTryMax =>1,eventFilterTime =>1
  987. }
  988. ,"HM-PB-4DIS-WM" =>{ peerNeedsBurst =>1,expectAES =>1,language =>1,stbyTime =>1}
  989. ,"HM-Dis-WM55" =>{ intKeyVisib =>1,stbyTime =>1,language =>1,localResDis =>1}
  990. ,"HM-Dis-EP-WM55" =>{ intKeyVisib =>1,transmDevTryMax =>1
  991. ,powerSupply =>1,localResDis =>1,wakeupBehavior =>1
  992. ,wakeupBehavMsg =>1,wakeupBehavMsg_R=>1,statMsgTxtAlign =>1
  993. ,displayInvert =>1}
  994. ,"HM-WDS100-C6-O" =>{ burstRx =>1,sunThresh =>1,stormUpThresh =>1,stormLowThresh =>1}
  995. ,"HM-WDS100-C6-O-2" =>{ burstRx =>1,sunThresh =>1,stormUpThresh =>1,stormLowThresh =>1
  996. ,windSpeedRsltSrc=>1,peerNeedsBurst =>1,localResDis =>1,cyclicInfoMsgDis=>1}
  997. ,"HM-OU-LED16" =>{ brightness =>1,energyOpt =>1,localResDis =>1}
  998. ,"HM-OU-CFM-PL" =>{ localResetDis =>1
  999. ,OnTime =>1,OffTime =>1,OnDly =>1,OffDly =>1
  1000. ,OnTimeMode =>1,OffTimeMode =>1,
  1001. ,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
  1002. ,CtValLo =>1,CtValHi =>1
  1003. ,CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1
  1004. ,ActionType =>1,ActNum =>1,lgMultiExec =>1,shMultiExec =>1
  1005. }
  1006. ,"HM-OU-CF-PL" =>{ ActTypeOuCf =>1,ActNum =>1}
  1007. ,"HM-OU-CM-PCB" =>{ localResetDis =>1,
  1008. ,OnTime =>1,OffTime =>1,OnDly =>1,OffDly =>1
  1009. ,OnTimeMode =>1,OffTimeMode =>1,
  1010. ,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
  1011. ,CtValLo =>1,CtValHi =>1
  1012. ,CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1
  1013. ,ActionType =>1
  1014. ,ActTypeMp3 =>1,ActNum =>1,Intense =>1,lgMultiExec =>1,shMultiExec =>1
  1015. }
  1016. ,"HM-SEC-MDIR" =>{ sabotageMsg =>1}
  1017. ,"HM-CC-SCD" =>{ peerNeedsBurst =>1,expectAES =>1
  1018. , transmitTryMax =>1,evtFltrTime =>1
  1019. ,msgScdPosA =>1,msgScdPosB =>1,msgScdPosC =>1,msgScdPosD =>1}
  1020. ,"HM-SEC-RHS" =>{ msgRhsPosA =>1,msgRhsPosB =>1,msgRhsPosC =>1
  1021. , ledOnTime =>1,eventDlyTime =>1}
  1022. ,"HM-SEC-SC" =>{ sabotageMsg =>1
  1023. ,msgScPosA =>1,msgScPosB =>1
  1024. , ledOnTime =>1,eventDlyTime =>1}
  1025. ,"HM-SEC-SCo" =>{ sabotageMsg =>1,localResDis =>1,
  1026. ,msgScPosA =>1,msgScPosB =>1,eventDlyTime =>1}
  1027. ,"HM-SCI-3-FM" =>{ msgScPosA =>1,msgScPosB =>1
  1028. , eventDlyTime =>1}
  1029. ,"HM-SEC-TIS" =>{ sabotageMsg =>1
  1030. ,msgScPosA =>1,msgScPosB =>1
  1031. , ledOnTime =>1,eventFilterTime =>1}
  1032. ,"HM-SEC-WDS" =>{ msgWdsPosA =>1,msgWdsPosB =>1,msgWdsPosC =>1
  1033. , eventFilterTimeB=>1}
  1034. ,"HM-SEC-SFA-SM" =>{ cyclicInfoMsg =>1,sabotageMsg =>1,transmDevTryMax =>1
  1035. ,lowBatLimit =>1,batDefectLimit =>1
  1036. , transmitTryMax =>1}
  1037. ,"HM-Dis-TD-T" =>{ lowBatLimitFS =>1,ledMode =>1}
  1038. ,"HM-RC-Dis-H-x-EU" =>{ localResetDis =>1,stbyTime2 =>1,language =>1
  1039. ,wakeupDefChan =>1,wakeupBehavior =>1}
  1040. ,"HM-LC-Sw1-PL" =>{ confBtnTime =>1,localResDis =>1
  1041. ,transmitTryMax =>1,powerUpAction =>1,statusInfoMinDly=>1,statusInfoRandom=>1
  1042. }
  1043. ,"HM-LC-Sw1PBU-FM" =>{ localResDis =>1
  1044. ,transmitTryMax =>1,powerUpAction =>1,statusInfoMinDly=>1,statusInfoRandom=>1
  1045. }
  1046. ,"HM-LC-SW1-BA-PCB" =>{ lowBatLimitBA =>1,ledMode =>1}
  1047. ,"HM-LC-SW4-BA-PCB" =>{ lowBatLimitBA =>1,ledMode =>1,localResDis =>1}
  1048. ,"HM-Sen-DB-PCB" =>{ ledMode =>1}
  1049. ,"HM-MOD-Re-8" =>{ lowBatLimitBA3 =>1,ledMode =>1}
  1050. ,"HM-Sys-sRP-Pl" =>{ compMode =>1}
  1051. ,"KFM-Display" =>{ CtDlyOn =>1,CtDlyOff =>1
  1052. ,CtOn =>1,CtOff =>1,CtRampOn =>1,CtRampOff =>1
  1053. ,CtValLo =>1,CtValHi =>1
  1054. ,ActionType =>1,OffTimeMode =>1,OnTimeMode =>1
  1055. ,DimJtOn =>1,DimJtOff =>1,DimJtDlyOn =>1,DimJtDlyOff =>1
  1056. ,DimJtRampOn =>1,DimJtRampOff =>1
  1057. ,lgMultiExec =>1,shMultiExec =>1
  1058. }
  1059. ,"HM-Sen-Wa-Od" =>{ cyclicInfoMsgDis=>1, transmDevTryMax =>1,localResDis =>1
  1060. , ledOnTime =>1,transmitTryMax =>1
  1061. ,waterUppThr =>1,waterlowThr =>1,caseDesign =>1,caseHigh =>1
  1062. ,fillLevel =>1,caseWidth =>1,caseLength =>1,meaLength =>1
  1063. ,useCustom =>1,
  1064. ,fillLvlUpThr =>1,fillLvlLoThr =>1
  1065. ,expectAES =>1,peerNeedsBurst =>1
  1066. }
  1067. ,"HM-WDS10-TH-O" =>{ burstRx =>1}
  1068. ,"HM-WDS30-OT2-SM" =>{ burstRx =>1,cyclicInfoMsgDis=>1,localResDis =>1,paramSel =>1}
  1069. ,"HM-TC-IT-WM-W-EU" =>{ burstRx =>1,cyclicInfoMsgDis=>1,localResDis =>1,cyclicInfoMsg =>1
  1070. ,btnLock =>1,globalBtnLock =>1,modusBtnLock =>1,lowBatLimitRT =>1
  1071. }
  1072. ,"HM-SEN-EP" =>{ seqPulse1 =>1,seqPulse2 =>1,seqPulse3 =>1,seqPulse4 =>1
  1073. ,seqPulse5 =>1,seqTolerance =>1
  1074. ,peerNeedsBurst =>1
  1075. }
  1076. ,"HM-SEC-SD-2" =>{ devRepeatCntMax =>1}
  1077. ,"HM-LC-AO-SM" =>{ voltage_0 =>1,voltage_100 =>1,relayDelay =>1}
  1078. ,"HM-LC-Ja1PBU-FM" =>{ refRunTimeSlats =>1,posSaveTime =>1}
  1079. );
  1080. #clones - - - - - - - - - - - - - - -
  1081. $culHmRegModel{"HM-LC-SW1-PL2"} =
  1082. $culHmRegModel{"HM-LC-SW1-SM"} =
  1083. $culHmRegModel{"HM-LC-SW2-SM"} =
  1084. $culHmRegModel{"HM-LC-SW4-SM"} =
  1085. $culHmRegModel{"HM-LC-SW4-PCB"} =
  1086. $culHmRegModel{"HM-LC-SW4-WM"} =
  1087. $culHmRegModel{"HM-LC-SW1-FM"} =
  1088. $culHmRegModel{"Schueco_263-130"} =
  1089. $culHmRegModel{"HM-LC-SW2-FM"} =
  1090. $culHmRegModel{"HM-LC-SW1-PB-FM"} =
  1091. $culHmRegModel{"HM-LC-SW2-PB-FM"} =
  1092. $culHmRegModel{"HM-LC-SW4-DR"} =
  1093. $culHmRegModel{"HM-LC-SW2-DR"} =
  1094. $culHmRegModel{"ROTO_ZEL-STG-RM-FZS"} =
  1095. $culHmRegModel{"ROTO_ZEL-STG-RM-FZS-2"} =
  1096. $culHmRegModel{"HM-LC-Sw1-Pl-3"} =
  1097. $culHmRegModel{"HM-LC-Sw4-SM-2"} =
  1098. $culHmRegModel{"HM-LC-Sw4-PCB-2"} =
  1099. $culHmRegModel{"HM-LC-Sw4-WM-2"} =
  1100. $culHmRegModel{"HM-LC-Sw2-FM-2"} =
  1101. $culHmRegModel{"HM-LC-Sw4-DR-2"} = $culHmRegModel{"HM-LC-Sw1-PL"};
  1102. $culHmRegModel{"HM-SEC-SC-2"} =
  1103. $culHmRegModel{"Roto_ZEL-STG-RM-FFK"} = $culHmRegModel{"HM-SEC-SC"};
  1104. $culHmRegModel{"HM-LC-Dim1L-Pl-2"} =
  1105. $culHmRegModel{"HM-LC-DIM1L-CV"} =
  1106. $culHmRegModel{"Schueco-263-132"} =
  1107. $culHmRegModel{"HM-LC-DIM2L-CV"} =
  1108. $culHmRegModel{"HM-LC-DIM2L-SM"} = $culHmRegModel{"HM-LC-Dim1L-Pl"};
  1109. $culHmRegModel{"HM-LC-Dim1L-Pl-644"} =
  1110. $culHmRegModel{"HM-LC-Dim1L-CV-644"} =
  1111. $culHmRegModel{"HM-LC-Dim1L-Pl-3"} = $culHmRegModel{"HM-LC-Dim1L-CV-2"};
  1112. $culHmRegModel{"HM-LC-Dim1T-FM-LF"} =
  1113. $culHmRegModel{"Schueco-263-134"} = $culHmRegModel{"HM-LC-DIM1T-PL"};
  1114. $culHmRegModel{"ASH550I"} =
  1115. $culHmRegModel{"ASH550"} =
  1116. $culHmRegModel{"Schueco_263-158"} =
  1117. $culHmRegModel{"HM-WDS20-TH-O"} =
  1118. $culHmRegModel{"HM-WDS40-TH-I"} =
  1119. $culHmRegModel{"Schueco_263-157"} =
  1120. $culHmRegModel{"IS-WDS-TH-OD-S-R3"} = $culHmRegModel{"HM-WDS10-TH-O"};
  1121. $culHmRegModel{"HM-PB-4DIS-WM-2"} =
  1122. $culHmRegModel{"ROTO_ZEL-STG-RM-DWT-10"}= $culHmRegModel{"HM-PB-4DIS-WM"};
  1123. $culHmRegModel{"HM-RC-Sec4-2"} =
  1124. $culHmRegModel{"HM-RC-Key4-2"} = $culHmRegModel{"HM-RC-4-2"};
  1125. $culHmRegModel{"Schueco_263-131"} = #rf_s_1conf_644
  1126. $culHmRegModel{"HM-LC-Bl1PBU-FM"} = $culHmRegModel{"HM-LC-Sw1PBU-FM"};
  1127. $culHmRegModel{"HM-SEC-WDS-2"} = $culHmRegModel{"HM-SEC-WDS"};
  1128. $culHmRegModel{"ROTO_ZEL-STG-RM-FWT"} = $culHmRegModel{"HM-CC-TC"};
  1129. $culHmRegModel{"ROTO_ZEL-STG-RM-FSA"} = $culHmRegModel{"HM-CC-VD"};
  1130. $culHmRegModel{"HM-OU-CFM-TW"} = $culHmRegModel{"HM-OU-CFM-PL"};
  1131. %culHmRegChan = (# if channelspecific then enter them here
  1132. "HM-CC-TC02" =>{ displayMode =>1,displayTemp =>1,displayTempUnit =>1
  1133. ,controlMode =>1,decalcDay =>1
  1134. ,"day-temp" =>1,"night-temp" =>1,"party-temp" =>1
  1135. ,mdTempValve =>1,partyEndDay =>1
  1136. ,partyEndMin =>1,partyEndHr =>1
  1137. ,decalHr =>1,decalMin =>1
  1138. }
  1139. ,"HM-CC-TC03" =>{ tempWinOpen =>1 } #window channel
  1140. ,"HM-RC-1912" =>{ msgShowTime =>1, beepAtAlarm =>1, beepAtService =>1,beepAtInfo =>1
  1141. ,backlAtAlarm =>1, backlAtService =>1, backlAtInfo =>1
  1142. }
  1143. ,"HM-RC-1901" =>{ lcdSymb =>1, lcdLvlInterp =>1}
  1144. ,"HM-OU-CFM-PL01" =>{ ActTypeLed =>1}
  1145. ,"HM-OU-CFM-PL02" =>{ ActTypeMp3 =>1,Intense =>1}
  1146. ,"HM-SEC-WIN01" =>{ setupDir =>1,pullForce =>1,pushForce =>1,tiltMax =>1
  1147. ,CtValLo =>1,CtValHi =>1
  1148. ,CtOn =>1,CtOff =>1,CtRampOn =>1,CtRampOff =>1
  1149. ,WinJtOn =>1,WinJtOff =>1,WinJtRampOn =>1,WinJtRampOff =>1
  1150. ,OnTime =>1,OffTime =>1,OffLevelKm =>1,OnLevelKm =>1
  1151. ,RampOnSp =>1,RampOffSp =>1
  1152. }
  1153. ,"WDF-solar01" =>{ WinJtOn =>1,WinJtOff =>1,WinJtRampOn =>1,WinJtRampOff =>1
  1154. ,OffLevel =>1,OnLevel =>1
  1155. ,CtValLo =>1,CtValHi =>1
  1156. ,CtOn =>1,CtOff =>1,CtRampOn =>1,CtRampOff =>1
  1157. ,RampOnSp =>1,RampOffSp =>1
  1158. ,OnTime =>1,OffTime =>1
  1159. }
  1160. ,"Schueco_263-xxx01" =>{ statusInfoMinDly=>1,statusInfoRandom=>1,
  1161. ,#no long here!!!
  1162. ,shCtValLo =>1,shCtValHi =>1
  1163. ,shCtOn =>1,shCtDlyOn =>1,shCtOff =>1,shCtDlyOff =>1
  1164. ,shOnTime =>1,shOffTime =>1,shOnDly =>1,shOffDly =>1
  1165. ,shActionTypeDim =>1,shOnTimeMode =>1,shOffTimeMode =>1
  1166. ,shDimJtOn =>1,shDimJtOff =>1,shDimJtDlyOn =>1
  1167. ,shDimJtDlyOff =>1,shDimJtRampOn =>1,shDimJtRampOff =>1
  1168. ,shOnLevel =>1
  1169. }
  1170. ,"Schueco_263-xxx02" =>{ transmitTryMax =>1,eventDlyTime =>1}
  1171. ,"Schueco_263-xxx03" =>{ ttJtOn =>1,ttJtOff =>1}
  1172. ,"HM-Sen-RD-O01" =>{ eventFilterTimeB=>1,transmitTryMax =>1,peerNeedsBurst =>1,expectAES =>1
  1173. ,cndTxThrhHi =>1,cndTxThrhLo =>1,highHoldTime =>1,evntRelFltTime =>1
  1174. }
  1175. ,"HM-CC-RT-DN03" =>{ shCtValLo =>1
  1176. ,winOpnTemp =>1}
  1177. ,"HM-CC-RT-DN04" =>{ btnNoBckLight =>1
  1178. ,dayTemp =>1,nightTemp =>1,tempMin =>1,tempMax =>1
  1179. ,tempOffset =>1
  1180. ,decalcWeekday =>1,decalcTime =>1
  1181. ,boostPos =>1,boostPeriod =>1
  1182. ,daylightSaveTime=>1,regAdaptive =>1
  1183. ,showInfo =>1,noMinMax4Manu =>1,showWeekday =>1
  1184. ,valveOffsetRt =>1,valveMaxPos =>1,valveErrPos =>1
  1185. ,modePrioManu =>1,modePrioParty =>1
  1186. ,reguIntI =>1,reguIntP =>1,reguIntPstart =>1
  1187. ,reguExtI =>1,reguExtP =>1,reguExtPstart =>1
  1188. ,winOpnTempI =>1,winOpnPeriod =>1,winOpnBoost =>1,winOpnMode =>1
  1189. ,winOpnDetFall =>1
  1190. }
  1191. ,"HM-CC-RT-DN06" =>{ CtrlRc =>1,TempRC =>1}
  1192. ,"HM-TC-IT-WM-W-EU02"=>{ dayTemp =>1,nightTemp =>1,tempMin =>1,tempMax =>1,tempOffset =>1
  1193. ,heatCool =>1,boostPeriod =>1,winOpnBoost =>1
  1194. ,showWeekday =>1,showInfo =>1,showSetTemp =>1,showHumidity =>1
  1195. ,noMinMax4Manu =>1,daylightSaveTime=>1,sendWeatherData =>1
  1196. ,modePrioParty =>1,modePrioManu =>1,weekPrgSel =>1
  1197. }
  1198. ,"HM-TC-IT-WM-W-EU07"=>{ hyst2pointWrite =>1,hyst2pointRead =>1}
  1199. ,"HM-ES-PMSw1-Pl01" =>{ OnTime =>1,OffTime =>1,OnDly =>1,OffDly =>1
  1200. ,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
  1201. ,CtValLo =>1,CtValHi =>1
  1202. ,CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1
  1203. ,ActionType =>1,OnTimeMode =>1,OffTimeMode =>1
  1204. ,lgMultiExec =>1,shMultiExec =>1,powerUpAction =>1
  1205. }
  1206. ,"HM-Sec-Sir-WM01" =>{ soundId =>1}
  1207. ,"HM-Sec-Sir-WM04" =>{ OnLevel =>1
  1208. ,acusticMultiDly =>1,acusticArmSens =>1,acusticArmDly =>1,acusticExtArm =>1,acusticExtDly =>1,acusticDisArm =>1
  1209. ,opticMultiDly =>1,opticArmSens =>1,opticArmDly =>1,opticExtArm =>1,opticExtDly =>1,opticDisArm =>1
  1210. ,OnLevelArm =>1
  1211. }
  1212. ,"HM-ES-PMSw1-Pl02" =>{ averaging =>1
  1213. ,txMinDly =>1,txThrPwr =>1,txThrCur =>1,txThrVlt =>1,txThrFrq =>1
  1214. }
  1215. ,"HM-ES-PMSw1-Pl03" =>{ txThrLoPwr =>1,txThrHiPwr =>1,peerNeedsBurst =>1,expectAES =>1
  1216. ,ledOnTime =>1,transmitTryMax =>1,
  1217. ,cndTxFalling =>1,cndTxRising =>1,
  1218. ,cndTxCycBelow =>1,cndTxCycAbove =>1,cndTxDecAbove =>1,cndTxDecBelow =>1,
  1219. }
  1220. ,"HM-ES-PMSw1-Pl04" =>{ txThrLoCur =>1,txThrHiCur =>1,peerNeedsBurst =>1,expectAES =>1
  1221. ,ledOnTime =>1,transmitTryMax =>1,
  1222. ,cndTxFalling =>1,cndTxRising =>1,
  1223. ,cndTxCycBelow =>1,cndTxCycAbove =>1,cndTxDecAbove =>1,cndTxDecBelow =>1,
  1224. }
  1225. ,"HM-ES-PMSw1-Pl05" =>{ txThrLoVlt =>1,txThrHiVlt =>1,peerNeedsBurst =>1,expectAES =>1
  1226. ,ledOnTime =>1,transmitTryMax =>1,
  1227. ,cndTxFalling =>1,cndTxRising =>1,
  1228. ,cndTxCycBelow =>1,cndTxCycAbove =>1,cndTxDecAbove =>1,cndTxDecBelow =>1,
  1229. }
  1230. ,"HM-ES-PMSw1-Pl06" =>{ txThrLoFrq =>1,txThrHiFrq =>1,peerNeedsBurst =>1,expectAES =>1
  1231. ,ledOnTime =>1,transmitTryMax =>1,
  1232. ,cndTxFalling =>1,cndTxRising =>1,
  1233. ,cndTxCycBelow =>1,cndTxCycAbove =>1,cndTxDecAbove =>1,cndTxDecBelow =>1,
  1234. }
  1235. ,"HM-Sen-MDIR-WM5500"=>{ intKeyVisib =>1,cyclicInfoMsg =>1,localResDis =>1,transmDevTryMax =>1}
  1236. ,"HM-Sen-MDIR-WM5501"=>{ peerNeedsBurst =>1,expectAES =>1,dblPress =>1,longPress =>1
  1237. ,ledOnTime =>1,transmitTryMax =>1,localResDis =>1
  1238. }
  1239. ,"HM-LC-RGBW-WM01" =>{ OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  1240. ,OffDlyBlink =>1,OnLvlPrio =>1,OnDlyMode =>1
  1241. ,ActionTypeDim =>1,OnTimeMode =>1,OffTimeMode =>1
  1242. ,OffLevel =>1,OnMinLevel =>1,OnLevel =>1
  1243. ,RampSstep =>1,RampOnTime =>1,RampOffTime =>1
  1244. ,DimMinLvl =>1,DimMaxLvl =>1,DimStep =>1
  1245. ,DimJtOn =>1,DimJtDlyOn =>1,DimJtRampOff =>1
  1246. ,DimJtOff =>1,DimJtDlyOff =>1,DimJtRampOn =>1
  1247. ,CtValLo =>1,CtValHi =>1
  1248. ,CtOn =>1,CtDlyOn =>1,CtRampOn =>1
  1249. ,CtOff =>1,CtDlyOff =>1,CtRampOff =>1
  1250. ,OffDlyStep =>1,OffDlyNewTime =>1,OffDlyOldTime =>1
  1251. ,lgMultiExec =>1,shMultiExec =>1
  1252. }
  1253. ,"HM-LC-RGBW-WM02" =>{ ActHsvCol =>1,waRed =>1,waGreen =>1,waBlue =>1}
  1254. ,"HM-LC-RGBW-WM03" =>{ ActColPrgm =>1,ActMinBoarder =>1,ActMaxBoarder =>1,colChangeSpeed =>1}
  1255. ,"HM-HM-LC-DW-WM01" =>{ characteristic =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1}
  1256. ,"HM-HM-LC-DW-WM02" =>{ characteristic =>1,charactLvlLimit =>1,charactColAssign=>1,charactBase =>1}
  1257. ,"HM-Sen-LI-O00" =>{ txMinDly =>1,txThresPercent =>1}
  1258. ,"SensoTimer-ST-601" =>{ humDesVal =>1,watDuration =>1,eco_days =>1,
  1259. ,wat1_hour =>1,wat1_min =>1,
  1260. ,wat2_hour =>1,wat2_min =>1,
  1261. }
  1262. ,"HM-Dis-EP-WM5501" =>{ transmitTryMax =>1,peerNeedsBurst =>1,expectAES =>1}
  1263. ,"HM-Dis-EP-WM5503" =>{ transmitTryMax =>1}
  1264. ,"HM-MOD-EM-8Bit03" =>{ dataTransCond =>1,stabFltTime =>1
  1265. ,dInProp0 =>1,dInProp1 =>1,dInProp2 =>1,dInProp3 =>1
  1266. ,dInProp4 =>1,dInProp5 =>1,dInProp6 =>1,dInProp7 =>1
  1267. }
  1268. ,"HM-DW01" =>{ intKeyVisib =>1
  1269. ,transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1
  1270. ,logicCombination=>1
  1271. ,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  1272. ,OffDlyBlink =>1,OnLvlPrio =>1,OnDlyMode =>1
  1273. ,ActionTypeDim =>1,OnTimeMode =>1,OffTimeMode =>1
  1274. ,OffLevel =>1,OnMinLevel =>1,OnLevel =>1
  1275. ,RampSstep =>1,RampOnTime =>1,RampOffTime =>1
  1276. ,DimMinLvl =>1,DimMaxLvl =>1,DimStep =>1
  1277. ,DimJtOn =>1,DimJtOff =>1,DimJtDlyOn =>1
  1278. ,DimJtDlyOff =>1,DimJtRampOn =>1,DimJtRampOff =>1
  1279. ,CtValLo =>1,CtValHi =>1
  1280. ,CtOn =>1,CtDlyOn =>1,CtRampOn =>1
  1281. ,CtOff =>1,CtDlyOff =>1,CtRampOff =>1
  1282. ,OffDlyStep =>1,OffDlyNewTime =>1,OffDlyOldTime =>1
  1283. ,lgMultiExec =>1,shMultiExec =>1
  1284. ,confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1
  1285. ,characteristic =>1,localResDis =>1
  1286. ,speedMultiply =>1
  1287. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  1288. ,DimElsActionType=>1
  1289. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  1290. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  1291. }
  1292. ,"HM-DW02" =>{ characteristic =>1,charactLvlLimit =>1,charactColAssign=>1,charactBase =>1
  1293. ,transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1
  1294. ,logicCombination=>1
  1295. ,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  1296. ,OffDlyBlink =>1,OnLvlPrio =>1,OnDlyMode =>1
  1297. ,ActionTypeDim =>1,OnTimeMode =>1,OffTimeMode =>1
  1298. ,OffLevel =>1,OnMinLevel =>1,OnLevel =>1
  1299. ,RampSstep =>1,RampOnTime =>1,RampOffTime =>1
  1300. ,DimMinLvl =>1,DimMaxLvl =>1,DimStep =>1
  1301. ,DimJtOn =>1,DimJtOff =>1,DimJtDlyOn =>1
  1302. ,DimJtDlyOff =>1,DimJtRampOn =>1,DimJtRampOff =>1
  1303. ,CtValLo =>1,CtValHi =>1
  1304. ,CtOn =>1,CtDlyOn =>1,CtRampOn =>1
  1305. ,CtOff =>1,CtDlyOff =>1,CtRampOff =>1
  1306. ,OffDlyStep =>1,OffDlyNewTime =>1,OffDlyOldTime =>1
  1307. ,lgMultiExec =>1,shMultiExec =>1
  1308. ,confBtnTime =>1,localResDis =>1
  1309. ,speedMultiply =>1
  1310. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  1311. ,DimElsActionType=>1
  1312. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  1313. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  1314. }
  1315. ,"HM-DW03" =>{ transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1
  1316. ,logicCombination=>1
  1317. ,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  1318. ,OffDlyBlink =>1,OnLvlPrio =>1,OnDlyMode =>1
  1319. ,ActionTypeDim =>1,OnTimeMode =>1,OffTimeMode =>1
  1320. ,OffLevel =>1,OnMinLevel =>1,OnLevel =>1
  1321. ,RampSstep =>1,RampOnTime =>1,RampOffTime =>1
  1322. ,DimMinLvl =>1,DimMaxLvl =>1,DimStep =>1
  1323. ,DimJtOn =>1,DimJtOff =>1,DimJtDlyOn =>1
  1324. ,DimJtDlyOff =>1,DimJtRampOn =>1,DimJtRampOff =>1
  1325. ,CtValLo =>1,CtValHi =>1
  1326. ,CtOn =>1,CtDlyOn =>1,CtRampOn =>1
  1327. ,CtOff =>1,CtDlyOff =>1,CtRampOff =>1
  1328. ,OffDlyStep =>1,OffDlyNewTime =>1,OffDlyOldTime =>1
  1329. ,lgMultiExec =>1,shMultiExec =>1
  1330. ,confBtnTime =>1,localResDis =>1
  1331. ,speedMultiply =>1
  1332. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  1333. ,DimElsActionType=>1
  1334. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  1335. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  1336. }
  1337. ,"HM-DW04" =>{ transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1
  1338. ,logicCombination=>1
  1339. ,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
  1340. ,OffDlyBlink =>1,OnLvlPrio =>1,OnDlyMode =>1
  1341. ,ActionTypeDim =>1,OnTimeMode =>1,OffTimeMode =>1
  1342. ,OffLevel =>1,OnMinLevel =>1,OnLevel =>1
  1343. ,RampSstep =>1,RampOnTime =>1,RampOffTime =>1
  1344. ,DimMinLvl =>1,DimMaxLvl =>1,DimStep =>1
  1345. ,DimJtOn =>1,DimJtOff =>1,DimJtDlyOn =>1
  1346. ,DimJtDlyOff =>1,DimJtRampOn =>1,DimJtRampOff =>1
  1347. ,CtValLo =>1,CtValHi =>1
  1348. ,CtOn =>1,CtDlyOn =>1,CtRampOn =>1
  1349. ,CtOff =>1,CtDlyOff =>1,CtRampOff =>1
  1350. ,OffDlyStep =>1,OffDlyNewTime =>1,OffDlyOldTime =>1
  1351. ,lgMultiExec =>1,shMultiExec =>1
  1352. ,confBtnTime =>1,localResDis =>1
  1353. ,logicCombination=>1,speedMultiply =>1
  1354. ,DimElsOffTimeMd =>1,DimElsOnTimeMd =>1
  1355. ,DimElsActionType=>1
  1356. ,DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1
  1357. ,DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
  1358. }
  1359. );
  1360. #clones - - - - - - - - - - - - - - -
  1361. $culHmRegChan{"HM-DW05"} = $culHmRegChan{"HM-DW03"};
  1362. $culHmRegChan{"HM-DW06"} = $culHmRegChan{"HM-DW04"};
  1363. $culHmRegChan{"HM-Dis-EP-WM5502"} = $culHmRegChan{"HM-Dis-EP-WM5501"};
  1364. $culHmRegChan{"HM-Sec-Sir-WM02"} =
  1365. $culHmRegChan{"HM-Sec-Sir-WM03"} = $culHmRegChan{"HM-Sec-Sir-WM01"};
  1366. $culHmRegChan{"SensoTimer-ST-602"} = $culHmRegChan{"SensoTimer-ST-601"};
  1367. $culHmRegChan{"HM-Sen-MDIR-WM5502"} = $culHmRegChan{"HM-Sen-MDIR-WM5501"};
  1368. $culHmRegChan{"HM-Sen-MDIR-WM5503"} = $culHmRegType{motionDetector};
  1369. $culHmRegChan{"WDF-solar02"} = $culHmRegType{"dimmer"}; # type hash
  1370. $culHmRegChan{"HM-TC-IT-WM-W-EU03"} = $culHmRegChan{"HM-CC-RT-DN03"};
  1371. $culHmRegChan{"HM-TC-IT-WM-W-EU06"} = $culHmRegChan{"HM-CC-RT-DN06"};
  1372. $culHmRegChan{"ROTO_ZEL-STG-RM-FWT02"} = $culHmRegChan{"HM-CC-TC02"};
  1373. $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"} = $culHmRegChan{"HM-CC-TC03"};
  1374. $culHmRegChan{"HM-OU-CFM-TW01"} = $culHmRegChan{"HM-OU-CFM-PL01"};
  1375. $culHmRegChan{"HM-OU-CFM-TW02"} = $culHmRegChan{"HM-OU-CFM-PL02"};
  1376. ##############################---templates---##################################
  1377. #en-block programming of funktions
  1378. %culHmTpl = (
  1379. autoOff => {p=>"time" ,t=>"staircase - auto off after -time-, extend time with each trigger"
  1380. ,reg=>{ OnTime =>"p0"
  1381. ,OffTime =>"unused"
  1382. ,SwJtOn =>"on"
  1383. ,SwJtOff =>"dlyOn"
  1384. ,SwJtDlyOn =>"no"
  1385. ,SwJtDlyOff =>"dlyOn"
  1386. ,ActionType =>"jmpToTarget"
  1387. }}
  1388. ,SwToggle => {p=>"" ,t=>"Switch: toggle on trigger"
  1389. ,reg=>{ OnTime =>"unused"
  1390. ,OffTime =>"unused"
  1391. ,SwJtOn =>"dlyOff"
  1392. ,SwJtOff =>"dlyOn"
  1393. ,SwJtDlyOn =>"on"
  1394. ,SwJtDlyOff =>"off"
  1395. ,ActionType =>"jmpToTarget"
  1396. }}
  1397. ,SwOn => {p=>"" ,t=>"Switch: on if trigger"
  1398. ,reg=>{ OnTime =>"unused"
  1399. ,OffTime =>"unused"
  1400. ,SwJtOn =>"no"
  1401. ,SwJtOff =>"dlyOn"
  1402. ,SwJtDlyOn =>"on"
  1403. ,SwJtDlyOff =>"dlyOn"
  1404. ,ActionType =>"jmpToTarget"
  1405. }}
  1406. ,SwOff => {p=>"" ,t=>"Switch: off if trigger"
  1407. ,reg=>{ OnTime =>"unused"
  1408. ,OffTime =>"unused"
  1409. ,SwJtOn =>"dlyOff"
  1410. ,SwJtOff =>"no"
  1411. ,SwJtDlyOn =>"dlyOff"
  1412. ,SwJtDlyOff =>"off"
  1413. ,ActionType =>"jmpToTarget"
  1414. }}
  1415. ,DimOn => {p=>"" ,t=>"Dimmer: on if trigger"
  1416. ,reg=>{ OnTime =>"unused"
  1417. ,OffTime =>"unused"
  1418. ,DimJtOn =>"no"
  1419. ,DimJtOff =>"dlyOn"
  1420. ,DimJtDlyOn =>"on"
  1421. ,DimJtDlyOff =>"dlyOn"
  1422. ,DimJtRampOff =>"dlyOn"
  1423. ,DimJtRampOn =>"dlyOn"
  1424. ,ActionTypeDim =>"jmpToTarget"
  1425. }}
  1426. ,DimOff => {p=>"" ,t=>"Dimmer: off if trigger"
  1427. ,reg=>{ OnTime =>"unused"
  1428. ,OffTime =>"unused"
  1429. ,DimJtOn =>"dlyOff"
  1430. ,DimJtOff =>"no"
  1431. ,DimJtDlyOn =>"dlyOff"
  1432. ,DimJtDlyOff =>"off"
  1433. ,DimJtRampOff =>"dlyOff"
  1434. ,DimJtRampOn =>"dlyOff"
  1435. ,ActionTypeDim =>"jmpToTarget"
  1436. }}
  1437. ,motionOnDim => {p=>"ontime brightness",t=>"Dimmer: on for time if MDIR-brightness below level"
  1438. ,reg=>{ CtDlyOn =>"ltLo"
  1439. ,CtDlyOff =>"ltLo"
  1440. ,CtOn =>"ltLo"
  1441. ,CtOff =>"ltLo"
  1442. ,CtValLo =>"p1"
  1443. ,CtRampOn =>"ltLo"
  1444. ,CtRampOff =>"ltLo"
  1445. ,OffTime =>"unused"
  1446. ,OnTime =>"p0"
  1447. ,ActionTypeDim =>"jmpToTarget"
  1448. ,DimJtOn =>"on"
  1449. ,DimJtOff =>"dlyOn"
  1450. ,DimJtDlyOn =>"rampOn"
  1451. ,DimJtDlyOff =>"dlyOn"
  1452. ,DimJtRampOn =>"on"
  1453. ,DimJtRampOff =>"dlyOn"
  1454. }}
  1455. ,motionOnSw => {p=>"ontime brightness",t=>"Switch: on for time if MDIR-brightness below level"
  1456. ,reg=>{ CtDlyOn =>"ltLo"
  1457. ,CtDlyOff =>"ltLo"
  1458. ,CtOn =>"ltLo"
  1459. ,CtOff =>"ltLo"
  1460. ,CtValLo =>"p1"
  1461. ,OffTime =>"unused"
  1462. ,OnTime =>"p0"
  1463. ,ActionType =>"jmpToTarget"
  1464. ,SwJtOn =>"on"
  1465. ,SwJtOff =>"dlyOn"
  1466. ,SwJtDlyOn =>"on"
  1467. ,SwJtDlyOff =>"dlyOn"
  1468. }}
  1469. ,SwCondAbove => {p=>"condition" ,t=>"Switch: execute only if condition level is above limit"
  1470. ,reg=>{ CtDlyOn =>"geLo"
  1471. ,CtDlyOff =>"geLo"
  1472. ,CtOn =>"geLo"
  1473. ,CtOff =>"geLo"
  1474. ,CtValLo =>"p0"
  1475. }}
  1476. ,SwCondBelow => {p=>"condition" ,t=>"Switch: execute only if condition level is below limit"
  1477. ,reg=>{ CtDlyOn =>"ltLo"
  1478. ,CtDlyOff =>"ltLo"
  1479. ,CtOn =>"ltLo"
  1480. ,CtOff =>"ltLo"
  1481. ,CtValLo =>"p0"
  1482. }}
  1483. ,SwOnCond => {p=>"level cond" ,t=>"switch: execute only if condition [geLo|ltLo] level is below limit"
  1484. ,reg=>{ CtDlyOn =>"p1"
  1485. ,CtDlyOff =>"p1"
  1486. ,CtOn =>"p1"
  1487. ,CtOff =>"p1"
  1488. ,CtValLo =>"p0"
  1489. }}
  1490. ,BlStopDnLg => {p=>"" ,t=>"Blind: stop drive on any key - for long drive down"
  1491. ,reg=>{ ActionType =>"jmpToTarget"
  1492. ,BlJtDlyOff =>"refOff"
  1493. ,BlJtDlyOn =>"dlyOff"
  1494. ,BlJtOff =>"dlyOff"
  1495. ,BlJtOn =>"dlyOff"
  1496. ,BlJtRampOff =>"rampOff"
  1497. ,BlJtRampOn =>"on"
  1498. ,BlJtRefOff =>"rampOff"
  1499. ,BlJtRefOn =>"on"
  1500. }}
  1501. ,BlStopDnSh => {p=>"" ,t=>"Blind: stop drive on any key - for short drive down"
  1502. ,reg=>{ ActionType =>"jmpToTarget"
  1503. ,BlJtDlyOff =>"refOff"
  1504. ,BlJtDlyOn =>"dlyOff"
  1505. ,BlJtOff =>"dlyOff"
  1506. ,BlJtOn =>"dlyOff"
  1507. ,BlJtRampOff =>"off"
  1508. ,BlJtRampOn =>"on"
  1509. ,BlJtRefOff =>"rampOff"
  1510. ,BlJtRefOn =>"on"
  1511. }}
  1512. ,BlStopUpLg => {p=>"" ,t=>"Blind: stop drive on any key - for long drive up"
  1513. ,reg=>{ ActionType =>"jmpToTarget"
  1514. ,BlJtDlyOff =>"dlyOn"
  1515. ,BlJtDlyOn =>"refOn"
  1516. ,BlJtOff =>"dlyOn"
  1517. ,BlJtOn =>"dlyOn"
  1518. ,BlJtRampOff =>"off"
  1519. ,BlJtRampOn =>"rampOn"
  1520. ,BlJtRefOff =>"off"
  1521. ,BlJtRefOn =>"rampOn"
  1522. }}
  1523. ,BlStopUpSh => {p=>"" ,t=>"Blind: stop drive on"
  1524. ,reg=>{ ActionType =>"jmpToTarget"
  1525. ,BlJtDlyOff =>"dlyOn"
  1526. ,BlJtDlyOn =>"refOn"
  1527. ,BlJtOff =>"dlyOn"
  1528. ,BlJtOn =>"dlyOn"
  1529. ,BlJtRampOff =>"off"
  1530. ,BlJtRampOn =>"on"
  1531. ,BlJtRefOff =>"off"
  1532. ,BlJtRefOn =>"rampOn"
  1533. }}
  1534. ,wmOpen => {p=>"speed" ,t=>"winmatic: open window"
  1535. ,reg=>{ WinJtOn =>"rampOn"
  1536. ,WinJtOff =>"rampOn"
  1537. ,WinJtRampOn =>"on"
  1538. ,WinJtRampOff =>"rampOnFast"
  1539. ,RampOnSp =>"p0"
  1540. }}
  1541. ,wmClose => {p=>"speed" ,t=>"winmatic: close window"
  1542. ,reg=>{ WinJtOn =>"rampOff"
  1543. ,WinJtOff =>"rampOff"
  1544. ,WinJtRampOn =>"on"
  1545. ,WinJtRampOff =>"rampOnFast"
  1546. ,RampOffSp =>"p0"
  1547. }}
  1548. ,wmClosed => {p=>"" ,t=>"winmatic: lock window"
  1549. ,reg=>{ OffLevelKm =>"0"
  1550. }}
  1551. ,wmLock => {p=>"" ,t=>"winmatic: lock window"
  1552. ,reg=>{ OffLevelKm =>"127.5"
  1553. }}
  1554. );
  1555. ##############################---get---########################################
  1556. #define gets - try use same names as for set
  1557. %culHmGlobalGets = (
  1558. param => "-param-",
  1559. reg => "-addr- ... -list- -peer-",
  1560. regVal => "-addr- ... -list- -peer-",
  1561. regList => "",
  1562. cmdList => "",
  1563. saveConfig => "-filename- ...",
  1564. );
  1565. %culHmVrtGets = (
  1566. param => "-param-",
  1567. cmdList => "",
  1568. );
  1569. %culHmSubTypeGets = (
  1570. none4Type =>{ "test"=>"" }
  1571. );
  1572. %culHmModelGets = (
  1573. "CCU-FHEM" =>{ "listDevice"=>""}
  1574. ,ActionDetector =>{ "listDevice"=>"[all|alive|unknown|dead|notAlive] ..."
  1575. ,"info" =>""
  1576. }
  1577. );
  1578. ##############################---set---########################################
  1579. %culHmGlobalSets = (# all but virtuals
  1580. regBulk => "-list-.-peer- -addr1:data1- -addr2:data2- ..."
  1581. ,getRegRaw => "[List0|List1|List2|List3|List4|List5|List6] ... [-PeerChannel-]"
  1582. ,getConfig => ""
  1583. ,regSet => "[prep|exec] -regName- -value- ... [-peerChannel-]"
  1584. ,clear => "[readings|trigger|register|oldRegs|rssi|msgEvents|msgErrors|attack|all]"
  1585. ,templateDel => "tmplt"
  1586. );
  1587. %culHmGlobalSetsVrtDev = (# virtuals and devices without subtype
  1588. virtual => "-noButtons-"
  1589. ,clear => "[readings|rssi|msgErrors|msgErrors|unknownDev]"
  1590. );
  1591. %culHmReglSets = (# entities with regList
  1592. "0" =>{ #this is a device
  1593. raw => "data ..."
  1594. ,reset => ""
  1595. ,unpair => ""
  1596. ,assignHmKey => ""
  1597. ,deviceRename => "newName"
  1598. ,fwUpdate =>"-filename- -bootTime- ..."
  1599. }
  1600. ,"1" =>{ #this is a channel
  1601. sign => "[on|off]"
  1602. }
  1603. ,"3p" =>{ press =>"[long|short] -peer- [-repCount(long only)-] [-repDelay-] ..."
  1604. ,eventL =>"-peer- -cond-"
  1605. ,eventS =>"-peer- -cond-"
  1606. }
  1607. ,"4p" =>{ trgPressS =>"[-peer-]"
  1608. ,trgPressL =>"[-peer-]"
  1609. ,trgEventS =>"[-peer-] -condition-"
  1610. ,trgEventL =>"[-peer-] -condition-"
  1611. }
  1612. );
  1613. %culHmSubTypeDevSets = (# device of this subtype
  1614. switch =>{ getSerial => ""
  1615. ,pair => ""
  1616. ,getVersion => ""
  1617. ,getDevInfo => ""
  1618. }
  1619. # ,winMatic =>{ statusRequest => ""} not working at least for FW 1.6
  1620. ,keyMatic =>{ statusRequest => ""}
  1621. ,repeater =>{ statusRequest => ""
  1622. ,getSerial => ""
  1623. }
  1624. );
  1625. $culHmSubTypeDevSets{dimmer} =
  1626. $culHmSubTypeDevSets{blindActuator} = $culHmSubTypeDevSets{switch};
  1627. %culHmGlobalSetsChn = (# all channels but virtuals
  1628. peerBulk => "-peer1,peer2,...- [set|unset]"
  1629. );
  1630. %culHmSubTypeSets = (# channels of this subtype
  1631. switch =>{ "on-for-timer" =>"-ontime-"
  1632. ,"on-till" =>"-time-"
  1633. ,on =>""
  1634. ,off =>""
  1635. ,toggle =>""
  1636. ,inhibit =>"[on|off]"
  1637. ,statusRequest =>""
  1638. ,peerIODev =>"[IO] -btn- [set|unset]... not for future use"
  1639. }
  1640. ,dimmer =>{ "on-for-timer" =>"-ontime- [-ramptime-]..."
  1641. ,"on-till" =>"-time- [-ramptime-]..."
  1642. ,on =>""
  1643. ,off =>""
  1644. ,old =>""
  1645. ,toggle =>""
  1646. ,pct =>"[-value-|old] ... [-ontime-] [-ramptime-]"
  1647. ,stop =>""
  1648. ,up =>"[-changeValue-] [-ontime-] [-ramptime-] ..."
  1649. ,down =>"[-changeValue-] [-ontime-] [-ramptime-] ..."
  1650. ,inhibit =>"[on|off]"
  1651. ,statusRequest =>""
  1652. ,peerIODev =>"[IO] -btn- [set|unset]... not for future use"
  1653. }
  1654. ,blindActuator =>{ on =>""
  1655. ,off =>""
  1656. ,toggle =>""
  1657. ,toggleDir =>""
  1658. ,pct =>"[-value-] ... [-ontime-]"
  1659. ,stop =>""
  1660. ,up =>"[-changeValue-] [-ontime-] [-ramptime-] ..."
  1661. ,down =>"[-changeValue-] [-ontime-] [-ramptime-] ..."
  1662. ,inhibit =>"[on|off]"
  1663. ,statusRequest =>""
  1664. ,peerIODev =>"[IO] -btn- [set|unset]... not for future use"
  1665. }
  1666. ,remote =>{ peerChan =>"-btnNumber- -actChn- ... [single|dual|reverse] [set|unset] [actor|remote|both]"}
  1667. ,threeStateSensor =>{ peerChan =>"-btnNumber- -actChn- ... single [set|unset] [actor|remote|both]"}
  1668. ,THSensor =>{ peerChan =>"0 -actChn- ... single [set|unset] [actor|remote|both]"}
  1669. ,virtual =>{ peerChan =>"-btnNumber- -actChn- ... [single|dual|reverse] [set|unset] [actor|remote|both]"
  1670. ,press =>"[long|short] [noBurst] [-repCount(long only)-] [-repDelay-] ..."
  1671. ,postEvent =>"-condition-"
  1672. }
  1673. ,smokeDetector =>{ peerChan =>"-btnNumber- -actChn- ... single [set|unset] actor"}
  1674. ,keyMatic =>{ lock =>""
  1675. ,unlock =>"[-sec-] ..."
  1676. ,open =>"[-sec-] ..."
  1677. ,inhibit =>"[on|off]"
  1678. ,statusRequest =>""
  1679. }
  1680. ,repeater =>{ setRepeat =>"[no1..36] -sendName- -recName- [bdcast-yes|no]"
  1681. ,inhibit =>"[on|off]"
  1682. ,statusRequest =>""
  1683. }
  1684. ,KFM100 =>{ statusRequest =>""}
  1685. );
  1686. # clones- - - - - - - - - - - - - - - - -
  1687. $culHmSubTypeSets{pushButton} =
  1688. $culHmSubTypeSets{swi} = $culHmSubTypeSets{remote};
  1689. $culHmSubTypeSets{blindActuatorSol} =
  1690. $culHmSubTypeSets{tipTronic} = $culHmSubTypeSets{KFM100};
  1691. $culHmSubTypeSets{motionDetector} =
  1692. $culHmSubTypeSets{motionAndBtn} = $culHmSubTypeSets{threeStateSensor};
  1693. %culHmModelSets = (# channels of this subtype-------------
  1694. "HM-CC-VD" =>{ valvePos =>"[off|0.0..99.0]"}
  1695. ,"HM-RC-19" =>{ service =>"-count-"
  1696. ,alarm => "-count-"
  1697. ,display => "-text- [comma|no] [unit] [off|1|2|3] [off|on|slow|fast] -symbol-"
  1698. }
  1699. ,"HM-PB-4DIS-WM" =>{ text =>"-txt1- -txt2-..."
  1700. #text => "-btn- [on|off] -txt1- -txt2-...", old style will not be offered anymore
  1701. }
  1702. ,"HM-OU-LED16" =>{ led =>"[off|red|green|orange]"
  1703. ,ilum => "[0-15] [0-127]"
  1704. ,statusRequest =>""
  1705. }
  1706. ,"HM-OU-CFM-PL" =>{ "on-for-timer" =>"-sec-"
  1707. ,"on-till" =>"-time-"
  1708. ,on =>""
  1709. ,off =>""
  1710. ,toggle =>""
  1711. ,inhibit =>"[on|off]"
  1712. }
  1713. ,"HM-CC-RT-DN" =>{ inhibit =>"[on|off]"}
  1714. ,"HM-TC-IT-WM-W-EU" =>{ inhibit =>"[on|off]"}
  1715. ,"HM-SEC-SD" =>{ statusRequest =>""}
  1716. ,"HM-SEC-SD-2" =>{ statusRequest =>""}
  1717. ,"ActionDetector" =>{ clear =>"[readings|all]"
  1718. ,update => ""
  1719. }
  1720. ,"HM-LC-Ja1PBU-FM" =>{ pctSlat =>"[0-100]|old|noChng"
  1721. ,pctLvlSlat =>"-value-|old|noChng -slatValue-|old|noChng"
  1722. }
  1723. );
  1724. #foreach(keys %HMConfig::culHmRegModel){$culHmModelSets{$_}{burstXmit}="" if(defined $HMConfig::culHmRegModel{$_})};
  1725. foreach(keys %HMConfig::culHmModel){$culHmModelSets{$HMConfig::culHmModel{$_}{name}}{burstXmit}="" if($HMConfig::culHmModel{$_}{rxt} =~ m/f/)};
  1726. # clones- - - - - - - - - - - - - - - - -
  1727. $culHmModelSets{"HM-OU-CM-PCB"} =
  1728. $culHmModelSets{"HM-OU-CF-PL"} =
  1729. $culHmModelSets{"HM-OU-CFM-TW"} = $culHmModelSets{"HM-OU-CFM-PL"};
  1730. $culHmModelSets{"HM-PB-4DIS-WM-2"} =
  1731. $culHmModelSets{"HM-Dis-WM55"} =
  1732. $culHmModelSets{"HM-Dis-EP-WM55"} =
  1733. $culHmModelSets{"HM-ES-TX-WM"} =
  1734. $culHmModelSets{"HM-RC-Dis-H-x-EU"} =
  1735. $culHmModelSets{"ROTO_ZEL-STG-RM-DWT-10"}= $culHmModelSets{"HM-PB-4DIS-WM"};
  1736. #$culHmModelSets{"HM-OU-CFM-PL"} = $culHmModelSets{"HM-SEC-SD"};# no statusrequest possible
  1737. $culHmModelSets{"HM-OU-CM-PCB"} = $culHmModelSets{"HM-SEC-SD"};
  1738. $culHmModelSets{"HM-Sen-Wa-Od"} = $culHmModelSets{"HM-SEC-SD"};
  1739. $culHmModelSets{"HM-HM-LC-DW-WM"} = $culHmSubTypeSets{dimmer}; ##### reference subtype sets
  1740. %culHmChanSets = (
  1741. "HM-CC-TC00" =>{ "desired-temp" =>"[on|off|6.0..30.0]"
  1742. ,statusRequest =>""
  1743. ,sysTime =>""
  1744. ,getSerial => ""
  1745. }
  1746. ,"HM-CC-TC02" =>{ peerChan =>" 0 -actChn- ... single [set|unset] [actor|remote|both]"
  1747. ,"desired-temp" =>"[on|off|6.0..30.0]"
  1748. ,tempListSat =>"[prep|exec] HH:MM temp ..."
  1749. ,tempListSun =>"[prep|exec] HH:MM temp ..."
  1750. ,tempListMon =>"[prep|exec] HH:MM temp ..."
  1751. ,tempListTue =>"[prep|exec] HH:MM temp ..."
  1752. ,tempListThu =>"[prep|exec] HH:MM temp ..."
  1753. ,tempListWed =>"[prep|exec] HH:MM temp ..."
  1754. ,tempListFri =>"[prep|exec] HH:MM temp ..."
  1755. ,tempListTmpl =>"[verify|restore] [[-file-:]templateName] ..."
  1756. ,tempTmplSet =>"[[-file-:]templateName] ..."
  1757. ,partyMode =>"[prep|exec] HH:MM durationDays ..."
  1758. ,displayMode =>"[temp-only|temp-hum]"
  1759. ,displayTemp =>"[actual|setpoint]"
  1760. ,displayTempUnit=>"[celsius|fahrenheit]"
  1761. ,controlMode =>"[auto|manual|central|party]"
  1762. ,statusRequest =>""
  1763. ,sysTime =>""
  1764. }
  1765. ,"HM-OU-CFM-PL01" =>{ led =>"[redL|greenL|orangeL|redS|greenS|orangeS|pause][,-color2-...] [-repeat-]"}
  1766. ,"HM-OU-CFM-PL02" =>{ playTone =>"[replay|-MP3No-[,-MP3No-...]] [-repeat-]"
  1767. ,pct =>"[-value- ... [-ontime-]"}
  1768. ,"HM-SEC-WIN01" =>{ stop =>"",
  1769. ,level =>"-level- -relockDly- -speed-..."
  1770. ,keydef =>"-btn- -txt1- -txt2-"
  1771. ,inhibit =>"[on|off]"
  1772. ,peerIODev =>"[IO] -btn- [set|unset]... not for future use"
  1773. }
  1774. ,"HM-Sen-RD-O02" =>{ "on-for-timer" =>"-sec-"
  1775. ,"on-till" =>"-time-"
  1776. ,on =>""
  1777. ,off =>""
  1778. ,toggle =>""
  1779. }
  1780. ,"HM-CC-RT-DN00" =>{ sysTime =>"" }
  1781. ,"HM-CC-RT-DN04" =>{ controlMode =>"[auto|manual|boost|day|night]"
  1782. ,controlManu =>"[on|off|5.0..30.0]"
  1783. ,controlParty =>"-temp- -startDate- -startTime- -endDate- -endTime-"
  1784. ,tempListSat =>"[prep|exec] HH:MM temp ..."
  1785. ,tempListSun =>"[prep|exec] HH:MM temp ..."
  1786. ,tempListMon =>"[prep|exec] HH:MM temp ..."
  1787. ,tempListTue =>"[prep|exec] HH:MM temp ..."
  1788. ,tempListThu =>"[prep|exec] HH:MM temp ..."
  1789. ,tempListWed =>"[prep|exec] HH:MM temp ..."
  1790. ,tempListFri =>"[prep|exec] HH:MM temp ..."
  1791. ,tempListTmpl =>"[verify|restore] [[-file-:]templateName] ..."
  1792. ,tempTmplSet =>"[[-file-:]templateName] ..."
  1793. ,"desired-temp" =>"[on|off|5.0..30.0]"
  1794. ,sysTime =>""
  1795. }
  1796. ,"HM-TC-IT-WM-W-EU00" =>{ sysTime =>""
  1797. ,getSerial => ""
  1798. }
  1799. ,"HM-TC-IT-WM-W-EU01" =>{ peerChan =>"-btnNumber- -actChn- ... single [set|unset] [actor|remote|both]"}
  1800. ,"HM-TC-IT-WM-W-EU02" =>{ controlMode =>"[auto|manual|boost|day|night]"
  1801. ,controlManu =>"[on|off|5.0..30.0]"
  1802. ,controlParty =>"-temp- -startDate- -startTime- -endDate- -endTime-"
  1803. ,tempListSat =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
  1804. ,tempListSun =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
  1805. ,tempListMon =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
  1806. ,tempListTue =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
  1807. ,tempListThu =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
  1808. ,tempListWed =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
  1809. ,tempListFri =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
  1810. ,"desired-temp" =>"[on|off|5.0..30.0]"
  1811. ,tempListTmpl =>"[verify|restore] [[-file-:]templateName] ..."
  1812. ,tempTmplSet =>"[[-file-:]templateName] ..."
  1813. ,peerChan =>"-btnNumber- -actChn- ... single [set|unset] [actor|remote|both]"
  1814. }
  1815. ,"HM-ES-PMSw1-Pl01" =>{ "on-for-timer" =>"-sec-"
  1816. ,"on-till" =>"-time-"
  1817. ,on =>""
  1818. ,off =>""
  1819. ,toggle =>""
  1820. ,press =>"[long|short] [-peer-] [-repCount(long only)-] [-repDelay-] ..."
  1821. ,inhibit =>"[on|off]"
  1822. ,statusRequest =>""
  1823. }
  1824. ,"HM-ES-PMSw1-Pl00" =>{ getSerial => ""
  1825. ,getDevInfo => ""
  1826. }
  1827. ,"HM-Dis-WM5501" =>{ displayWM =>"[long|short|help] -lineX- -textNo1- -color1- -icon1- [-textNo2- -color2- -icon2-] ...[-textNo6- -color6- -icon6-] "
  1828. ,peerChan =>"-btnNumber- -actChn- ... single [set|unset] [actor|remote|both]"}
  1829. ,"CCU-FHEM00" =>{ update =>""
  1830. ,hmPairForSec =>"-sec- ..."
  1831. ,hmPairSerial =>"-serial-"
  1832. ,defIgnUnknown =>""
  1833. ,assignIO =>"-IO- [set|unset]..."
  1834. }
  1835. ,"HM-LC-RGBW-WM01" =>{ "on-for-timer" =>"-ontime- [-ramptime-]..."
  1836. ,"on-till" =>"-time- [-ramptime-]..."
  1837. ,on =>""
  1838. ,off =>""
  1839. ,toggle =>""
  1840. ,pct =>"-value- ... [-ontime-] [-ramptime-]"
  1841. ,stop =>""
  1842. ,up =>"[-changeValue-] [-ontime-] [-ramptime-] ..."
  1843. ,down =>"[-changeValue-] [-ontime-] [-ramptime-] ..."
  1844. ,inhibit =>"[on|off]"
  1845. ,statusRequest =>""
  1846. ,peerIODev =>"[IO] -btn- [set|unset]... not for future use"
  1847. }
  1848. ,"HM-LC-RGBW-WM02" =>{ brightCol =>"-bright[0-100]- -colVal[0-100]- -duration- -ramp- ..."
  1849. ,color =>"-colVal[0-100]-"
  1850. ,on =>""
  1851. ,off =>""
  1852. ,up =>"[-changeValue-] [-ontime-] [-ramptime-] ..."
  1853. ,down =>"[-changeValue-] [-ontime-] [-ramptime-] ..."
  1854. }
  1855. ,"HM-LC-RGBW-WM03" =>{ brightAuto =>"-bright- -colProg- -min- -max- -duration- -ramp- ..."
  1856. ,colProgram =>"[0|1|2|3|4|5|6]"
  1857. }
  1858. ,"HM-Sec-Sir-WM01" =>{ on =>""
  1859. ,off =>""
  1860. ,"on-for-timer" =>"-ontime-"
  1861. ,"on-till" =>"-time-"
  1862. ,inhibit =>"[on|off]"
  1863. }
  1864. ,"HM-Sec-Sir-WM04" =>{ alarmLevel =>"[disarmed|armExtSens|armAll|armBlocked]"
  1865. }
  1866. ,"HM-Dis-EP-WM5503" =>{ displayEP =>"text1,icon1:text2,icon2:text3,icon3 ... -sound- -repetition- -pause- -signal-"}
  1867. );
  1868. # clones- - - - - - - - - - - - - - - - -
  1869. $culHmChanSets{"HM-Sec-Sir-WM02"} =
  1870. $culHmChanSets{"HM-Sec-Sir-WM03"} = $culHmChanSets{"HM-Sec-Sir-WM01"};
  1871. $culHmChanSets{"HM-Dis-WM5502"} = $culHmChanSets{"HM-Dis-WM5501"};
  1872. $culHmChanSets{"WDF-solar01"} =
  1873. $culHmChanSets{"HM-Sen-RD-O01"} =
  1874. $culHmChanSets{"HM-SEN-EP01"} =
  1875. $culHmChanSets{"HM-SEN-EP02"} =
  1876. $culHmChanSets{"HM-CC-RT-DN05"} =
  1877. $culHmChanSets{"HM-ES-PMSw1-Pl03"} = $culHmSubTypeSets{THSensor};
  1878. $culHmChanSets{"HM-OU-CM-PCB01"} =
  1879. $culHmChanSets{"HM-OU-CFM-TW02"} = $culHmChanSets{"HM-OU-CFM-PL02"};
  1880. $culHmChanSets{"HM-ES-PMSw1-Pl04"} =
  1881. $culHmChanSets{"HM-ES-PMSw1-Pl05"} =
  1882. $culHmChanSets{"HM-ES-PMSw1-Pl06"} = $culHmChanSets{"HM-ES-PMSw1-Pl03"};
  1883. $culHmChanSets{"HM-ES-PMSw1-Pl01"} = $culHmSubTypeSets{switch};
  1884. $culHmChanSets{"HM-ES-PMSw1-Pl02"} = $culHmSubTypeSets{outputUnit};
  1885. $culHmChanSets{"WDF-solar02"} = $culHmSubTypeSets{blindActuator};
  1886. $culHmChanSets{"HM-OU-CFM-TW01"} = $culHmChanSets{"HM-OU-CFM-PL01"};
  1887. $culHmChanSets{"HM-CC-RT-DN02"} = $culHmChanSets{"HM-CC-RT-DN00"};
  1888. $culHmChanSets{"HM-CC-RT-DN03"} = $culHmChanSets{"HM-CC-RT-DN06"};
  1889. $culHmChanSets{"ROTO_ZEL-STG-RM-FWT00"} = $culHmChanSets{"HM-CC-TC00"};
  1890. $culHmChanSets{"ROTO_ZEL-STG-RM-FWT02"} = $culHmChanSets{"HM-CC-TC02"};
  1891. $culHmChanSets{"HM-LC-Sw1PBU-FM00"} = $culHmChanSets{"HM-LC-Bl1PBU-FM00"};
  1892. $culHmChanSets{"HM-CC-RD-O00"} = $culHmChanSets{"HM-LC-Bl1PBU-FM00"};
  1893. #$culHmChanSets{"HM-ES-PMSw1-Pl00"} = $culHmChanSets{"HM-LC-Bl1PBU-FM00"};
  1894. $culHmChanSets{"HM-TC-IT-WM-W-EU07"} =
  1895. $culHmChanSets{"HM-Dis-EP-WM5501"} =
  1896. $culHmChanSets{"HM-Dis-EP-WM5502"} = $culHmChanSets{"HM-TC-IT-WM-W-EU01"};
  1897. %culHmFunctSets = (# command depending on function
  1898. sdLead1 =>{ alarmOn =>""
  1899. ,alarmOff =>""
  1900. ,teamCall =>""
  1901. ,teamCallBat =>""
  1902. },
  1903. sdLead2 =>{ alarmOn =>""
  1904. ,alarmOff =>""
  1905. ,teamCall =>"no ..."
  1906. },
  1907. vdCtrl =>{ valvePos =>"[off|0.0..99.0]"},
  1908. virtThSens =>{ virtTemp =>"[off|-20.0..50.0]",
  1909. virtHum =>"[off|0.0..99.0]"}
  1910. );
  1911. #General $culHmFunctSets{"sdLead2"} = $culHmFunctSets{"sdLead1"};
  1912. # RC send BCAST to specific address. Is the meaning understood?
  1913. @culHmCmdFlags = ("WAKEUP", "WAKEMEUP", "BCAST", "Bit3",
  1914. "BURST", "BIDI" , "RPTED", "RPTEN");
  1915. #RPTEN 0x80: set in every message. Meaning?
  1916. #RPTED 0x40: repeated (repeater operation)
  1917. #BIDI 0x20: response is expected
  1918. #Burst 0x10: set if burst is required by device
  1919. #Bit3 0x08:
  1920. #BCAST 0x04: Broadcast - to all my peers parallel
  1921. #WAKEMEUP 0x02: awake - hurry up to send messages
  1922. #WAKEUP 0x01: send initially to keep the device awake
  1923. ##############################---messages---###################################
  1924. %culHmBits = (
  1925. "00" => { txt => "DEVICE_INFO", params => {
  1926. FIRMWARE => '00,2',
  1927. TYPE => "02,4",
  1928. SERIALNO => '06,20,$val=pack("H*",$val)',
  1929. CLASS => "26,2",
  1930. PEER_CHANNEL_A => "28,2",
  1931. PEER_CHANNEL_B => "30,2",
  1932. UNKNOWN => "32,2", }},
  1933. "01;p11=01" => { txt => "CONFIG_PEER_ADD", params => {
  1934. CHANNEL => "00,2",
  1935. PEER_ADDRESS => "04,6",
  1936. PEER_CHANNEL_A => "10,2",
  1937. PEER_CHANNEL_B => "12,2", }},
  1938. "01;p11=02" => { txt => "CONFIG_PEER_REMOVE", params => {
  1939. CHANNEL => "00,2",
  1940. PEER_ADDRESS => '04,6,$val=CUL_HM_id2Name($val)',
  1941. PEER_CHANNEL_A => "10,2",
  1942. PEER_CHANNEL_B => "12,2", } },
  1943. "01;p11=03" => { txt => "CONFIG_PEER_LIST_REQ", params => {
  1944. CHANNEL => "0,2", },},
  1945. "01;p11=04" => { txt => "CONFIG_PARAM_REQ", params => {
  1946. CHANNEL => "00,2",
  1947. PEER_ADDRESS => "04,6",
  1948. PEER_CHANNEL => "10,2",
  1949. PARAM_LIST => "12,2", },},
  1950. "01;p11=05" => { txt => "CONFIG_START", params => {
  1951. CHANNEL => "00,2",
  1952. PEER_ADDRESS => "04,6",
  1953. PEER_CHANNEL => "10,2",
  1954. PARAM_LIST => "12,2", } },
  1955. "01;p11=06" => { txt => "CONFIG_END", params => {
  1956. CHANNEL => "0,2", } },
  1957. "01;p11=07" => { txt => "CONFIG_WRITE_INDEX", params => {
  1958. CHANNEL => "0,2",
  1959. ADDR => "4,2",
  1960. DATA => '6,,$val =~ s/(..)/ $1/g', } },
  1961. "01;p11=08" => { txt => "CONFIG_WRITE_INDEX", params => {
  1962. CHANNEL => "0,2",
  1963. DATA => '4,,$val =~ s/(..)(..)/ $1:$2/g', } },
  1964. "01;p11=09" => { txt => "CONFIG_SERIAL_REQ", params => { } },
  1965. "01;p11=0A" => { txt => "PAIR_SERIAL", params => {
  1966. SERIALNO => '04,,$val=pack("H*",$val)', } },
  1967. "01;p11=0E" => { txt => "CONFIG_STATUS_REQUEST", params => {
  1968. CHANNEL => "0,2", } },
  1969. "02;p01=00" => { txt => "ACK"},
  1970. "02;p01=01" => { txt => "ACK_STATUS", params => {
  1971. CHANNEL => "02,2",
  1972. STATUS => "04,2",
  1973. DOWN => '06,02,$val=(hex($val)&0x20)?1:0',
  1974. UP => '06,02,$val=(hex($val)&0x10)?1:0',
  1975. LOWBAT => '06,02,$val=(hex($val)&0x80)?1:0',
  1976. RSSI => '08,02,$val=(-1)*(hex($val))', }},
  1977. "02;p01=02" => { txt => "ACK2"}, # smokeDetector pairing only?
  1978. "02;p01=04" => { txt => "AES_req", params => {#
  1979. Para1 => "02,4",
  1980. Para2 => "06,4",
  1981. Para3 => "10,4",
  1982. keyNo => "14,2",}},
  1983. "02;p01=80" => { txt => "NACK"},
  1984. "02;p01=84" => { txt => "NACK_TARGET_INVALID"},
  1985. "02" => { txt => "ACK/NACK_UNKNOWN "},
  1986. "03" => { txt => "AES reply", params => { # send 'old' AES key to actor
  1987. DATA => "0," } },
  1988. "04;p01=01" => { txt => "To-HMLan:send AES code", params => { # FHEM req HMLAN to send AES key to aktor ??
  1989. CHANNEL => "00,2",
  1990. TYPE => "02,2" } }, #00: old key? 01: new key?
  1991. "04" => { txt => "To-Actor:send AES key" , params => { # HMLAN sends AES key to actor ??
  1992. CODE => "00" } },
  1993. "10;p01=00" => { txt => "INFO_SERIAL", params => {
  1994. SERIALNO => '02,20,$val=pack("H*",$val)'},},
  1995. "10;p01=01" => { txt => "INFO_PEER_LIST", params => {
  1996. PEER1 => '02,8,$val=CUL_HM_id2Name($val)',
  1997. PEER2 => '10,8,$val=CUL_HM_id2Name($val)',
  1998. PEER3 => '18,8,$val=CUL_HM_id2Name($val)',
  1999. PEER4 => '26,8,$val=CUL_HM_id2Name($val)'},},
  2000. "10;p01=02" => { txt => "INFO_PARAM_RESPONSE_PAIRS", params => {
  2001. DATA => "2,", },},
  2002. "10;p01=03" => { txt => "INFO_PARAM_RESPONSE_SEQ", params => {
  2003. OFFSET => "2,2",
  2004. DATA => "4,", },},
  2005. "10;p01=04" => { txt => "INFO_PARAMETER_CHANGE", params => {
  2006. CHANNEL => "2,2",
  2007. PEER => '4,8,$val=CUL_HM_id2Name($val)',
  2008. PARAM_LIST => "12,2",
  2009. DATA => '14,,$val =~ s/(..)(..)/ $1:$2/g', } },
  2010. "10;p01=06" => { txt => "INFO_ACTUATOR_STATUS", params => {
  2011. CHANNEL => "2,2",
  2012. STATUS => '4,2',
  2013. UNKNOWN => "6,2",
  2014. RSSI => '08,02,$val=(-1)*(hex($val))' } },
  2015. "10;p01=0A" => { txt => "INFO_TEMP", params => {
  2016. SET => '2,4,$val=(hex($val)>>10)&0x3F',
  2017. ACT => '2,4,$val=hex($val)&0x3FF',
  2018. ERR => "6,2",
  2019. VALVE => "6,2",
  2020. MODE => "6,2" } },
  2021. "11;p01=00" => { txt => "INHIBIT0ff" , params => {
  2022. CHANNEL => "02,2" } },
  2023. "11;p01=01" => { txt => "INHIBIT0n" , params => {
  2024. CHANNEL => "02,2" } },
  2025. "11;p01=02" => { txt => "SET" , params => {
  2026. CHANNEL => "02,2",
  2027. VALUE => "04,2",
  2028. RAMPTIME => '06,4,$val=CUL_HM_decodeTime16($val)',
  2029. DURATION => '10,4,$val=CUL_HM_decodeTime16($val)', } },
  2030. "11;p01=03" => { txt => "STOP_change" , params => {
  2031. CHANNEL => "02,2"} },
  2032. "11;p02=0400" => { txt => "RESET" },
  2033. "11;p01=80" => { txt => "LED" , params => {
  2034. CHANNEL => "02,2",
  2035. COLOR => "04,2", } },
  2036. "11;p02=8100" => { txt => "LEDall" , params => {
  2037. Led1To16 => '04,8,$val= join(":",sprintf("%b",hex($val))=~ /(.{2})/g)',
  2038. } },
  2039. "11;p01=81" => { txt => "LEVEL" , params => {#ALARM_COUNT/HANDLE_LOCK/LEVEL_SET/MANU_MODE_SET/SET_ALL_CHANNELS
  2040. CHANNEL => "02,2",
  2041. TIME => '04,2,$val=hex($val)',
  2042. SPEED => '06,2,$val=hex($val)',
  2043. } },
  2044. "11;p01=82" => { txt => "Sleepmode" , params => {#SET_WINTER_MODE/SET_LED_SLEEP_MODE/SERVICE_COUNT/PARTY_MODE_SET
  2045. CHANNEL => "02,2",
  2046. MODE => '04,2,$val=hex($val)',
  2047. } },
  2048. "11;p01=83" => { txt => "EnterBootLoader" },#BOOST_MODE_SET/SET_HANDLE_LED_MODE
  2049. # "11;p01=84" => { txt => "" },#SET_SHEV_POS/COMFORT_MODE_SET
  2050. # "11;p01=85" => { txt => "" },#LOWERING_MODE_SET/SET_RELEASE_TURN
  2051. "11;p01=86" => { txt => "SetTemp" , params => {
  2052. B1 => "02,2",
  2053. B2 => '04,2',
  2054. } },
  2055. "11;p01=87" => { txt => "AdaptionDriveSet" },
  2056. "11;p01=CA" => { txt => "EnterBootLoader" },#download? at the end?
  2057. "12" => { txt => "HAVE_DATA"},
  2058. "3E" => { txt => "SWITCH" , params => {
  2059. PEER => "00,6",
  2060. fix => "06,2",
  2061. CHANNEL => "08,2",
  2062. COUNTER => "10,2", } },
  2063. "3F" => { txt => "TimeStamp" , params => {
  2064. UNKNOWN => "00,4",
  2065. TIME => "04,2", } },
  2066. "40" => { txt => "REMOTE" , params => {
  2067. BUTTON => '00,2,$val=(hex($val)&0x3F)',
  2068. LONG => '00,2,$val=(hex($val)&0x40)?1:0',
  2069. LOWBAT => '00,2,$val=(hex($val)&0x80)?1:0',
  2070. COUNTER => "02,2", } },
  2071. "41" => { txt => "Sensor_event", params => {
  2072. BUTTON => '00,2,$val=(hex($val)&0x3F)',
  2073. LONG => '00,2,$val=(hex($val)&0x40)?1:0',
  2074. LOWBAT => '00,2,$val=(hex($val)&0x80)?1:0',
  2075. NBR => '02,2,$val=(hex($val))',
  2076. VALUE => '04,2,$val=(hex($val))',} },
  2077. "42" => { txt => "SwitchLevel" , params => {
  2078. BUTTON => '00,2,$val=(hex($val)&0x3F)',
  2079. NBR => '02,2,$val=(hex($val))',
  2080. LEVEL => '04,2,$val=(hex($val))',} },
  2081. "53" => { txt => "SensorData" , params => {
  2082. CMD => "00,2",
  2083. Fld1=> "02,2",
  2084. Val1=> '04,4,$val=(hex($val))',
  2085. Fld2=> "08,2",
  2086. Val2=> '10,4,$val=(hex($val))',
  2087. Fld3=> "14,2",
  2088. Val3=> '16,4,$val=(hex($val))',
  2089. Fld4=> "20,2",
  2090. Val4=> '24,4,$val=(hex($val))'} },
  2091. "54" => { txt => "GasEvent" , params => {
  2092. energy => '00,8,$val=((hex($val)) /1000)'
  2093. ,power => '06,6,$val=((hex($val)) /1000)'
  2094. } },
  2095. "58" => { txt => "ClimateEvent", params => {
  2096. CMD => "00,2",
  2097. ValvePos => '02,2,$val=(hex($val))', } },
  2098. "59" => { txt => "setTeamTemp" , params => {
  2099. CMD => "00,2",
  2100. desTemp => '02,2,$val=((hex($val)>>2) /2)',
  2101. mode => '02,2,$val=(hex($val) & 0x3)',} },
  2102. "5A" => { txt => "ThermCtrl" , params => {
  2103. setTemp => '00,2,$val=(((hex($val)>>2)&0x3f) /2)',
  2104. actTemp => '00,4,$val=((hex($val)>>6) /10)',
  2105. hum => '04,2,$val=(hex($val) & 0x3)',} },
  2106. "5E" => { txt => "powerEvntCyc", params => {
  2107. energy => '00,6,$val=((hex($val)) /10)',
  2108. power => '06,6,$val=((hex($val)) /100)',
  2109. current => '12,4,$val=((hex($val)) /1)',
  2110. voltage => '16,4,$val=((hex($val)) /10)',
  2111. frequency=> '20,2,$val=((hex($val)) /100+50)',
  2112. } },
  2113. "5F" => { txt => "powerEvnt" , params => {
  2114. energy => '00,6,$val=((hex($val)) /10)',
  2115. power => '06,6,$val=((hex($val)) /100)',
  2116. current => '12,4,$val=((hex($val)) /1)',
  2117. voltage => '16,4,$val=((hex($val)) /10)',
  2118. frequency=> '20,2,$val=((hex($val)) /100+50)',
  2119. } },
  2120. "70" => { txt => "WeatherEvent", params => {
  2121. TEMP => '00,4,$val=((hex($val)&0x3FFF)/10)*((hex($val)&0x4000)?-1:1)',
  2122. HUM => '04,2,$val=(hex($val))', } },
  2123. );
  2124. foreach my $reg (keys %culHmRegDefShLg){ #update register list
  2125. %{$culHmRegDefine{"sh".$reg}} = %{$culHmRegDefShLg{$reg}};
  2126. %{$culHmRegDefine{"lg".$reg}} = %{$culHmRegDefShLg{$reg}};
  2127. $culHmRegDefine{"lg".$reg}{a} +=0x80;
  2128. }
  2129. foreach my $rN (keys %culHmRegDefine){ #create literal inverse for fast search
  2130. if ($culHmRegDefine{$rN}{lit}){# literal assigned => create inverse
  2131. foreach my $lit (keys %{$culHmRegDefine{$rN}{lit}}){
  2132. $culHmRegDefine{$rN}{litInv}{$culHmRegDefine{$rN}{lit}{$lit}}=$lit;
  2133. }
  2134. }
  2135. }
  2136. foreach my $type (keys %culHmRegType) { #update references to register
  2137. foreach my $reg (keys %{$culHmRegType{$type}}){
  2138. if ($culHmRegDefShLg{$reg}){
  2139. delete $culHmRegType{$type}{$reg};
  2140. $culHmRegType{$type}{"sh".$reg} = 1;
  2141. $culHmRegType{$type}{"lg".$reg} = 1;
  2142. }
  2143. }
  2144. }
  2145. foreach my $type (keys %culHmRegModel){ #update references to register
  2146. foreach my $reg (keys %{$culHmRegModel{$type}}){
  2147. if ($culHmRegDefShLg{$reg}){
  2148. delete $culHmRegModel{$type}{$reg};
  2149. $culHmRegModel{$type}{"sh".$reg} = 1;
  2150. $culHmRegModel{$type}{"lg".$reg} = 1;
  2151. }
  2152. }
  2153. }
  2154. foreach my $type (keys %culHmRegChan) { #update references to register
  2155. foreach my $reg (keys %{$culHmRegChan{$type}}){
  2156. if ($culHmRegDefShLg{$reg}){
  2157. delete $culHmRegChan{$type}{$reg};
  2158. $culHmRegChan{$type}{"sh".$reg} = 1;
  2159. $culHmRegChan{$type}{"lg".$reg} = 1;
  2160. }
  2161. }
  2162. }
  2163. foreach my $al (keys %culHmModel){ # duplicate entries for alias devices
  2164. next if (!defined $culHmModel{$al}{alias});
  2165. foreach my $mt (keys %culHmModel){
  2166. if (($culHmModel{$al}{alias}) eq $culHmModel{$mt}{name}){
  2167. my $md = $culHmModel{$mt}{name};
  2168. my $ds = $culHmModel{$al}{name};
  2169. $culHmModelSets{$ds} = $culHmModelSets{$md} if($culHmModelSets{$md});
  2170. $culHmModelGets{$ds} = $culHmModelGets{$md} if($culHmModelSets{$md});
  2171. foreach (grep /^$md/,keys %culHmChanSets){
  2172. $culHmChanSets{$ds.substr($_,-2,2)} = $culHmChanSets{$_};
  2173. }
  2174. $culHmRegModel{$ds} = $culHmRegModel{$md} if ($culHmRegModel{$md});
  2175. foreach(grep /^$md/,keys %culHmRegChan){
  2176. $culHmRegChan{$ds.substr($_,-2,2)} = $culHmRegChan{$_};
  2177. }
  2178. last;
  2179. }
  2180. }
  2181. delete $culHmModel{$al} if (!defined$culHmModel{$al}{st}); # not found - remove entry
  2182. }
  2183. 1;