| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249 |
- #########################################################################
- #
- # HMCCUConf.pm
- #
- # $Id: HMCCUConf.pm 16301 2018-03-01 10:47:08Z zap $
- #
- # Version 4.2
- #
- # Configuration parameters for HomeMatic devices.
- #
- # (c) 2017 by zap (zap01 <at> t-online <dot> de)
- #
- # Datapoints LOWBAT, LOW_BAT, UNREACH, ERROR.*, SABOTAGE and FAULT.*
- # must not be specified in attribute ccureadingfilter. They are always
- # stored as readings.
- # Datapoints LOWBAT, LOW_BAT and UNREACH must not be specified in
- # attribute substitute because they are substituted by default.
- # See also documentation of attributes ccudef-readingname and
- # ccudef-substitute in module HMCCU.
- #
- #########################################################################
- package HMCCUConf;
- use strict;
- use warnings;
- use vars qw(%HMCCU_CHN_DEFAULTS);
- use vars qw(%HMCCU_DEV_DEFAULTS);
- use vars qw(%HMCCU_SCRIPTS);
- ######################################################################
- # Default attributes for Homematic devices of type HMCCUCHN
- ######################################################################
- %HMCCU_CHN_DEFAULTS = (
- "HM-Sec-SCo|HM-Sec-SC|HM-Sec-SC-2|HMIP-SWDO" => {
- _description => "Tuer/Fensterkontakt optisch und magnetisch",
- _channels => "1",
- ccureadingfilter => "STATE",
- hmstatevals => "ERROR!7:sabotage;SABOTAGE!1:sabotage",
- statedatapoint => "STATE",
- substitute => "STATE!(0|false):closed,(1|true):open"
- },
- "HmIP-SWDO-I" => {
- _description => "Tuer/Fensterkontakt verdeckt",
- _channels => "1",
- ccureadingfilter => "STATE",
- hmstatevals => "SABOTAGE!1:sabotage",
- statedatapoint => "STATE",
- substitute => "STATE!(0|false):closed,(1|true):open"
- },
- "HM-Sec-RHS|HM-Sec-RHS-2" => {
- _description => "Fenster Drehgriffkontakt",
- _channels => "1",
- ccureadingfilter => "STATE",
- hmstatevals => "ERROR!1:sabotage",
- statedatapoint => "STATE",
- substitute => "STATE!0:closed,1:tilted,2:open;ERROR!0:no,1:sabotage"
- },
- "HM-Sec-Key|HM-Sec-Key-S|HM-Sec-Key-O|HM-Sec-Key-Generic" => {
- _description => "Funk-Tuerschlossantrieb KeyMatic",
- _channels => "1",
- ccureadingfilter => "(STATE|INHIBIT)",
- eventMap => "/datapoint OPEN true:open/",
- hmstatevals => "ERROR!1:clutch_failure,2:motor_aborted",
- statedatapoint => "STATE",
- statevals => "lock:false,unlock:true",
- substitute => "STATE!(0|false):locked,(1|true):unlocked,2:open;INHIBIT!(0|false):no,(1|true):yes;STATE_UNCERTAIN!(1|true):manual;DIRECTION!0:none,1:up,2:down,3:undefined;ERROR!0:no,1:clutch_failure,2:motor_aborted"
- },
- "HM-LC-Sw1-Pl-CT-R1" => {
- _description => "Schaltaktor mit Klemmanschluss",
- _channels => "1",
- ccureadingfilter => "(STATE|WORKING)",
- cmdIcon => "press:general_an",
- eventMap => "/on-for-timer 1:press/",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(0|false):off,(1|true):on;WORKING!(0|false):no,(1|true):yes",
- webCmd => "press"
- },
- "HM-LC-Sw1-Pl-2|HM-LC-Sw1-Pl-DN-R1" => {
- _description => "Steckdose",
- _channels => "1",
- ccureadingfilter => "STATE",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off",
- webCmd => "devstate",
- widgetOverride => "devstate:uzsuToggle,off,on"
- },
- "HMIP-PS" => {
- _description => "Steckdose",
- _channels => "3",
- ccureadingfilter => "STATE",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off",
- webCmd => "devstate",
- widgetOverride => "devstate:uzsuToggle,off,on"
- },
- "HM-LC-Dim1L-Pl|HM-LC-Dim1L-Pl-2|HM-LC-Dim1L-CV|HM-LC-Dim2L-CV|HM-LC-Dim2L-SM|HM-LC-Dim1L-Pl-3|HM-LC-Dim1L-CV-2" => {
- _description => "Funk-Anschnitt-Dimmaktor",
- _channels => "1",
- ccureadingfilter => "(^LEVEL\$|DIRECTION)",
- ccuscaleval => "LEVEL:0:1:0:100",
- cmdIcon => "on:general_an off:general_aus",
- controldatapoint => "LEVEL",
- hmstatevals => "ERROR!1:load_failure",
- statedatapoint => "LEVEL",
- statevals => "on:100,off:0",
- stripnumber => 1,
- substexcl => "control",
- substitute => "ERROR!0:no,1:load_failure:yes;LEVEL!#0-0:off,#1-100:on",
- webCmd => "control:on:off",
- widgetOverride => "control:slider,0,10,100"
- },
- "HM-LC-Dim1PWM-CV|HM-LC-Dim1PWM-CV-2" => {
- _description => "Funk-PWM-Dimmaktor",
- _channels => "1",
- ccureadingfilter => "(^LEVEL\$|DIRECTION)",
- ccuscaleval => "LEVEL:0:1:0:100",
- cmdIcon => "on:general_an off:general_aus",
- controldatapoint => "LEVEL",
- hmstatevals => "ERROR_REDUCED!1:error_reduced;ERROR_OVERHEAT!1:error_overheat",
- statedatapoint => "LEVEL",
- statevals => "on:100,off:0",
- stripnumber => 1,
- substexcl => "control",
- substitute => "ERROR_REDUCED,ERROR_OVERHEAT!(0|false):no,(1|true):yes;LEVEL!#0-0:off,#1-100:on;DIRECTION!0:none,1:up,2:down,3:undefined",
- webCmd => "control:on:off",
- widgetOverride => "control:slider,0,10,100"
- },
- "HM-LC-Dim1T-Pl|HM-LC-Dim1T-CV|HM-LC-Dim1T-FM|HM-LC-Dim1T-CV-2|HM-LC-Dim2T-SM|HM-LC-Dim2T-SM-2|HM-LC-Dim1T-DR|HM-LC-Dim1T-FM-LF|HM-LC-Dim1T-FM-2|HM-LC-Dim1T-Pl-3|HM-LC-Dim1TPBU-FM|HM-LC-Dim1TPBU-FM-2" => {
- _description => "Funk-Abschnitt-Dimmaktor",
- _channels => "1",
- ccureadingfilter => "(^LEVEL\$|DIRECTION)",
- ccuscaleval => "LEVEL:0:1:0:100",
- cmdIcon => "on:general_an off:general_aus",
- controldatapoint => "LEVEL",
- hmstatevals => "ERROR_REDUCED!1:error_reduced;ERROR_OVERHEAT!1:error_overheat;ERROR_OVERLOAD!1:error_overload",
- statedatapoint => "LEVEL",
- statevals => "on:100,off:0",
- stripnumber => 1,
- substexcl => "control",
- substitute => "ERROR_OVERHEAT,ERROR_OVERLOAD,ERROR_REDUCED!(0|false):no,(1|true):yes;LEVEL!#0-0:off,#1-100:on;DIRECTION!0:none,1:up,2:down,3:undefined",
- webCmd => "control:on:off",
- widgetOverride => "control:slider,0,10,100"
- },
- "HM-PB-2-FM" => {
- _description => "Funk-Wandtaster 2-fach",
- _channels => "1,2",
- ccureadingfilter => "PRESS",
- statedatapoint => "PRESS_SHORT",
- statevals => "press:true",
- substitute => "PRESS_SHORT,PRESS_LONG,PRESS_CONT!(1|true):pressed,(0|false):released;PRESS_LONG_RELEASE!(0|false):no,(1|true):yes"
- },
- "HmIP-WRC6" => {
- _description => "Wandtaster 6-fach",
- _channels => "1,2,3,4,5,6",
- ccureadingfilter => "PRESS",
- statedatapoint => "PRESS_SHORT",
- statevals => "press:true",
- substitute => "PRESS_SHORT,PRESS_LONG!(1|true):pressed,(0|false):released"
- },
- "HM-SwI-3-FM" => {
- _description => "Funk-Schalterschnittstelle",
- _channels => "1,2,3",
- ccureadingfilter => "PRESS",
- statedatapoint => "PRESS",
- statevals => "press:true",
- substitute => "PRESS!(1|true):pressed,(0|false):released"
- },
- "HM-PBI-4-FM" => {
- _description => "Funk-Tasterschnittstelle",
- _channels => "1,2,3,4",
- ccureadingfilter => "PRESS",
- statedatapoint => "PRESS_SHORT",
- statevals => "press:true",
- substitute => "PRESS_SHORT,PRESS_LONG,PRESS_CONT!(1|true):pressed,(0|false):released;PRESS_LONG_RELEASE!(0|false):no,(1|true):yes"
- },
- "HM-RC-Key4-2|HM-RC-Key4-3|HM-RC-Sec4-2|HM-RC-Sec4-3" => {
- _description => "Funk-Handsender",
- _channels => "1,2,3,4",
- ccureadingfilter => "PRESS",
- "event-on-update-reading" => ".*",
- statedatapoint => "PRESS_SHORT",
- substitute => "PRESS_SHORT,PRESS_LONG!(1|true):pressed"
- },
- "HM-LC-Sw1PBU-FM" => {
- _description => "Unterputz Schaltaktor für Markenschalter",
- _channels => "1",
- ccureadingfilter => "STATE",
- controldatapoint => "STATE",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(true|1):on,(false|0):off",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HM-LC-Sw2PBU-FM" => {
- _description => "Funk-Schaltaktor 2-fach",
- _channels => "1,2",
- ccureadingfilter => "STATE",
- controldatapoint => "STATE",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(true|1):on,(false|0):off",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HmIP-BSM" => {
- _description => "Schalt-Mess-Aktor",
- _channels => "4",
- ccureadingfilter => "STATE",
- statedatapoint => "STATE",
- controldatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(true|1):on,(false|0):off",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HM-SCI-3-FM" => {
- _description => "3 Kanal Schliesserkontakt",
- _channels => "1,2,3",
- ccureadingfilter => "STATE",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off"
- },
- "HM-MOD-Re-8" => {
- _description => "8 Kanal Empfangsmodul",
- _channels => "1,2,3,4,5,6,7,8",
- ccureadingfilter => "(STATE|WORKING)",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off;WORKING!(1|true):yes,(0|false):no"
- },
- "HM-LC-Sw1-Pl|HM-LC-Sw1-Pl-2|HM-LC-Sw1-SM|HM-LC-Sw1-FM|HM-LC-Sw1-PB-FM" => {
- _description => "1 Kanal Funk-Schaltaktor",
- _channels => "1",
- ccureadingfilter => "STATE",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off"
- },
- "HM-LC-Sw2-SM|HM-LC-Sw2-FM|HM-LC-Sw2-PB-FM|HM-LC-Sw2-DR" => {
- _description => "2 Kanal Funk-Schaltaktor",
- _channels => "1,2",
- ccureadingfilter => "STATE",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off"
- },
- "HM-LC-Sw4-DR|HM-LC-Sw4-WM|HM-LC-Sw4-PCB|HM-LC-Sw4-SM" => {
- _description => "4 Kanal Funk-Schaltaktor",
- _channels => "1,2,3,4",
- ccureadingfilter => "STATE",
- statedatapoint => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off"
- },
- "HM-LC-Bl1PBU-FM|HM-LC-Bl1-FM|HM-LC-Bl1-SM|HM-LC-BlX|HM-LC-Bl1-SM-2|HM-LC-Bl1-FM-2|HM-LC-Ja1PBU-FM" => {
- _description => "Jalousienaktor",
- _channels => "1",
- ccureadingfilter => "(LEVEL|INHIBIT|DIRECTION|WORKING)",
- ccureadingname => "LEVEL:+pct",
- ccuscaleval => "LEVEL:0:1:0:100",
- cmdIcon => "up:fts_shutter_up stop:fts_shutter_manual down:fts_shutter_down",
- controldatapoint => "LEVEL",
- eventMap => "/datapoint STOP true:stop/datapoint LEVEL 0:down/datapoint LEVEL 100:up/",
- statedatapoint => "LEVEL",
- stripnumber => 1,
- substexcl => "control|pct",
- substitute => "LEVEL!#0-0:closed,#100-100:open;DIRECTION!0:stop,1:up,2:down,3:undefined;WORKING!(0|false):no,(1|true):yes",
- webCmd => "control:up:stop:down",
- widgetOverride => "control:slider,0,10,100"
- },
- "HM-WDS40-TH-I|HM-WDS10-TH-O|HM-WDS20-TH-O|IS-WDS-TH-OD-S-R3|ASH550I|ASH550" => {
- _description => "Temperatur/Luftfeuchte Sensor",
- _channels => "1",
- ccureadingfilter => "(^HUMIDITY|^TEMPERATURE)",
- statedatapoint => "TEMPERATURE",
- stripnumber => 1
- },
- "HM-WDS100-C6-O-2" => {
- _description => "Funk-Kombisensor",
- _channels => "1",
- ccureadingfilter => "(HUMIDITY|TEMPERATURE|WIND|RAIN|SUNSHINE|BRIGHTNESS)",
- statedatapoint => "TEMPERATURE",
- stripnumber => 1,
- substitute => "RAINING!(1|true):yes,(0|false):no"
- },
- "HM-Sec-MD|HM-Sec-MDIR|HM-Sec-MDIR-2|HM-Sec-MDIR-3" => {
- _description => "Bewegungsmelder",
- _channels => "1",
- ccureadingfilter => "(BRIGHTNESS|MOTION)",
- hmstatevals => "ERROR!1:sabotage",
- statedatapoint => "MOTION",
- substitute => "MOTION!(0|false):no,(1|true):yes;ERROR!0:no,1:sabotage"
- },
- "HmIP-SMI" => {
- _description => "Bewegungsmelder",
- _channels => "1",
- ccureadingfilter => "(ILLUMINATION|MOTION)",
- eventMap => "/datapoint MOTION_DETECTION_ACTIVE 1:detection-on/datapoint MOTION_DETECTION_ACTIVE 0:detection-off/",
- statedatapoint => "MOTION",
- substitute => "MOTION!(0|false):no,(1|true):yes"
- },
- "HmIP-SPI" => {
- _description => "Anwesenheitssensor",
- _channels => "1",
- ccureadingfilter => "(ILLUMINATION|PRESENCE)",
- controldatapoint => "PRESENCE_DETECTION_ACTIVE",
- eventMap => "/datapoint RESET_PRESENCE 1:reset/datapoint PRESENCE_DETECTION_ACTIVE 1:detection-on/datapoint PRESENCE_DETECTION_ACTIVE 0:detection-off/",
- hmstatevals => "SABOTAGE!(1|true):sabotage",
- statedatapoint => "PRESENCE_DETECTION_STATE",
- stripnumber => 1,
- substitute => "PRESENCE_DETECTION_STATE!(0|false):no,(1|true):yes;PRESENCE_DETECTION_ACTIVE!(0|false):off,(1|true):on",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HM-Sen-LI-O" => {
- _description => "Lichtsensor",
- _channels => "1",
- ccureadingfilter => "LUX",
- statedatapoint => "LUX",
- stripnumber => 1
- },
- "HM-CC-SCD" => {
- _description => "CO2 Sensor",
- _channels => "1",
- statedatapoint => "STATE",
- substitute => "STATE!0:normal,1:added,2:strong"
- },
- "HM-Sec-SD-2" => {
- _description => "Funk-Rauchmelder",
- _channels => "1",
- ccureadingfilter => "STATE",
- hmstatevals => "ERROR_ALARM_TEST!1:alarm_test_failed;ERROR_SMOKE_CHAMBER!1:degraded_smoke_chamber",
- statedatapoint => "STATE",
- substitute => "ERROR_ALARM_TEST!0:no,1:failed;ERROR_SMOKE_CHAMBER!0:no,1:degraded"
- },
- "HmIP-SWSD" => {
- _description => "Funk-Rauchmelder",
- _channels => "1",
- ccureadingfilter => "(ALARM_STATUS|TEST_RESULT|ERROR_CODE)",
- eventMap => "/datapoint SMOKE_DETECTOR_COMMAND 0:reservedAlarmOff/datapoint SMOKE_DETECTOR_COMMAND 1:intrusionAlarmOff/datapoint SMOKE_DETECTOR_COMMAND 2:intrusionAlarmOn/datapoint SMOKE_DETECTOR_COMMAND 3:smokeTest/datapoint SMOKE_DETECTOR_COMMAND 4:comTest/datapoint SMOKE_DETECTOR_COMMAND 5:comTestRepeat/",
- statedatapoint => "SMOKE_DETECTOR_ALARM_STATUS",
- substitute => "SMOKE_DETECTOR_ALARM_STATUS!0:noAlarm,1:primaryAlarm,2:intrusionAlarm,3:secondaryAlarm;SMOKE_DETECTOR_TEST_RESULT!0:none,1:smokeTestOK,2:smokeTestFailed,3:comTestSent,4:comTestOK"
- },
- "HM-Sec-SFA-SM" => {
- _description => "Alarmsirene",
- _channels => "1",
- ccureadingfilter => "STATE",
- hmstatevals => "ERROR_POWER!1:power_failure;ERROR_SABOTAGE!1:sabotage;ERROR_BATTERY!1:battery_defect",
- statedatapoint => "STATE",
- substitute => "STATE!(0|false):off,(1|true):alarm;ERROR_POWER!0:no,1:failure;ERROR_SABOTAGE!0:no,1:sabotage;ERROR_BATTERY!0:no,1:defect"
- },
- "WS550|WS888|WS550Tech|WS550LCB|WS550LCW|HM-WDC7000" => {
- _description => "Wetterstation",
- _channels => "10",
- ccureadingfilter => "(TEMPERATURE|HUMIDITY|AIR_PRESSURE)",
- statedatapoint => "TEMPERATURE",
- stripnumber => 1
- },
- "HM-Sec-WDS|HM-Sec-WDS-2" => {
- _description => "Funk-Wassermelder",
- _channels => "1",
- ccureadingfilter => "STATE",
- statedatapoint => "STATE",
- substitute => "STATE!0:dry,1:wet,2:water"
- },
- "HM-WDS30-OT2-SM|HM-WDS30-OT2-SM-2" => {
- _description => "Temperaturdifferenz-Sensor",
- _channels => "1,2,3,4,5",
- ccureadingfilter => "TEMPERATURE",
- statedatapoint => "TEMPERATURE",
- stripnumber => 1
- },
- "HM-OU-LED16|HM-OU-X" => {
- _description => "Statusanzeige 16 Kanal LED",
- _channels => "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16",
- ccureadingfilter => "PRESS_SHORT|LED_STATUS",
- eventMap => "/datapoint LED_SLEEP_MODE 0:sleep-off/datapoint LED_SLEEP_MODE 1:sleep-on/",
- statedatapoint => "LED_STATUS",
- statevals => "off:0,red:1,green:2,orange:3",
- substitute => "LED_STATUS!0:off,1:red:2:green:3:orange"
- }
- );
- ######################################################################
- # Default attributes for Homematic devices of type HMCCUDEV
- ######################################################################
- %HMCCU_DEV_DEFAULTS = (
- "CCU2" => {
- _description => "HomeMatic CCU2",
- "ccudef-readingfilter" => '^(LOW_?BAT|UNREACH)\$',
- "ccudef-readingformat" => 'datapoint',
- "ccudef-readingname" => '^(.+\.)?AES_KEY\$:sign;^(.+\.)?LOW_?BAT\$:battery;^(.+\.)?BATTERY_STATE\$:batteryLevel;^(.+\.)?UNREACH\$:Activity;^(.+\.)?TEMPERATURE\$:+temperature;^(.+\.)?SET_TEMPERATURE\$:+desired-temp;^(.+\.)?HUMIDITY\$:+humidity;^(.+\.)?LEVEL\$:+pct;^(.+\.)?CONTROL_MODE\$:+controlMode',
- "ccudef-substitute" => 'AES_KEY!(0|false):off,(1|true):on;LOWBAT,LOW_BAT!(0|false):ok,(1|true):low;UNREACH!(0|false):alive,(1|true):dead;MOTION!(0|false):noMotion,(1|true):motion;DIRECTION!0:stop,1:up,2:down,3:undefined;WORKING!0:false,1:true;INHIBIT!(0|false):unlocked,(1|true):locked'
- },
- "HM-Sec-SCo|HM-Sec-SC|HM-Sec-SC-2|HMIP-SWDO" => {
- _description => "Tuer/Fensterkontakt optisch und magnetisch",
- ccureadingfilter => "STATE",
- hmstatevals => "ERROR!7:sabotage;SABOTAGE!1:sabotage",
- statedatapoint => "1.STATE",
- substitute => "STATE!(0|false):closed,(1|true):open"
- },
- "HmIP-SWDO-I" => {
- _description => "Tuer/Fensterkontakt verdeckt",
- ccureadingfilter => "STATE",
- hmstatevals => "SABOTAGE!1:sabotage",
- statedatapoint => "1.STATE",
- substitute => "STATE!(0|false):closed,(1|true):open"
- },
- "HM-Sec-RHS|HM-Sec-RHS-2" => {
- _description => "Fenster Drehgriffkontakt",
- ccureadingfilter => "STATE",
- hmstatevals => "ERROR!1:sabotage",
- statedatapoint => "1.STATE",
- substitute => "STATE!0:closed,1:tilted,2:open;ERROR!0:no,1:sabotage"
- },
- "HM-Sec-Key|HM-Sec-Key-S|HM-Sec-Key-O|HM-Sec-Key-Generic" => {
- _description => "Funk-Tuerschlossantrieb KeyMatic",
- ccureadingfilter => "(STATE|INHIBIT)",
- eventMap => "/datapoint 1.OPEN true:open/",
- hmstatevals => "ERROR!1:clutch_failure,2:motor_aborted",
- statedatapoint => "1.STATE",
- statevals => "lock:false,unlock:true",
- substitute => "STATE!(0|false):locked,(1|true):unlocked,2:open;INHIBIT!(0|false):no,(1|true):yes;STATE_UNCERTAIN!(1|true):manual;DIRECTION!0:none,1:up,2:down,3:undefined;ERROR!0:no,1:clutch_failure,2:motor_aborted"
- },
- "HM-Sec-Win|HM-Sec-Win-Generic" => {
- _description => "WinMatic",
- ccureadingfilter => "(STATE_UNCERTAIN|INHIBIT|LEVEL|STATUS)",
- ccuscaleval => "LEVEL:0:1:0:100,SPEED:0.1:0:100",
- eventMap => "/datapoint 1.STOP true:stop/",
- statedatapoint => "1.LEVEL",
- statevals => "open:100,close:0",
- stripnumber => 1,
- substitute => "LEVEL!-0.005:locked,#0-0:closed,#100-100:open;INHIBIT!(0|false):no,(1|true):yes;ERROR!0:no,1:motor_turn,2:motor_tilt;STATUS!0:trickle_charge,1:charge,2:discharge,3:unknown"
- },
- "HM-LC-Sw1-Pl-CT-R1" => {
- _description => "Schaltaktor mit Klemmanschluss",
- ccureadingfilter => "(STATE|WORKING)",
- cmdIcon => "press:general_an",
- eventMap => "/on-for-timer 1:press/",
- statedatapoint => "1.STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(0|false):off,(1|true):on;WORKING!(0|false):no,(1|true):yes",
- webCmd => "press"
- },
- "HM-LC-Sw1-Pl-2|HM-LC-Sw1-Pl-DN-R1" => {
- _description => "Steckdose",
- ccureadingfilter => "STATE",
- statedatapoint => "1.STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off",
- webCmd => "devstate",
- widgetOverride => "devstate:uzsuToggle,off,on"
- },
- "HMIP-PS" => {
- _description => "Steckdose IP",
- ccureadingfilter => "STATE",
- statedatapoint => "3.STATE",
- statevals => "on:1,off:0",
- substitute => "STATE!(1|true):on,(0|false):off",
- webCmd => "devstate",
- widgetOverride => "devstate:uzsuToggle,off,on"
- },
- "HM-ES-PMSw1-Pl|HM-ES-PMSw1-Pl-DN-R1|HM-ES-PMSw1-Pl-DN-R2|HM-ES-PMSw1-Pl-DN-R3|HM-ES-PMSw1-Pl-DN-R4|HM-ES-PMSw1-Pl-DN-R5" => {
- _description => "Steckdose mit Energiemessung",
- ccureadingfilter => "(STATE|CURRENT|ENERGY_COUNTER|POWER)",
- controldatapoint => "1.STATE",
- statedatapoint => "1.STATE",
- statevals => "on:1,off:0",
- stripnumber => 1,
- substitute => "STATE!(1|true):on,(0|false):off",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HMIP-PSM" => {
- _description => "Steckdose mit Energiemessung IP",
- ccureadingfilter => "(STATE|CURRENT|^ENERGY_COUNTER\$|POWER)",
- controldatapoint => "3.STATE",
- statedatapoint => "3.STATE",
- statevals => "on:true,off:false",
- stripnumber => 1,
- substitute => "STATE!(true|1):on,(false|0):off",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- }, "HM-LC-Dim1L-Pl|HM-LC-Dim1L-Pl-2|HM-LC-Dim1L-CV|HM-LC-Dim2L-CV|HM-LC-Dim2L-SM|HM-LC-Dim1L-Pl-3|HM-LC-Dim1L-CV-2" => {
- _description => "Funk-Anschnitt-Dimmaktor",
- ccureadingfilter => "(^LEVEL\$|DIRECTION)",
- ccuscaleval => "LEVEL:0:1:0:100",
- cmdIcon => "on:general_an off:general_aus",
- controldatapoint => "1.LEVEL",
- hmstatevals => "ERROR!1:load_failure",
- statedatapoint => "1.LEVEL",
- statevals => "on:100,off:0",
- stripnumber => 1,
- substexcl => "control",
- substitute => "ERROR!0:no,1:load_failure;LEVEL!#0-0:off,#1-100:on",
- webCmd => "control:on:off",
- widgetOverride => "control:slider,0,10,100"
- },
- "HM-LC-Dim1PWM-CV|HM-LC-Dim1PWM-CV-2" => {
- _description => "Funk-PWM-Dimmaktor",
- ccureadingfilter => "(^LEVEL\$|DIRECTION)",
- ccuscaleval => "LEVEL:0:1:0:100",
- cmdIcon => "on:general_an off:general_aus",
- controldatapoint => "1.LEVEL",
- hmstatevals => "ERROR_REDUCED!1:error_reduced;ERROR_OVERHEAT!1:error_overheat",
- statedatapoint => "1.LEVEL",
- statevals => "on:100,off:0",
- stripnumber => 1,
- substexcl => "control",
- substitute => "ERROR_REDUCED,ERROR_OVERHEAT!(0|false):no,(1|true):yes;LEVEL!#0-0:off,#1-100:on;DIRECTION!0:none,1:up,2:down,3:undefined",
- webCmd => "control:on:off",
- widgetOverride => "control:slider,0,10,100"
- },
- "HM-LC-Dim1T-Pl|HM-LC-Dim1T-CV|HM-LC-Dim1T-FM|HM-LC-Dim1T-CV-2|HM-LC-Dim2T-SM|HM-LC-Dim2T-SM-2|HM-LC-Dim1T-DR|HM-LC-Dim1T-FM-LF|HM-LC-Dim1T-FM-2|HM-LC-Dim1T-Pl-3|HM-LC-Dim1TPBU-FM|HM-LC-Dim1TPBU-FM-2" => {
- _description => "Funk-Abschnitt-Dimmaktor",
- ccureadingfilter => "(^LEVEL\$|DIRECTION)",
- ccuscaleval => "LEVEL:0:1:0:100",
- cmdIcon => "on:general_an off:general_aus",
- controldatapoint => "1.LEVEL",
- hmstatevals => "ERROR_REDUCED!1:error_reduced;ERROR_OVERHEAT!1:error_overheat;ERROR_OVERLOAD!1:error_overload",
- statedatapoint => "1.LEVEL",
- statevals => "on:100,off:0",
- stripnumber => 1,
- substexcl => "control",
- substitute => "ERROR_OVERHEAT,ERROR_OVERLOAD,ERROR_REDUCED!(0|false):no,(1|true):yes;LEVEL!#0-0:off,#1-100:on;DIRECTION!0:none,1:up,2:down,3:undefined",
- webCmd => "control:on:off",
- widgetOverride => "control:slider,0,10,100"
- },
- "HM-PB-2-FM" => {
- _description => "Funk-Wandtaster 2-fach",
- ccureadingfilter => "PRESS",
- substitute => "PRESS_SHORT,PRESS_LONG,PRESS_CONT!(1|true):pressed,(0|false):released;PRESS_LONG_RELEASE!(0|false):no,(1|true):yes"
- },
- "HmIP-WRC6" => {
- _description => "Wandtaster 6-fach",
- ccureadingfilter => "PRESS",
- substitute => "PRESS_SHORT,PRESS_LONG!(1|true):pressed,(0|false):released"
- },
- "HM-SwI-3-FM" => {
- _description => "Funk-Schalterschnittstelle",
- ccureadingfilter => "PRESS",
- statevals => "press:true",
- substitute => "PRESS!(1|true):pressed,(0|false):released"
- },
- "HM-PBI-4-FM" => {
- _description => "Funk-Tasterschnittstelle",
- ccureadingfilter => "PRESS",
- substitute => "PRESS_SHORT,PRESS_LONG,PRESS_CONT!(1|true):pressed,(0|false):released;PRESS_LONG_RELEASE!(0|false):no,(1|true):yes"
- },
- "HM-RC-Key4-2|HM-RC-Key4-3|HM-RC-Sec4-2|HM-RC-Sec4-3" => {
- _description => "Funk-Handsender",
- ccureadingfilter => "PRESS",
- "event-on-update-reading" => ".*",
- substitute => "PRESS_SHORT,PRESS_LONG!(1|true):pressed"
- },
- "HM-LC-Sw1PBU-FM" => {
- _description => "Unterputz Schaltaktor für Markenschalter",
- ccureadingfilter => "STATE",
- controldatapoint => "1.STATE",
- statedatapoint => "1.STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(true|1):on,(false|0):off",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HM-LC-Sw2PBU-FM" => {
- _description => "Funk-Schaltaktor 2-fach",
- ccureadingfilter => "STATE",
- controldatapoint => "1.STATE",
- statedatapoint => "1.STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(true|1):on,(false|0):off",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HmIP-BSM" => {
- _description => "Schalt-Mess-Aktor",
- ccureadingfilter => "(STATE|PRESS)",
- statedatapoint => "4.STATE",
- controldatapoint => "4.STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(true|1):on,(false|0):off",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HM-LC-SW4-BA-PCB|HM-SCI-3-FM" => {
- _description => "4 Kanal Funk Schaltaktor für Batteriebetrieb, 3 Kanal Schließerkontakt",
- ccureadingfilter => "STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off"
- },
- "HM-MOD-Re-8" => {
- _description => "8 Kanal Empfangsmodul",
- ccureadingfilter => "(STATE|WORKING)",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off;WORKING!(1|true):yes,(0|false):no"
- },
- "HM-LC-Sw1-Pl|HM-LC-Sw1-Pl-2|HM-LC-Sw1-SM|HM-LC-Sw1-FM|HM-LC-Sw1-PB-FM" => {
- _description => "1 Kanal Funk-Schaltaktor",
- ccureadingfilter => "STATE",
- statedatapoint => "1.STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(1|true):on,(0|false):off"
- },
- "HM-LC-Bl1PBU-FM|HM-LC-Bl1-FM|HM-LC-Bl1-SM|HM-LC-BlX|HM-LC-Bl1-SM-2|HM-LC-Bl1-FM-2|HM-LC-Ja1PBU-FM" => {
- _description => "Jalousienaktor",
- ccureadingfilter => "(LEVEL|INHIBIT|DIRECTION|WORKING)",
- ccuscaleval => "LEVEL:0:1:0:100",
- cmdIcon => "up:fts_shutter_up stop:fts_shutter_manual down:fts_shutter_down",
- controldatapoint => "1.LEVEL",
- eventMap => "/datapoint 1.STOP true:stop/datapoint 1.LEVEL 0:down/datapoint 1.LEVEL 100:up/",
- statedatapoint => "1.LEVEL",
- stripnumber => 1,
- substexcl => "control",
- substitute => "LEVEL!#0-0:closed,#100-100:open;DIRECTION!0:none,1:up,2:down,3:undefined;WORKING!(0|false):no,(1|true):yes",
- webCmd => "control:up:stop:down",
- widgetOverride => "control:slider,0,10,100"
- },
- "HM-TC-IT-WM-W-EU" => {
- _description => "Wandthermostat",
- ccureadingfilter => "(^HUMIDITY|^TEMPERATURE|^SET_TEMPERATURE|^WINDOW_OPEN)",
- cmdIcon => "Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus",
- controldatapoint => "2.SET_TEMPERATURE",
- eventMap => "/datapoint 2.MANU_MODE 20.0:Manu/datapoint 2.AUTO_MODE 1:Auto/datapoint 2.BOOST_MODE 1:Boost/datapoint 2.MANU_MODE 4.5:off/datapoint 2.MANU_MODE 30.5:on/",
- genericDeviceType => "thermostat",
- statedatapoint => "2.SET_TEMPERATURE",
- stripnumber => 1,
- substexcl => "control",
- substitute => "CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on",
- webCmd => "control:Auto:Manu:Boost:on:off",
- widgetOverride => "control:slider,4.5,0.5,30.5,1"
- },
- "HM-CC-RT-DN" => {
- _description => "Heizkoerperthermostat",
- ccureadingfilter => "(TEMPERATURE|VALVE_STATE|CONTROL)",
- cmdIcon => "Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus",
- controldatapoint => "4.SET_TEMPERATURE",
- eventMap => "/datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost/datapoint 4.MANU_MODE 4.5:off/datapoint 4.MANU_MODE 30.5:on/",
- genericDeviceType => "thermostat",
- hmstatevals => "FAULT_REPORTING!1:valve_tight,2:range_too_large,3:range_too_small,4:communication_error,5:other_error,6:battery_low,7:valve_error_pos",
- statedatapoint => "4.SET_TEMPERATURE",
- stripnumber => 1,
- substexcl => "control",
- substitute => "CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;SET_TEMPERATURE!#0-4.5:off,#30.5-40:on;FAULT_REPORTING!0:no,1:valve_tight,2:range_too_large,3:range_too_small,4:communication_error,5:other_error,6:battery_low,7:valve:error_pos",
- webCmd => "control:Auto:Manu:Boost:on:off",
- widgetOverride => "control:slider,4.5,0.5,30.5,1"
- },
- "HmIP-eTRV|HmIP-eTRV-2" => {
- _description => "Heizkoerperthermostat HM-IP",
- ccureadingfilter => "^ACTUAL_TEMPERATURE|^BOOST_MODE|^SET_POINT_MODE|^SET_POINT_TEMPERATURE|^LEVEL|^WINDOW_STATE",
- ccureadingname => "1.LEVEL:valve_position",
- ccuscaleval => "LEVEL:0:1:0:100",
- controldatapoint => "1.SET_POINT_TEMPERATURE",
- eventMap => "/datapoint 1.BOOST_MODE true:Boost/datapoint 1.CONTROL_MODE 0:Auto/datapoint 1.CONTROL_MODE 1:Manual/datapoint 1.CONTROL_MODE 2:Holiday/datapoint 1.SET_POINT_TEMPERATURE 4.5:off/datapoint 1.SET_POINT_TEMPERATURE 30.5:on/",
- genericDeviceType => "thermostat",
- statedatapoint => "1.SET_POINT_TEMPERATURE",
- stripnumber => 1,
- substexcl => "control",
- substitute => "SET_POINT_TEMPERATURE!#0-4.5:off,#30.5-40:on;WINDOW_STATE!(0|false):closed,(1|true):open",
- webCmd => "control:Boost:Auto:Manual:Holiday:on:off",
- widgetOverride => "control:slider,4.5,0.5,30.5,1"
- },
- "HmIP-WTH|HmIP-WTH-2" => {
- _description => "Wandthermostat HM-IP",
- controldatapoint => "1.SET_POINT_TEMPERATURE",
- eventMap => "/datapoint 1.BOOST_MODE true:Boost/datapoint 1.CONTROL_MODE 0:Auto/datapoint 1.CONTROL_MODE 1:Manual/datapoint 1.CONTROL_MODE 2:Holiday/datapoint 1.SET_POINT_TEMPERATURE 4.5:off/datapoint 1.SET_POINT_TEMPERATURE 30.5:on/",
- genericDeviceType => "thermostat",
- statedatapoint => "1.SET_POINT_TEMPERATURE",
- stripnumber => 1,
- substexcl => "control",
- substitute => "SET_POINT_TEMPERATURE!#0-4.5:off,#30.5-40:on;WINDOW_STATE!(0|false):closed,(1|true):open",
- webCmd => "control:Boost:Auto:Manual:Holiday:on:off",
- widgetOverride => "control:slider,4.5,0.5,30.5,1"
- },
- "HM-WDS40-TH-I|HM-WDS10-TH-O|HM-WDS20-TH-O|IS-WDS-TH-OD-S-R3|ASH550I|ASH550" => {
- _description => "Temperatur/Luftfeuchte Sensor",
- ccureadingfilter => "(^HUMIDITY|^TEMPERATURE)",
- statedatapoint => "1.TEMPERATURE",
- stripnumber => 1
- },
- "HM-Sen-RD-O" => {
- _description => "Regensensor",
- ccureadingfilter => "(STATE|WORKING)",
- controldatapoint => "2.STATE",
- eventMap => "/datapoint 2.STATE 1:on/datapoint 2.STATE 0:off/",
- statedatapoint => "1.STATE",
- substitute => "1.STATE!(0|false):dry,(1|true):rain;2.STATE!(0|false):off,(1|true):on",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HM-WDS100-C6-O-2" => {
- _description => "Funk-Kombisensor",
- ccureadingfilter => "(HUMIDITY|TEMPERATURE|WIND|RAIN|SUNSHINE|BRIGHTNESS)",
- statedatapoint => "1.TEMPERATURE",
- stripnumber => 1,
- substitute => "RAINING!(1|true):yes,(0|false):no"
- },
- "HM-ES-TX-WM" => {
- _description => "Energiezaehler Sensor",
- ccureadingfilter => "(ENERGY_COUNTER|POWER)"
- },
- "HM-CC-VG-1" => {
- _description => "Heizungsgruppe",
- ccureadingfilter => "(^SET_TEMPERATURE|^TEMPERATURE|^HUMIDITY|^VALVE|^CONTROL|^WINDOW_OPEN)",
- cmdIcon => "Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus",
- controldatapoint => "1.SET_TEMPERATURE",
- eventMap => "/datapoint 1.MANU_MODE 20.0:Manu/datapoint 1.AUTO_MODE 1:Auto/datapoint 1.BOOST_MODE 1:Boost/datapoint 1.MANU_MODE 4.5:off/datapoint 1.MANU_MODE 30.5:on/",
- statedatapoint => "1.SET_TEMPERATURE",
- stripnumber => 1,
- substexcl => "control",
- substitute => "CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed;SET_TEMPERATURE!#0-4.5:off,#30.5-40:on",
- webCmd => "control:Auto:Manu:Boost:on:off",
- widgetOverride => "control:slider,3.5,0.5,30.5,1"
- },
- "HM-Sec-MD|HM-Sec-MDIR|HM-Sec-MDIR-2|HM-Sec-MDIR-3" => {
- _description => "Bewegungsmelder",
- ccureadingfilter => "(BRIGHTNESS|MOTION)",
- hmstatevals => "ERROR!1:sabotage",
- statedatapoint => "1.MOTION",
- substitute => "MOTION!(0|false):no,(1|true):yes;ERROR!0:no,1:sabotage"
- },
- "HmIP-SMI" => {
- _description => "Bewegungsmelder",
- ccureadingfilter => "(ILLUMINATION|MOTION)",
- eventMap => "/datapoint 1.MOTION_DETECTION_ACTIVE 1:detection-on/datapoint 1.MOTION_DETECTION_ACTIVE 0:detection-off/",
- statedatapoint => "1.MOTION",
- substitute => "MOTION!(0|false):no,(1|true):yes"
- },
- "HmIP-SPI" => {
- _description => "Anwesenheitssensor",
- ccureadingfilter => "(ILLUMINATION|PRESENCE)",
- controldatapoint => "1.PRESENCE_DETECTION_ACTIVE",
- eventMap => "/datapoint 1.RESET_PRESENCE 1:reset/datapoint 1.PRESENCE_DETECTION_ACTIVE 1:detection-on/datapoint 1.PRESENCE_DETECTION_ACTIVE 0:detection-off/",
- hmstatevals => "SABOTAGE!(1|true):sabotage",
- statedatapoint => "1.PRESENCE_DETECTION_STATE",
- stripnumber => 1,
- substitute => "PRESENCE_DETECTION_STATE!(0|false):no,(1|true):yes;PRESENCE_DETECTION_ACTIVE!(0|false):off,(1|true):on",
- webCmd => "control",
- widgetOverride => "control:uzsuToggle,off,on"
- },
- "HM-Sen-LI-O" => {
- _description => "Lichtsensor",
- ccureadingfilter => "LUX",
- statedatapoint => "1.LUX",
- stripnumber => 1
- },
- "HM-CC-SCD" => {
- _description => "CO2 Sensor",
- ccureadingfilter => "STATE",
- statedatapoint => "1.STATE",
- substitute => "STATE!0:normal,1:added,2:strong"
- },
- "HM-Sec-SD-2" => {
- _description => "Funk-Rauchmelder",
- ccureadingfilter => "STATE",
- hmstatevals => "ERROR_ALARM_TEST!1:alarm_test_failed;ERROR_SMOKE_CHAMBER!1:degraded_smoke_chamber",
- statedatapoint => "1.STATE",
- substitute => "STATE!(0|false):ok,(1|true):alarm;ERROR_ALARM_TEST!0:no,1:failed;ERROR_SMOKE_CHAMBER!0:no,1:degraded"
- },
- "HM-Sec-SD-2-Team" => {
- _description => "Rauchmeldergruppe",
- ccureadingfilter => "STATE",
- statedatapoint => "1.STATE",
- substitute => "STATE!(0|false):ok,(1|true):alarm"
- },
- "HmIP-SWSD" => {
- _description => "Funk-Rauchmelder",
- ccureadingfilter => "(ALARM_STATUS|TEST_RESULT|ERROR_CODE)",
- eventMap => "/datapoint 1.SMOKE_DETECTOR_COMMAND 0:reservedAlarmOff/datapoint 1.SMOKE_DETECTOR_COMMAND 1:intrusionAlarmOff/datapoint 1.SMOKE_DETECTOR_COMMAND 2:intrusionAlarmOn/datapoint 1.SMOKE_DETECTOR_COMMAND 3:smokeTest/datapoint 1.SMOKE_DETECTOR_COMMAND 4:comTest/datapoint 1.SMOKE_DETECTOR_COMMAND 5:comTestRepeat/",
- statedatapoint => "SMOKE_DETECTOR_ALARM_STATUS",
- substitute => "SMOKE_DETECTOR_ALARM_STATUS!0:noAlarm,1:primaryAlarm,2:intrusionAlarm,3:secondaryAlarm;SMOKE_DETECTOR_TEST_RESULT!0:none,1:smokeTestOK,2:smokeTestFailed,3:comTestSent,4:comTestOK"
- },
- "HM-Sec-SFA-SM" => {
- _description => "Alarmsirene",
- ccureadingfilter => "STATE",
- hmstatevals => "ERROR_POWER!1:power_failure;ERROR_SABOTAGE!1:sabotage;ERROR_BATTERY!1:battery_defect",
- statedatapoint => "1.STATE",
- substitute => "STATE!(0|false):off,(1|true):alarm;ERROR_POWER!0:no,1:failure;ERROR_SABOTAGE!0:no,1:sabotage;ERROR_BATTERY!0:no,1:defect"
- },
- "HM-Sec-Sir-WM" => {
- _description => "Funk-Innensirene",
- ccureadingfilter => "STATE",
- ccureadingname => "1.STATE:STATE_SENSOR1;2.STATE:STATE_SENSOR2;3.STATE:STATE_PANIC",
- eventMap => "/datapoint 3.STATE true:panic/",
- hmstatevals => "ERROR_SABOTAGE!1:sabotage",
- statedatapoint => "4.ARMSTATE",
- statevals => "disarmed:0,extsens-armed:1,allsens-armed:2,alarm-blocked:3",
- substitute => "ERROR_SABOTAGE!(0|false):no,(1|true):yes;ARMSTATE!0:disarmed,1:extsens_armed,2:allsens_armed,3:alarm_blocked"
- },
- "HM-LC-RGBW-WM" => {
- _description => "Funk-RGBW-Controller",
- ccureadingfilter => "(COLOR|PROGRAM|LEVEL)",
- ccureadingname => "2.COLOR:+color;3.PROGRAM:+prog",
- controldatapoint => "1.LEVEL",
- ccuscaleval => "LEVEL:0:1:0:100",
- eventMap => "/datapoint 3.PROGRAM :prog/datapoint 2.COLOR :color/",
- statedatapoint => "1.LEVEL",
- statevals => "on:100,off:0",
- stripnumber => 1,
- substexcl => "control",
- substitute => "LEVEL!#0-0:off,#1-100:on",
- webCmd => "control:color:prog:on:off",
- widgetOverride => "control:slider,0,1,100 prog:0,1,2,3,4,5,6 color:colorpicker,HUE,0,1,100"
- },
- "WS550|WS888|WS550Tech|WS550LCB|WS550LCW|HM-WDC7000" => {
- _description => "Wetterstation",
- ccureadingfilter => "(TEMPERATURE|HUMIDITY|AIR_PRESSURE)",
- statedatapoint => "10.TEMPERATURE",
- stripnumber => 1
- },
- "HM-Sec-WDS|HM-Sec-WDS-2" => {
- _description => "Funk-Wassermelder",
- ccureadingfilter => "STATE",
- statedatapoint => "1.STATE",
- substitute => "STATE!0:dry,1:wet,2:water"
- },
- "HM-WDS30-OT2-SM|HM-WDS30-OT2-SM-2" => {
- _description => "Temperaturdifferenz-Sensor",
- ccureadingfilter => "TEMPERATURE",
- stripnumber => 1
- },
- "HM-OU-CF-Pl|HM-OU-CFM-Pl|HM-OU-CFM-TW" => {
- _description => "Funk-Gong mit Signalleuchte mit/ohne Batterie und Speicher",
- ccureadingfilter => "STATE",
- eventMap => "/datapoint 1.STATE 1:led-on/datapoint 1.STATE 0:led-off/datapoint 2.STATE 1:sound-on/datapoint 2.STATE 0:sound-off",
- statedatapoint => "1.STATE",
- statevals => "on:true,off:false",
- substitute => "STATE!(0|false):ledOff,(1|true):ledOn;2.STATE!(0|false):soundOff,(1|true):soundOn"
- },
- "HM-PB-4Dis-WM" => {
- _description => "Funk-Display Wandtaster",
- ccureadingfilter => "(PRESS_SHORT|PRESS_LONG)",
- substitute => "PRESS_SHORT,PRESS_LONG!(1|true):pressed"
- },
- "HM-Dis-EP-WM55|HM-Dis-WM55" => {
- _description => "E-Paper Display, Display Statusanzeige",
- ccureadingfilter => "PRESS",
- eventMap => "/datapoint 3.SUBMIT:display/",
- substitute => "PRESS_LONG,PRESS_SHORT,PRESS_CONT!(1|true):pressed,(0|false):notPressed;PRESS_LONG_RELEASE!(1|true):release",
- widgetOverride => "display:textField"
- },
- "CUX-HM-TC-IT-WM-W-EU" => {
- _description => "CUxD Wandthermostat",
- ccureadingfilter => "(TEMP|HUM|DEW)",
- stripnumber => 1
- }
- );
- ######################################################################
- # Homematic scripts.
- # Scripts can be executed via HMCCU set command 'hmscript'. Script
- # name must be preceeded by a '!'.
- # Example:
- # set mydev hmscript !CreateStringVariable MyVar test "Test variable"
- ######################################################################
- %HMCCU_SCRIPTS = (
- "ActivateProgram" => {
- description => "Activate or deactivate a CCU program",
- syntax => "name, mode",
- parameters => 2,
- code => qq(
- object oPR = dom.GetObject("\$name");
- if (oPR) {
- oPR.Active(\$mode);
- }
- )
- },
- "CreateStringVariable" => {
- description => "Create CCU system variable of type STRING",
- syntax => "name, unit, init, desc",
- parameters => 4,
- code => qq(
- object oSV = dom.GetObject("\$name");
- if (!oSV){
- object oSysVars = dom.GetObject(ID_SYSTEM_VARIABLES);
- oSV = dom.CreateObject(OT_VARDP);
- oSysVars.Add(oSV.ID());
- oSV.Name("\$name");
- oSV.ValueType(ivtString);
- oSV.ValueSubType(istChar8859);
- oSV.DPInfo("\$desc");
- oSV.ValueUnit("\$unit");
- oSV.State("\$init");
- oSV.Internal(false);
- oSV.Visible(true);
- dom.RTUpdate(false);
- }
- else {
- oSV.State("\$init");
- }
- )
- },
- "CreateNumericVariable" => {
- description => "Create CCU system variable of type FLOAT",
- syntax => "name, unit, init, desc, min, max",
- parameters => 6,
- code => qq(
- object oSV = dom.GetObject("\$name");
- if (!oSV){
- object oSysVars = dom.GetObject(ID_SYSTEM_VARIABLES);
- oSV = dom.CreateObject(OT_VARDP);
- oSysVars.Add(oSV.ID());
- oSV.Name("\$name");
- oSV.ValueType(ivtFloat);
- oSV.ValueSubType(istGeneric);
- oSV.ValueMin(\$min);
- oSV.ValueMax(\$max);
- oSV.DPInfo("\$desc");
- oSV.ValueUnit("\$unit");
- oSV.State("\$init");
- oSV.Internal(false);
- oSV.Visible(true);
- dom.RTUpdate(false);
- }
- else {
- oSV.State("\$init");
- }
- )
- },
- "CreateBoolVariable" => {
- description => "Create CCU system variable of type BOOL",
- syntax => "name, unit, init, desc, valtrue, valfalse",
- parameters => 6,
- code => qq(
- object oSV = dom.GetObject("\$name");
- if (!oSV){
- object oSysVars = dom.GetObject(ID_SYSTEM_VARIABLES);
- oSV = dom.CreateObject(OT_VARDP);
- oSysVars.Add(oSV.ID());
- oSV.Name("\$name");
- oSV.ValueType(ivtBinary);
- oSV.ValueSubType(istBool);
- oSV.ValueName0("\$value1");
- oSV.ValueName1("\$value2");
- oSV.DPInfo("\$desc");
- oSV.ValueUnit("\$unit");
- oSV.State("\$init");
- dom.RTUpdate(false);
- }
- else {
- oSV.State("\$init");
- }
- )
- },
- "CreateListVariable" => {
- description => "Create CCU system variable of type LIST",
- syntax => "name, unit, init, desc, list",
- parameters => 5,
- code => qq(
- object oSV = dom.GetObject("\$name");
- if (!oSV){
- object oSysVars = dom.GetObject(ID_SYSTEM_VARIABLES);
- oSV = dom.CreateObject(OT_VARDP);
- oSysVars.Add(oSV.ID());
- oSV.Name("\$name");
- oSV.ValueType(ivtInteger);
- oSV.ValueSubType(istEnum);
- oSV.ValueList("\$list");
- oSV.DPInfo("\$desc");
- oSV.ValueUnit("\$unit");
- oSV.State("\$init");
- dom.RTUpdate(false);
- }
- else {
- oSV.State("\$init");
- }
- )
- },
- "DeleteObject" => {
- description => "Delete CCU object",
- syntax => "name, type",
- parameters => 2,
- code => qq(
- object oSV = dom.GetObject("\$name");
- if (oSV) {
- if (oSV.IsTypeOf(\$type)) {
- dom.DeleteObject(oSV.ID());
- }
- }
- )
- },
- "GetVariables" => {
- description => "Query system variables",
- syntax => "",
- parameters => 0,
- code => qq(
- object osysvar;
- string ssysvarid;
- foreach (ssysvarid, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedIDs())
- {
- osysvar = dom.GetObject(ssysvarid);
- WriteLine (osysvar.Name() # "=" # osysvar.Variable() # "=" # osysvar.Value());
- }
- )
- },
- "GetDeviceInfo" => {
- description => "Query device info",
- syntax => "devname, ccuget",
- parameters => 2,
- code => qq(
- string chnid;
- string sDPId;
- object odev = dom.GetObject ("\$devname");
- if (odev) {
- foreach (chnid, odev.Channels()) {
- object ochn = dom.GetObject(chnid);
- if (ochn) {
- foreach(sDPId, ochn.DPs()) {
- object oDP = dom.GetObject(sDPId);
- if (oDP) {
- integer op = oDP.Operations();
- string flags = "";
- if (OPERATION_READ & op) { flags = flags # "R"; }
- if (OPERATION_WRITE & op) { flags = flags # "W"; }
- if (OPERATION_EVENT & op) { flags = flags # "E"; }
- WriteLine ("C;" # ochn.Address() # ";" # ochn.Name() # ";" # oDP.Name() # ";" # oDP.ValueType() # ";" # oDP.\$ccuget() # ";" # flags);
- }
- }
- }
- }
- }
- else {
- WriteLine ("ERROR: Device not found");
- }
- )
- },
- "GetDevice" => {
- description => "Query CCU device or channel",
- syntax => "name",
- parameters => 1,
- code => qq(
- object odev=dom.GetObject("\$name");
- if (odev) {
- if (odev.IsTypeOf (OT_CHANNEL)) {
- string devid = odev.Device();
- odev = dom.GetObject (devid);
- }
- string intid=odev.Interface();
- string intna=dom.GetObject(intid).Name();
- string chnid;
- integer cc=0;
- foreach (chnid, odev.Channels()) {
- object ochn=dom.GetObject(chnid);
- WriteLine("C;" # ochn.Address() # ";" # ochn.Name() # ";" # ochn.ChnDirection());
- cc=cc+1;
- }
- WriteLine("D;" # intna # ";" # odev.Address() # ";" # odev.Name() # ";" # odev.HssType() # ";" # cc);
- }
- )
- },
- "GetDeviceList" => {
- description => "Query CCU devices, channels and interfaces",
- syntax => "",
- parameters => 0,
- code => qq(
- string devid;
- string chnid;
- string sifId;
- foreach(devid, root.Devices().EnumUsedIDs()) {
- object odev=dom.GetObject(devid);
- string intid=odev.Interface();
- string intna=dom.GetObject(intid).Name();
- integer cc=0;
- foreach (chnid, odev.Channels()) {
- object ochn=dom.GetObject(chnid);
- WriteLine("C;" # ochn.Address() # ";" # ochn.Name() # ";" # ochn.ChnDirection());
- cc=cc+1;
- }
- WriteLine("D;" # intna # ";" # odev.Address() # ";" # odev.Name() # ";" # odev.HssType() # ";" # cc);
- }
- foreach(sifId, root.Interfaces().EnumIDs()) {
- object oIf=dom.GetObject(sifId);
- if (oIf) {
- WriteLine("I;" # oIf.Name() # ';' # oIf.InterfaceInfo() # ';' # oIf.InterfaceUrl());
- }
- }
- )
- },
- "GetDatapointsByChannel" => {
- description => "Query datapoints of channel list",
- syntax => "list, ccuget",
- parameters => 2,
- code => qq(
- string sDPId;
- string sChnName;
- string sChnList = "\$list";
- integer c = 0;
- foreach (sChnName, sChnList.Split(",")) {
- object oChannel = dom.GetObject (sChnName);
- if (oChannel) {
- foreach(sDPId, oChannel.DPs()) {
- object oDP = dom.GetObject(sDPId);
- if (oDP) {
- if (OPERATION_READ & oDP.Operations()) {
- WriteLine (sChnName # "=" # oDP.Name() # "=" # oDP.\$ccuget());
- c = c+1;
- }
- }
- }
- }
- }
- WriteLine (c);
- )
- },
- "GetDatapointsByDevice" => {
- description => "Query datapoints of device list",
- syntax => "list, ccuget",
- parameters => 2,
- code => qq(
- string chnid;
- string sDPId;
- string sDevName;
- string sDevList = "\$list";
- integer c = 0;
- foreach (sDevName, sDevList.Split(",")) {
- object odev = dom.GetObject (sDevName);
- if (odev) {
- foreach (chnid, odev.Channels()) {
- object ochn = dom.GetObject(chnid);
- if (ochn) {
- foreach(sDPId, ochn.DPs()) {
- object oDP = dom.GetObject(sDPId);
- if (oDP) {
- if (OPERATION_READ & oDP.Operations()) {
- WriteLine (ochn.Name() # "=" # oDP.Name() # "=" # oDP.\$ccuget());
- c = c+1;
- }
- }
- }
- }
- }
- }
- }
- WriteLine (c);
- )
- },
- "GetDatapointList" => {
- description => "Query datapoint information of device list",
- syntax => "list",
- parameters => 1,
- code => qq(
- string chnid;
- string sDPId;
- string sDevice;
- string sDevList = "\$list";
- foreach (sDevice, sDevList.Split(",")) {
- object odev = dom.GetObject (sDevice);
- if (odev) {
- string intid = odev.Interface();
- string intna = dom.GetObject(intid).Name();
- string sType = odev.HssType();
- foreach (chnid, odev.Channels()) {
- object ochn = dom.GetObject(chnid);
- if (ochn) {
- string sAddr = ochn.Address();
- string sChnNo = sAddr.StrValueByIndex(":",1);
- foreach(sDPId, ochn.DPs()) {
- object oDP = dom.GetObject(sDPId);
- if (oDP) {
- string sDPName = oDP.Name().StrValueByIndex(".",2);
- WriteLine (intna # ";" # sAddr # ";" # sType # ";" # sChnNo # ";" # sDPName # ";" # oDP.ValueType() # ";" # oDP.Operations());
- }
- }
- }
- }
- }
- }
- )
- },
- "GetChannel" => {
- description => "Get datapoints of channel list",
- syntax => "list, ccuget",
- parameters => 2,
- code => qq(
- string sDPId;
- string sChannel;
- string sChnList = "\$list";
- foreach (sChannel, sChnList.Split(",")) {
- object oChannel = dom.GetObject (sChannel);
- if (oChannel) {
- foreach(sDPId, oChannel.DPs()) {
- object oDP = dom.GetObject(sDPId);
- if (oDP) {
- WriteLine (sChannel # "=" # oDP.Name() # "=" # oDP.\$ccuget());
- }
- }
- }
- }
- )
- },
- "GetInterfaceList" => {
- description => "Get CCU RPC interfaces",
- syntax => "",
- parameters => 0,
- code => qq(
- string sifId;
- foreach(sifId, root.Interfaces().EnumIDs()) {
- object oIf = dom.GetObject(sifId);
- if (oIf) {
- WriteLine (oIf.Name() # ';' # oIf.InterfaceInfo() # ';' # oIf.InterfaceUrl());
- }
- }
- )
- },
- "ClearUnreachable" => {
- description => "Clear device unreachable alarms in CCU",
- syntax => "",
- parameters => 0,
- code => qq(
- string itemID;
- string address;
- object aldp_obj;
- foreach(itemID, dom.GetObject(ID_DEVICES).EnumUsedIDs()) {
- address = dom.GetObject(itemID).Address();
- aldp_obj = dom.GetObject("AL-" # address # ":0.STICKY_UNREACH");
- if (aldp_obj) {
- if (aldp_obj.Value()) {
- aldp_obj.AlReceipt();
- }
- }
- }
- )
- },
- "GetNameByAddress" => {
- description => "Get device or channel name by address",
- syntax => "iface, address",
- parameters => 2,
- code => qq(
- object lObjDevice = xmlrpc.GetObjectByHSSAddress(interfaces.Get("\$iface"),"\$address");
- if (lObjDevice) {
- WriteLine (lObjDevice.Name());
- }
- )
- }
- );
- 1;
|