From da59a8ec06d8eca93cbb131b3be5e3ea624f7525 Mon Sep 17 00:00:00 2001 From: Beta-User Date: Tue, 21 Jan 2020 09:32:14 +0000 Subject: [PATCH] mqtt2.attrTemplate: add some ems-esp templates+bugfixes, add code and further templates in contrib/AttrTemplate git-svn-id: https://svn.fhem.de/fhem/trunk@21028 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/lib/AttrTemplate/mqtt2.template | 139 ++++-- fhem/MAINTAINER.txt | 1 + .../AttrTemplate/99_attrTmqtt2_ebus_Utils.pm | 60 +++ .../99_attrTmqtt2_roborock_Utils.pm | 79 ++++ fhem/contrib/AttrTemplate/mqtt2.ebus.template | 447 ++++++++++++++++++ 5 files changed, 688 insertions(+), 38 deletions(-) create mode 100644 fhem/contrib/AttrTemplate/99_attrTmqtt2_ebus_Utils.pm create mode 100644 fhem/contrib/AttrTemplate/99_attrTmqtt2_roborock_Utils.pm create mode 100644 fhem/contrib/AttrTemplate/mqtt2.ebus.template diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template index 9ef82a3d3..14c41003e 100644 --- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template +++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template @@ -35,8 +35,8 @@ attr DEVCID bridgeRegexp \ valetudo[/]([^/]+)[/].*:.* "$1"\ [^/]+[/](ems-esp[^/]+)[/].*:.* "$1"\ wallpanel[/]([^/]+)[/].*:.* "$1"\ - (wled)[/]([^/]+)[/].*::.* "$1_$2"\ - (go-eCharger)[/]([^/]+)[/].*::.* "go_eCharger_$2" + (wled)[/]([^/]+)[/].*:.* "$1_$2"\ + (go-eCharger)[/]([^/]+)[/].*:.* "go_eCharger_$2" attr DEVCID autocreate 1 attr DEVCID comment Do not use very open bridgeRegexp expressions! This might lead to irritating results... attr DEVCID room NEWDEVROOM @@ -611,7 +611,7 @@ set IO_DEV publish CMNDTOPIC/Restart 1 attr DEVICE autocreate 0 name:tasmota_prefix_clearing_and_reboot -filter:TYPE=MQTT2_DEVICE::FILTER=readingList=.*(tele|cmnd|stat).* +filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd|stat).* desc:Applies to all tasmota devices
NOTE: This template will delete some readings and clear the readingList from prefix use when expanding json.
When applying the template the tasmota device is rebooted to get all readings order:A_01x1 par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef } @@ -1711,6 +1711,8 @@ order:E_01a par:DEVTYPE;Internal TYPE of the device; { InternalVal("DEVICE","TYPE",undef)} par:DEV_ID;base topic set ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^:]+:?(ebus[a-zA-Z])[^/]*[/].*:, ? $1 : "ebusd" } par:ICON;ICON as set, defaults to sani_boiler_temp;{ AttrVal("DEVICE","icon","sani_boiler_temp") } +{ Svn_GetFile("contrib/AttrTemplate/99_attrTmqtt2_ebus_Utils.pm", "FHEM/99_attrTmqtt2_ebus_Utils.pm", sub(){ CommandReload(undef, "99_attrTmqtt2_ebus_Utils") }) } +{ Svn_GetFile("contrib/AttrTemplate/mqtt2.ebus.template", "FHEM/lib/AttrTemplate/mqtt2.ebus.template", sub(){ AttrTemplate_Initialize() }) } attr DEVICE icon ICON modify DEVICE DEV_ID attr DEVICE autocreate 1 @@ -1726,12 +1728,86 @@ attr DEVICE devStateIcon 1.true:it_net 1.false:it_net@red 2.true:lan_rs485 2.fa attr DEVICE setList getKnown:noArg DEV_ID/list onlyknown\ getAll:noArg DEV_ID/list set DEVICE getKnown +attr DEVICE comment NOTE: additional templates and code have been downloaded from svn (contrib). +farewell:template has been applied successfully.
NOTE: additional templates and code have been downloaded from svn (contrib).
To configure further parts of your ebus ecosystem, have a look at these templates and the Wiki. attr DEVICE model eBus_daemon_splitter -############### -#ems-esp -# + +########################################### +# ems-esp +# The ems-esp device +name:ems-esp_heater_device +filter:TYPE=MQTT2_DEVICE +desc:EMS-ESP is a open-source system to communicate with EMS (Energy Management System) based boilers, thermostats and other modules from manufacturers like Bosch, Buderus, Nefit, Junkers and Sieger, see project page. First version, to contribute see Forum Thread. +order:E_02a +par:BASE_ID;base topic set, default is "home";{ AttrVal("DEVICE","readingList","") =~ m,([^/:]+)/, ? $1 : "home" } +par:DEV_ID;ID topic set, default is "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,[^/:]+/([^/]+), ? $1 : "ems-esp" } +par:ICON;ICON as set, defaults to sani_boiler_temp;{ AttrVal("DEVICE","icon","sani_boiler_temp") } +attr DEVICE icon ICON +modify DEVICE DEV_ID +attr DEVICE bridgeRegexp \ + BASE_ID/DEV_ID/(sensors|sm_data|hp_data|thermostat_data).*:.* "ems_esp_$1"\ + BASE_ID/DEV_ID/(boiler_data|tapwater_active|heating_active|mixing_data|shower_data).*:.* "ems_esp_boiler" +attr DEVICE userReadings formatedUptime:uptime.* {my $m = ReadingsVal($name,"uptime",0)/60;; return sprintf "0 000 00:%02d", $m if $m < 60;; my $h = $m / 60;; $m %= 60;; return sprintf "0 000 %02d:%02d", $h, $m if $h < 24;; my $d = $h / 24;; $h %= 24;; return sprintf "0 %03d %02d:%02d", $d, $h, $m if $d <365;; my $y = $d / 365;; $d %= 365;; return sprintf "%d %03d %02d:%02d", $y, $d, $h, $m} +attr DEVICE readingList BASE_ID/DEV_ID/start:.* LWT\ + BASE_ID/DEV_ID/heartbeat:.* { json2nameValue($EVENT,'',$JSONMAP) } +attr DEVICE stateFormat Interface: \ +LWT\ +Signal: \ +rssid %\ +
Uptime: formatedUptime\ +
IPAddress : IP +attr DEVICE setList restart:noArg BASE_ID/DEV_ID/restart +attr DEVICE devStateIcon online:it_net offline:it_net@red 2.1:lan_rs485 2.0:lan_rs485@red +attr DEVICE autocreate 1 +attr DEVICE webCmd restart +attr DEVICE model ems-esp_heater_device + +name:ems-esp_boiler +filter:TYPE=MQTT2_DEVICE +desc:To configure a boiler device for use with an EMS-ESP
.Forum Thread +order:E_02b +par:BASEPATH;base topic set in the ESP including "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,([^:]*ems-esp)/boiler_data:, ? "$1" : undef } +attr DEVICE readingList BASEPATH/boiler_data { json2nameValue($EVENT,'',$JSONMAP) }\ + BASEPATH/shower_data:.* { json2nameValue($EVENT,'',$JSONMAP) }\ + BASEPATH/mixing_data:.* { json2nameValue($EVENT,'',$JSONMAP) }\ + BASEPATH/tapwater_active:.* tapwater_active\ + BASEPATH/heating_active:.* heating_active +attr DEVICE model ems-esp_boiler + #ems-esp thermostat device +name:ems-esp_thermostat_simple +filter:TYPE=MQTT2_DEVICE +desc:To configure a simple thermostat (e.g. RC300) for use with an EMS-ESP.
Forum Thread
+order:E_02c +par:BASEPATH;base topic set in the ESP including "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,([^:]*ems-esp)/thermostat_data:, ? "$1" : undef } +par:ICON;ICON as set, defaults to temp_control;{ AttrVal("DEVICE","icon","temp_control") } +attr DEVICE icon ICON +attr DEVICE devStateIcon set.auto:edit_settings:mode+manual set.manual:edit_settings:mode+auto auto:time_automatic:mode+manual manual:time_manual_mode:mode+auto set.*°C:edit_settings +attr DEVICE jsonMap hc1_mode:mode hc1_seltemp:desired-temp hc1_daytemp:daytemp hc1_nighttemp:nighttemp hc1_holidayttemp:holidaytemp +attr DEVICE readingList BASEPATH/thermostat_data:.* { json2nameValue($EVENT, '', $JSONMAP) } +attr DEVICE setList mode:uzsuSelectRadio,auto,manual BASEPATH/thermostat_cmd_mode1 $EVTPART1\ + desired-temp:slider,15.0,0.5,30.0,1 BASEPATH/thermostat_cmd_temp1 $EVTPART1 +attr DEVICE setStateList on off +attr DEVICE stateFormat mode\ +desired-temp °C +attr DEVICE webCmd mode:desired-temp +attr DEVICE model ems-esp_thermostat_simple + +name:ems-esp_thermostat_RC35_type +filter:TYPE=MQTT2_DEVICE +desc:To configure a thermostat comparable to RC35 for use with an EMS-ESP
.Forum Thread +order:E_02c1 +par:BASEPATH;base topic set in the ESP including "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,([^:]*ems-esp)/thermostat_data:, ? "$1" : undef } +set DEVICE attrTemplate ems-esp_thermostat_simple +attr DEVICE setList mode:uzsuSelectRadio,auto,manual BASEPATH/thermostat_cmd_mode1 $EVTPART1\ + desired-temp:slider,15.0,0.5,30.0,1 BASEPATH/thermostat_cmd_temp1 $EVTPART1\ + daytemp:slider,15.0,0.5,30.0,1 BASEPATH/thermostat_cmd_daytemp1 $EVTPART1\ + nighttemp:slider,15.0,0.5,30.0,1 BASEPATH/thermostat_cmd_nighttemp1 $EVTPART1\ + holidaytemp:slider,15.0,0.5,30.0,1 BASEPATH/thermostat_cmd_holidayttemp1 $EVTPART1 +attr DEVICE model ems-esp_thermostat_RC35_type + + @@ -1757,9 +1833,12 @@ status\ version attr DEVICE devStateIcon connected:10px-kreis-gruen disconnected.*:10px-kreis-rot attr DEVICE model esp_milight_hub_bridge +{ AttrTemplate_Initialize() } + #rgbw-bulb name:esp_milight_hub_rgbw_bulb +prereq:{my @devices=devspec2array("model=esp_milight_hub_bridge");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=CID=milight.* desc:For use with X_01_esp_milight_hub_bridge
Basic elements to control a rgbw bulb. If you own a different type of bulb, this template could contain more options than your physical device might be able to handle. Just delete, what you don't need or use the full featured version to get extended options and then delete what you don't need... order:X_011 @@ -1792,6 +1871,7 @@ attr DEVICE model esp_milight_hub_rgbw_bulb #rgbw-group name:esp_milight_hub_make_rgbw_group +prereq:{my @devices=devspec2array("model=esp_milight_hub_bridge");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=CID=milight.* desc:For use with X_01_esp_milight_hub_bridge
Defines a new device based on the one the template is applied to.
Only basic elements to control a group of rgbw bulbs will be available. order:X_01a @@ -1820,6 +1900,7 @@ attr milight_REMOTE_ID_0 model esp_milight_hub_make_rgbw_group #rgbw_cct-bulb name:esp_milight_hub_rgb_cct_bulb +prereq:{my @devices=devspec2array("model=esp_milight_hub_bridge");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=CID=milight.* desc:For use with X_01_esp_milight_hub_bridge
NOTE: Development state is experimental!
Source: Forum order:X_01a1 @@ -1861,6 +1942,7 @@ attr DEVICE model esp_milight_hub_rgb_cct_bulb #cct-only-bulb name:esp_milight_hub_cct_only_bulb +prereq:{my @devices=devspec2array("model=esp_milight_hub_bridge");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=CID=milight.* desc:For use with X_01_esp_milight_hub_bridge
NOTE: Development state is experimental!
simple CCT device order:X_01b @@ -1895,6 +1977,7 @@ attr DEVICE model esp_milight_hub_cct_only_bulb #rgbw-bulb name:esp_milight_hub_max_features_bulb +prereq:{my @devices=devspec2array("model=esp_milight_hub_bridge");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=CID=milight.* desc:For use with X_01_esp_milight_hub_bridge
Device could contain more options than your physical device might be able to handle. Just delete, what you don't need...
NOTE: Development state is experimental!
NOTE: regex not working to extract remote channel... Topic is something like milight/updates/0xABCD/rgbw/0 order:X_01x @@ -1936,6 +2019,7 @@ attr DEVICE model esp_milight_hub_max_features_bulb #remote for event generation only name:esp_milight_hub_remote_events_only +prereq:{my @devices=devspec2array("model=esp_milight_hub_bridge");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE desc:For use with X_01_esp_milight_hub_bridge
See Forum Thread for examples how to control a MPD, HUEDevice bulbs or shutters by a MiLight remote. order:X_01y @@ -1982,8 +2066,11 @@ LWT\ attr DEVICE icon ICON attr DEVICE devStateIcon online:10px-kreis-gruen offline.*:10px-kreis-rot attr DEVICE model OpenMQTTGateway_MCU +{ AttrTemplate_Initialize() } + name:OpenMQTTGateway_BT_scanner +prereq:{my @devices=devspec2array("model=OpenMQTTGateway_MCU");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*OpenMQTTGateway.* desc:use this with an OpenMQTTGateway. For further details visit https://github.com/1technophile/OpenMQTTGateway/wiki
Recommended structure of the topic pattern home/OpenMQTTGateway/.*.
NOTE: Initial version, not yet tested, just build according to https://forum.fhem.de/index.php/topic,103737.0.html
Adopt settings to your needs. order:X_02b @@ -2002,6 +2089,7 @@ attr DEVICE stateFormat Last: last attr DEVICE model OpenMQTTGateway_BT_scanner name:OpenMQTTGateway_simple_RF433_switch +prereq:{my @devices=devspec2array("model=OpenMQTTGateway_MCU");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*OpenMQTTGateway.* desc:use this with an OpenMQTTGateway. For further details visit https://github.com/1technophile/OpenMQTTGateway/wiki
Recommended structure of the topic pattern home/OpenMQTTGateway/.*.
NOTE: Initial version, not yet tested, just build according to https://forum.fhem.de/index.php/topic,103737.0.html
Adopt settings to your needs.
NOTE: this might create a new device! order:X_02a @@ -2029,6 +2117,7 @@ attr OMG_DEVCID room NEWDEVROOM attr OMG_DEVCID model OpenMQTTGateway_simple_RF433_switch name:OpenMQTTGateway_bme +prereq:{my @devices=devspec2array("model=OpenMQTTGateway_MCU");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*OpenMQTTGateway.* desc:use this with an OpenMQTTGateway. For further details visit https://github.com/1technophile/OpenMQTTGateway/wiki
Recommended structure of the topic pattern home/OpenMQTTGateway/.*.
NOTE: Initial version, not yet tested, just build according to https://forum.fhem.de/index.php/topic,103737.0.html
Adopt settings to your needs.
NOTE: this might create a new device! order:X_02b @@ -2043,6 +2132,7 @@ attr DEVICE userReadings hpa:BME_pa.* {ReadingsVal($name,"BME_pa",0)/100} attr DEVICE model OpenMQTTGateway_bme name:OpenMQTTGateway_ir +prereq:{my @devices=devspec2array("model=OpenMQTTGateway_MCU");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*OpenMQTTGateway.* desc:use this with an OpenMQTTGateway. For further details visit https://github.com/1technophile/OpenMQTTGateway/wiki
Recommended structure of the topic pattern home/OpenMQTTGateway/.*.
NOTE: Initial version, not yet tested, just build according to https://forum.fhem.de/index.php/topic,103737.0.html
Adopt settings to your needs.
NOTE: this might create a new device! order:X_02c @@ -2057,6 +2147,7 @@ attr DEVCID comment irsend needs Infos about protocol and value (n decimal), so attr DEVICE model OpenMQTTGateway_ir name:OpenMQTTGateway_BT_temp_hum_sensor +prereq:{my @devices=devspec2array("model=OpenMQTTGateway_MCU");;return 1 if $devices[0];;return 0} filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*OpenMQTTGateway.* desc:use this with an OpenMQTTGateway. For further details visit https://github.com/1technophile/OpenMQTTGateway/wiki
Recommended structure of the topic pattern home/OpenMQTTGateway/.*.
NOTE: You'll be asked to provide the HEX address of your sensor. Best start with looking at what "OpenMQTTGateway_BT_scanner" povides, e.g. if you have a reading name like "6C697244245E_id", "6C697244245E" (without quotes) is what you want to enter...
NOTE: this will create a new device! order:X_02d @@ -2081,13 +2172,14 @@ desc:use this to control a rooted Xiamoni Vacuum / Roborock. For further details order:X_03 par:BASE_ID;BASE_ID typically is valetudo;{ AttrVal("DEVICE","readingList","") =~ m,(valetudo)[/].*:, ? $1 : undef } par:DEVNAME;DEVNAME typically is rockrobo;{ AttrVal("DEVICE","readingList","") =~ m,valetudo[/]([^/]+)[/].*:, ? $1 : undef } +{ Svn_GetFile("contrib/AttrTemplate/99_attrTmqtt2_roborock_Utils.pm", "FHEM/99_attrTmqtt2_roborock_Utils.pm", sub(){CommandReload(undef, "99_attrTmqtt2_roborock_Utils")}) } deletereading -q DEVICE (?!associatedWith).* defmod DEVICE MQTT2_\DEVICE DEVNAME attr DEVICE icon vacuum_top attr DEVICE readingList homeassistant/vacuum/valetudo_DEVNAME/config:.* { json2nameValue($EVENT) }\ BASE_ID/DEVNAME/state:.* { json2nameValue($EVENT) }\ BASE_ID/DEVNAME/attributes:.* { json2nameValue($EVENT) }\ - BASE_ID/DEVNAME/map_data:.* {valetudo2svg("map_data",$EVENT,"www/images/valetudo_map.svg")} + BASE_ID/DEVNAME/map_data:.* {attrTmqtt2_roborock_valetudo2svg("map_data",$EVENT,"www/images/valetudo_map.svg")} attr DEVICE setList start:noArg BASE_ID/DEVNAME/command start\ charge:noArg BASE_ID/DEVNAME/command return_to_base\ stop:noArg BASE_ID/DEVNAME/command stop\ @@ -2100,8 +2192,8 @@ attr DEVICE setList start:noArg BASE_ID/DEVNAME/command start\ load_map BASE_ID/DEVNAME/custom_command {"command":"load_map","name":"$EVTPART1"}\ store_map BASE_ID/DEVNAME/custom_command {"command":"store_map","name":"$EVTPART1"} attr DEVICE setStateList charge locate pause stop start -attr DEVCID comment For code "valetudo2svg()" see this forum thread. -farewell:template has been applied successfully. For map generation you'll need additional code to myUtils, see this forum thread for details. +attr DEVCID comment For original code for "attrTmqtt2_roborock_valetudo2svg()" see this forum thread. To display generated map, define a weblink device:
define valetudo_map weblink htmlCode +farewell:template has been applied successfully.
NOTE: additional code has been downloaded from svn (contrib).
To display generated map, define a weblink device: define valetudo_map weblink htmlCode .
For details, see this forum thread. attr DEVICE model roborock # source: https://forum.fhem.de/index.php/topic,105222.0.html @@ -2183,32 +2275,3 @@ attr DEVICE userReadings charger_state:car.* { my $val = ReadingsVal($name,"car" deletereading -q DEVICE (?!associatedWith).* attr DEVICE model go_eCharger -########################################### -# ems-esp -# The ems-esp device -name:ems-esp_heater_device -filter:TYPE=MQTT2_DEVICE -desc:EMS-ESP is a open-source system to communicate with EMS (Energy Management System) based boilers, thermostats and other modules from manufacturers like Bosch, Buderus, Nefit, Junkers and Sieger, see project page. First version, to contribute see Forum Thread. -order:E_02a -par:BASE_ID;base topic set, default is "home";{ AttrVal("DEVICE","readingList","") =~ m,[^:]+:?[/]?([^/])+[/][^/]+[/].*:, ? $1 : "home" } -par:DEV_ID;ID topic set, default is "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,[^:]+:?[/]?BASE_ID[/]([^/]+)[/].*:, ? $1 : "ems-esp" } -par:ICON;ICON as set, defaults to sani_boiler_temp;{ AttrVal("DEVICE","icon","sani_boiler_temp") } -attr DEVICE icon ICON -modify DEVICE DEV_ID -attr DEVICE bridgeRegexp \ - BASE_ID/DEV_ID/(sensors|sm_data|hp_data|thermostat_data).*:.* "ems_esp_$1"\ - BASE_ID/DEV_ID/(boiler_data|tapwater_active|heating_active|mixing_data|shower_data).*:.* "ems_esp_boiler" -attr DEVICE userReadings formatedUptime:uptime.* {my $m = ReadingsVal($name,"uptime",0)/60;; return sprintf "0 000 00:%02d", $m if $m < 60;; my $h = $m / 60;; $m %= 60;; return sprintf "0 000 %02d:%02d", $h, $m if $h < 24;; my $d = $h / 24;; $h %= 24;; return sprintf "0 %03d %02d:%02d", $d, $h, $m if $d <365;; my $y = $d / 365;; $d %= 365;; return sprintf "%d %03d %02d:%02d", $y, $d, $h, $m} -attr DEVICE readingList BASE_ID/DEV_ID/start:.* LWT\ - BASE_ID/DEV_ID/heartbeat:.* { json2nameValue($EVENT) } -attr DEVICE stateFormat Interface: \ -LWT\ -Signal: \ -rssid %\ -
Uptime: formatedUptime\ -
IPAddress : IP -attr DEVICE setList restart:noArg BASE_ID/DEV_ID/restart -attr DEVICE devStateIcon online:it_net offline:it_net@red 2.1:lan_rs485 2.0:lan_rs485@red -attr DEVICE autocreate 1 -attr DEVICE webCmd restart -attr DEVICE model ems-esp_heater_device diff --git a/fhem/MAINTAINER.txt b/fhem/MAINTAINER.txt index 4a1732a1e..4472c20f3 100644 --- a/fhem/MAINTAINER.txt +++ b/fhem/MAINTAINER.txt @@ -609,6 +609,7 @@ contrib/98_Heating_Control.pm Beta-User Unterstützende Dienste contrib/97_SprinkleControl.pm Tobias Unterstützende Dienste contrib/98_Sprinkle.pm Tobias Unterstützende Dienste contrib/betateilchen/* betateilchen Sonstiges +contrib/AttrTemplate/* Beta-User (depends on attrTemplate) contrib/commandref* rudolfkoenig Sonstiges contrib/pre-commit rudolfkoenig Sonstiges contrib/DEBIAN/* betateilchen Sonstiges diff --git a/fhem/contrib/AttrTemplate/99_attrTmqtt2_ebus_Utils.pm b/fhem/contrib/AttrTemplate/99_attrTmqtt2_ebus_Utils.pm new file mode 100644 index 000000000..39387343f --- /dev/null +++ b/fhem/contrib/AttrTemplate/99_attrTmqtt2_ebus_Utils.pm @@ -0,0 +1,60 @@ +############################################## +# $Id: attrTmqtt2_ebus_Utils.pm 2020-01-18 Beta-User $ +# + +package main; + +use strict; +use warnings; +use POSIX; + +sub +attrTmqtt2_ebus_Utils_Initialize($$) +{ + my ($hash) = @_; +} + +# Enter you functions below _this_ line. + +sub +attrTmqtt2_ebus_createBarView($;$$) { + my ($val,$maxValue,$color) = @_; + $maxValue = $maxValue//100; + $color = $color//"red"; + my $percent = $val / $maxValue * 100; + # Definition des valueStyles + my $stylestring = 'style="'. + 'width: 200px; '. + 'text-align:center; '. + 'border: 1px solid #ccc ;'. + "background-image: -webkit-linear-gradient(left,$color $percent".'%, rgba(0,0,0,0) '.$percent.'%); '. + "background-image: -moz-linear-gradient(left,$color $percent".'%, rgba(0,0,0,0) '.$percent.'%); '. + "background-image: -ms-linear-gradient(left,$color $percent".'%, rgba(0,0,0,0) '.$percent.'%); '. + "background-image: -o-linear-gradient(left,$color $percent".'%, rgba(0,0,0,0) '.$percent.'%); '. + "background-image: linear-gradient(left,$color $percent".'%, rgba(0,0,0,0) '.$percent.'%);"'; + # Rückgabe des definierten Strings + return $stylestring; +} + +1; + +=pod +=begin html + + +

attrTmqtt2_ebus_Utils

+ +
+=end html +=cut diff --git a/fhem/contrib/AttrTemplate/99_attrTmqtt2_roborock_Utils.pm b/fhem/contrib/AttrTemplate/99_attrTmqtt2_roborock_Utils.pm new file mode 100644 index 000000000..cb7371267 --- /dev/null +++ b/fhem/contrib/AttrTemplate/99_attrTmqtt2_roborock_Utils.pm @@ -0,0 +1,79 @@ +############################################## +# $Id: attrTmqtt2_roborock_Utils.pm 2020-01-19 Beta-User $ +# + +package main; + +use strict; +use warnings; +use POSIX; + +sub +attrTmqtt2_roborock_Utils_Initialize($$) +{ + my ($hash) = @_; +} + +# Enter you functions below _this_ line. + +sub +attrTmqtt2_roborock_valetudo2svg($$$) +{ + my ($reading, $d, $filename) = @_; + my %ret; + + if($d !~ m/height":(\d+),"width":(\d+).*?floor":\[(.*\])\]/) { + $ret{$reading} = "ERROR: Unknown format"; + return \%ret; + } + my ($w,$h,$nums) = ($1, $2, $3); + + my $svg=<<"EOD"; + + + + + +EOD + + $nums =~ s/\[(\d+),(\d+)\]/ + $svg .= "\n"; + "" + /xge; + $svg .= ""; + + if(!open FD,">$filename") { + $ret{$reading} = "ERROR: $filename: $!"; + return \%ret; + } + print FD $svg; + close(FD); + $ret{$reading} = "Wrote $filename"; + return \%ret; +} + + + +1; + +=pod +=begin html + + +

attrTmqtt2_roborock_Utils

+ +
+=end html +=cut diff --git a/fhem/contrib/AttrTemplate/mqtt2.ebus.template b/fhem/contrib/AttrTemplate/mqtt2.ebus.template new file mode 100644 index 000000000..e78b6be22 --- /dev/null +++ b/fhem/contrib/AttrTemplate/mqtt2.ebus.template @@ -0,0 +1,447 @@ +########################################### +# $Id: mqtt2.ebus.template 2019-04-03 21:00:00 Reinhart $ +# +# Comments start with #. Empty lines are ignored. +# Syntax of one entry: name: line, one optional filter: line, zero or more par: lines, FHEM-Commands +# filter:INTERNAL=VALUE (optional) +# par: name of the parameter; comment; perl_code (optional) +# perl_code returns a value for the parameter, or undef. +# If undef, the user has to specify them (the comment is shown to the userbridgeRegexp) +# when changed the template reread " { AttrTemplate_Initialize() } " +# save this template in /opt/fhem/FHEM/lib/AttrTemplate +########################################### + +# changelog +# 01.04.19 added TimeProg for Calormatic +# 03.04.19 corrected Errors in jsonMap and valuesuffix +# 18.01.20 prepare for svn distribution, see https://forum.fhem.de/index.php/topic,97989.msg1014104.html#msg1014104 + + +name:eBus_bai_jsonMap_Status01 +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a1 +attr DEVICE readingList \ +ebusd/DEV_ID/Status01:.* { json2nameValue($EVENT, 'Status01_', $JSONMAP) }\ +ebusd/DEV_ID/Status02:.* { json2nameValue($EVENT, 'Status02_', $JSONMAP) } +attr DEVICE jsonMap Status01_0_value:_Vorlauf Status01_1_value:_Ruecklauf Status01_2_value:_Aussentemp Status01_3_value:_Warmwasser Status01_4_value:_WWSpeicher Status01_5_value:_Pumpenstatus Status02_0_value:_HWCMode Status02_1_value:_Maximaltemperatur Status02_2_value:_ReglerMaxTEMP Status02_3_value:_ReglerCurrentTemp +#attr DEVICE stateFormat {sprintf("Vorlauf: %.1f
Ruecklauf: %.1f
Warmwasser: %.1f
Aussentemp.: %.1f
Pumpe: %s", ReadingsVal($name,"_Vorlauf",0), ReadingsVal($name,"_Ruecklauf",0), ReadingsVal($name,"_Warmwasser",0), ReadingsVal($name,"_Aussentemp",0), ReadingsVal($name,"S_Pumpenstatus",0))} +attr DEVICE icon sani_boiler_temp +deletereading DEVICE Status.* +attr DEVICE model eBus_bai_jsonmap + +name:eBus_4xx_devStateIcon_HeatCurve_HwcTemp +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +par:BASE_DEV;base topic set in config;{ AttrVal("DEVICE","readingList","") =~ m,ebusd/([^/]*)/, ? $1 : undef } +order:E_01a2 +attr DEVICE setList Hc1HeatCurve_curve_value:uzsuDropDown,0.20,0.70,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70 ebusd/BASE_DEV/Hc1HeatCurve/set $EVTPART1\ +HwcTempDesired_temp1_value:uzsuDropDown,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0 ebusd/BASE_DEV/HwcTempDesired/set $EVTPART1 +attr DEVICE getList Hc1HeatCurve:noArg Hc1HeatCurve_curve_value ebusd/BASE_DEV/Hc1HeatCurve/get \ +HwcTempDesired:noArg HwcTempDesired_temp1_value ebusd/BASE_DEV/HwcTempDesired/get +attr DEVICE devStateIcon {my $vC = ReadingsVal($name, "Hc1HeatCurve_curve_value", "10")*10; my $colCur = substr(Color::pahColor(5,10,15,$vC,0),0,6); my $iconCur = 'time_graph@'.$colCur; my $vH = ReadingsVal($name, "HwcTempDesired_temp1_value", "30"); my $colHot = substr(Color::pahColor(20,40,60,$vH,0),0,6); my $iconHot = 'sani_water_hot@'.$colHot; ; "
" . FW_makeImage("$iconCur",'file_unknown@grey') . "
" . FW_makeImage("$iconHot",'sani_water_hot@red') . "
"} +attr DEVICE webCmd Hc1HeatCurve_curve_value:HwcTempDesired_temp1_value +attr DEVICE webCmdLabel Heizkurve \ +:Warmwasser +attr DEVICE room MQTT2_\DEVICE +attr DEVICE group eBus_Hcurve +attr DEVICE icon message_tendency_steady +attr DEVICE model eBus_4xx_HeatCurve_HwcTemp + +name:eBus_430_devStateIcon_Pump_Fan_HeatCurve_HwcTemp +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +par:BASE_DEV;base topic set in config;{ AttrVal("DEVICE","readingList","") =~ m,ebusd/([^/]*)/, ? $1 : undef } +order:E_01a3 +attr DEVICE devStateIcon {my $vC = ReadingsVal($name, "Hc1HeatCurve_curve_value", "10")*10; my $colCur = substr(Color::pahColor(5,10,15,$vC,0),0,6); my $iconCur = 'time_graph@'.$colCur; my $vH = ReadingsVal($name, "HwcTempDesired_temp1_value", "30"); my $colHot = substr(Color::pahColor(0,30,60,$vH,0),0,6); my $iconHot = 'sani_water_hot@'.$colHot; ; "
" . FW_makeImage("$iconCur",'file_unknown@grey') . "
" . FW_makeImage("$iconHot",'sani_water_hot@red') . "
"} +attr DEVICE setList Hc1HeatCurve_curve_value:uzsuDropDown,0.20,0.70,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70 ebusd/430/Hc1HeatCurve/set $EVTPART1\ +HwcTempDesired_temp1_value:uzsuDropDown,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0 ebusd/430/HwcTempDesired/set $EVTPART1 +attr DEVICE getList Hc1HeatCurve:noArg Hc1HeatCurve_curve_value ebusd/430/Hc1HeatCurve/get \ +HwcTempDesired:noArg HwcTempDesired_temp1_value ebusd/430/HwcTempDesired/get +attr DEVICE webCmd Hc1HeatCurve_curve_value:HwcTempDesired_temp1_value +attr DEVICE webCmdLabel Heizkurve \ +:Warmwasser +attr DEVICE room MQTT2_\DEVICE +attr DEVICE group eBus_Hcurve +attr DEVICE icon message_tendency_steady +attr DEVICE model eBus_430_Pump_Fan_HeatCurve_HwcTemp + +name:eBus_bai_devStateIcon_Fan_Pump +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +par:IODEVROOM;Room of the IOdevice; {AttrVal(AttrVal("DEVICE","IODev",""),"room","" ) ? AttrVal(AttrVal("DEVICE","IODev",""),"room","" ) : undef } +order:E_01a4 +# create in a new Reading +defmod MQTT2_ebusd_pump MQTT2_\DEVICE ebusd_pump +attr MQTT2_ebusd_pump IODev ebusMQTT +attr MQTT2_ebusd_pump devStateIcon { my $vP = ReadingsVal("MQTT2_ebusd_bai", "WPPWMPower_percent0_value", "100"); my $colPower = substr(Color::pahColor(0,50,100,$vP,0),0,6); my $iconPower = 'sani_pump@'.$colPower; my $vFS = ReadingsVal("MQTT2_ebusd_bai", "FanSpeed_0_value", "3001"); my $colFSpeed = substr(Color::pahColor(0,1500,4000,$vFS,0),0,6); my $iconFSpeed = 'vent_ventilation_level_'; $iconFSpeed .= $vFS < 499 ? '0@' : $vFS <1699 ? '1@' : $vFS <3001 ? '2@' : '3@'; $iconFSpeed .= $colFSpeed; "
Heizungspumpe: " . FW_makeImage("$iconPower",'file_unknown@grey') . " ($vP Watt)
Ventilatordrehzahl: " . FW_makeImage("$iconFSpeed",'vent_ventilation_level_3@red') . " ($vFS Upm)
"} +attr MQTT2_ebusd_pump icon Ventilator_fett +attr MQTT2_ebusd_pump room MQTT2_\DEVICE +attr MQTT2_ebusd_pump group eBus_Pumpe +attr MQTT2_ebusd_pump model eBus_bai_Fan_Pump + +name:eBus_bai_devStateIcon_Flow_Return_Hotwater_Temp +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a5 +# create in a new Reading +defmod MQTT2_ebusd_status MQTT2_\DEVICE ebusd_status +attr MQTT2_ebusd_status IODev ebusMQTT +attr DEVICE readingList \ +ebusd/DEV_ID/Status01:.* { json2nameValue($EVENT, 'Status01_', $JSONMAP) }\ +ebusd/DEV_ID/Status02:.* { json2nameValue($EVENT, 'Status02_', $JSONMAP) } +attr DEVICE jsonMap Status01_0_value:_Vorlauf Status01_1_value:_Ruecklauf Status01_2_value:_Aussentemp Status01_3_value:_Warmwasser Status01_4_value:_WWSpeicher Status01_5_value:_Pumpenstatus Status02_0_value:_HWCMode Status02_1_value:_Maximaltemperatur Status02_2_value:_ReglerMaxTEMP Status02_3_value:_ReglerCurrentTemp +attr MQTT2_ebusd_status devStateIcon {my $vV = ReadingsVal("MQTT2_ebusd_bai", "_Vorlauf", "30"); my $colVor = substr(Color::pahColor(20,40,60,$vV,0),0,6); my $iconVor = 'sani_supply_temp@'.$colVor; my $vR = ReadingsVal("MQTT2_ebusd_bai", "_Ruecklauf", "30"); my $colRueck = substr(Color::pahColor(20,40,60,$vR,0),0,6); my $iconRueck = 'sani_return_temp@'.$colRueck; my $vW = ReadingsVal("MQTT2_ebusd_bai", "_Warmwasser", "30"); my $colWarm = substr(Color::pahColor(20,40,60,$vW,0),0,6); my $iconWarm = 'sani_water_hot@'.$colWarm; my $vA = ReadingsVal("MQTT2_ebusd_bai", "_Aussentemp", "30"); my $colAussen = substr(Color::pahColor(-10,10,30,$vA,0),0,6); my $iconAussen = 'temp_outside@'.$colAussen; ; "
Vorlauf: " . FW_makeImage("$iconVor",'file_unknown@grey') . " $vV °C
Ruecklauf: " . FW_makeImage("$iconRueck",'file_unknown@grey') . " $vR °C
Warmwasser: " . FW_makeImage("$iconWarm",'file_unknown@grey') . " $vW °C
Aussentemp: " . FW_makeImage("$iconAussen",'file_unknown@grey') . " " . int($vA*10)/10 . " °C
"} +# {my $vV = ReadingsVal("MQTT2_ebusd_bai", "_Vorlauf", "30"); my $colVor = substr(Color::pahColor(0,35,70,$vV,0),0,6); my $iconVor = 'sani_supply_temp@'.$colVor; my $vR = ReadingsVal("MQTT2_ebusd_bai", "_Ruecklauf", "30"); my $colRueck = substr(Color::pahColor(0,35,70,$vR,0),0,6); my $iconRueck = 'sani_return_temp@'.$colRueck; ; "
Vorlauf: " . FW_makeImage("$iconVor",'file_unknown@grey') . " ($vV Grad)
Ruecklauf: " . FW_makeImage("$iconRueck",'sani_return_temp@red') . " ($vR Grad)
"} +# {my $vV = ReadingsVal("MQTT2_ebusd_bai", "_Vorlauf", "30"); my $colVor = substr(Color::pahColor(0,35,70,$vV,0),0,6); my $iconVor = 'sani_supply_temp@'.$colVor; my $vR = ReadingsVal("MQTT2_ebusd_bai", "_Ruecklauf", "30"); my $colRueck = substr(Color::pahColor(0,35,70,$vR,0),0,6); my $iconRueck = 'sani_return_temp@'.$colRueck; my $vW = ReadingsVal("MQTT2_ebusd_bai", "_Warmwasser", "30"); my $colWarm = substr(Color::pahColor(0,35,70,$vR,0),0,6); my $iconWarm = 'sani_water_hot@'.$colWarm; ; "
Vorlauf: " . FW_makeImage("$iconVor",'file_unknown@grey') . " $vV °C
Ruecklauf: " . FW_makeImage("$iconRueck",'file_unknown@grey') . " $vR °C
Warmwasser: " . FW_makeImage("$iconWarm",'file_unknown@grey') . " $vW °C
"} +attr MQTT2_ebusd_status icon sani_boiler_temp +attr MQTT2_ebusd_status room MQTT2_\DEVICE +attr MQTT2_ebusd_status group eBus_Temperatur +attr MQTT2_ebusd_status model eBus_bai_Flow_Return + +name:eBus_bai_devStateIcon_Waterpressure +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a6 +defmod MQTT2_ebusd_pressure MQTT2_\DEVICE ebusd_pressure +attr MQTT2_ebusd_pressure IODev ebusMQTT +attr MQTT2_ebusd_pressure devStateIcon {my $vD = ReadingsVal("MQTT2_ebusd_bai", "WaterPressure_press_value", "30"); my $colDruck = substr(Color::pahColor(0,1,2,$vD,0),0,6); my $iconDruck = 'weather_barometric_pressure@'.$colDruck; ; "
Wasserdruck: " . FW_makeImage("$iconDruck",'file_unknown@grey') . int($vD*100)/100 . " Bar
"} +attr MQTT2_ebusd_pressure icon vacuum_bold +attr MQTT2_ebusd_pressure room MQTT2_\DEVICE +attr MQTT2_ebusd_pressure model eBus_bai_Pressure + + +name:eBus_bai_Status01+Status02_HWC +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Status Messages01 + Status02 Hotwater comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a7 +attr DEVICE stateFormat {sprintf("Vorlauf: %.1f
Ruecklauf: %.1f
Warmwasser: %.1f
Aussentemp.: %.1f
Pumpe: %s
HWC-maxTemp: %.1f
HWC-Regler_Max: %.1f
HWC-CurrentTemp: %.1f
HWC-Mode: %s", ReadingsVal($name,"_Vorlauf",0), ReadingsVal($name,"_Ruecklauf",0), ReadingsVal($name,"_Warmwasser",0), ReadingsVal($name,"_Aussentemp",0), ReadingsVal($name,"_Pumpenstatus",0), ReadingsVal($name,"_Maximaltemperatur",0), ReadingsVal($name,"_ReglerMaxTEMP",0), ReadingsVal($name,"_ReglerCurrentTemp",0), ReadingsVal($name,"_HWCMode",0))} +attr DEVICE icon icoTempHeizung +attr DEVICE jsonMap Status01_0_value:_Vorlauf Status01_1_value:_Ruecklauf Status01_2_value:_Aussentemp Status01_3_value:_Warmwasser Status01_4_value:_WWSpeicher Status01_5_value:_Pumpenstatus Status02_0_value:_HWCMode Status02_1_value:_Maximaltemperatur Status02_2_value:_ReglerMaxTEMP Status02_3_value:_ReglerCurrentTemp +attr DEVICE devStateStyle style="text-align:right" +deletereading DEVICE Status.* +attr DEVICE model eBus_Status + +name:eBus_SetMode +filter:TYPE=MQTT2_DEVICE +desc:Format ebus setmode messages comming from broadcast +order:E_01a8 +attr DEVICE stateFormat {sprintf("Flowtempdesired: %.1f
Hcmode: %s", ReadingsVal($name,"SetMode_flowtempdesired_value",0), ReadingsVal($name,"SetMode_hcmode_value",0))} +attr DEVICE icon icoTempHeizung +attr DEVICE devStateStyle style="text-align:right" +attr DEVICE model eBus_SetMode + +#ebus Hcurve+HwcTempDesired Messages. +name:eBus_Hc1HeatCurve+HwcTempDesired +filter:TYPE=MQTT2_DEVICE +par:BASE_DEV;base topic set in config;{ AttrVal("DEVICE","readingList","") =~ m,ebusd/([^/]*)/, ? $1 : undef } +desc:Applies settings to ebus Heatingcurve and Hotwater +order:E_01a9 +attr DEVICE icon message_tendency_steady +attr DEVICE webCmd curve_value:temp1_value +attr DEVICE webCmdLabel Hc1HeatCurve:HwcTempDesired +attr DEVICE setList Hc1HeatCurve_curve_value:0.20,0.70,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70 ebusd/BASE_DEV/Hc1HeatCurve/set $EVTPART1\ +HwcTempDesired_temp1_value:50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0 ebusd/BASE_DEV/HwcTempDesired/set $EVTPART1 +deletereading DEVICE .* +attr DEVICE model eBus_Hc1HeatCurve+HwcTempDesired + + + +# ebus Status Messages. +name:eBus_bai_readingsgroup_Status01 +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a9 +define eBusTemperaturen readingsGroup MQTT2_ebusd_bai:<%sani_supply_temp>,,_Vorlauf\ + MQTT2_ebusd_bai:<%sani_return_temp>,,_Ruecklauf\ + MQTT2_ebusd_bai:<%sani_water_hot>,,_Warmwasser\ + MQTT2_ebusd_bai:<%sani_buffer_temp_down>,,_WWSpeicher\ + MQTT2_ebusd_bai:<%temp_outside>,,_Aussentemp +attr eBusTemperaturen nameStyle style="color:yellow" +attr eBusTemperaturen room eBus +attr DEVICE jsonMap Status01_0_value:_Vorlauf Status01_1_value:_Ruecklauf Status01_2_value:_Aussentemp Status01_3_value:_Warmwasser Status01_4_value:_WWSpeicher Status01_5_value:_Pumpenstatus Status02_0_value:_HWCMode Status02_1_value:_Maximaltemperatur Status02_2_value:_ReglerMaxTEMP Status02_3_value:_ReglerCurrentTemp +deletereading DEVICE Status.* +attr eBusTemperaturen valueFormat {'_Vorlauf' => "%.0f °C",\ +'_Ruecklauf' => "%.0f °C",\ +'_Warmwasser' =>"%.0f °C",\ +'_WWSpeicher' =>"%.0f °C",\ +'_Aussentemp' =>"%.1f °C" } +attr eBusTemperaturen valueStyle {'_Vorlauf' => '{"style=\"color:\x23".substr(Color::pahColor(0,25,50,$VALUE,0),0,6)."\""}' , \ +'_Ruecklauf' => '{"style=\"color:\x23".substr(Color::pahColor(0,15,30,$VALUE,0),0,6)."\""}' , \ +'_Warmwasser' => '{"style=\"color:\x23".substr(Color::pahColor(0,25,50,$VALUE,0),0,6)."\""}' , \ +'_WWSpeicher' => '{"style=\"color:\x23".substr(Color::pahColor(0,25,50,$VALUE,0),0,6)."\""}' , \ +'_Aussentemp' => '{"style=\"color:\x23".substr(Color::pahColor(-10,0,10,$VALUE,0),0,6)."\""}'} +attr eBusTemperaturen model eBus_bai_readingsgroup_Status01 + +name:eBus_bai_readingsgroup_Status01_Balken +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a10 +define eBusTemperaturBalken readingsGroup MQTT2_ebusd_bai:<%sani_supply_temp>,,_Vorlauf\ + MQTT2_ebusd_bai:<%sani_return_temp>,,_Ruecklauf\ + MQTT2_ebusd_bai:<%sani_water_hot>,,_Warmwasser\ + MQTT2_ebusd_bai:<%sani_buffer_temp_down>,,_WWSpeicher\ + MQTT2_ebusd_bai:<%temp_outside>,,_Aussentemp +attr eBusTemperaturBalken nameStyle style="color:yellow" +attr DEVICE jsonMap Status01_0_value:_Vorlauf Status01_1_value:_Ruecklauf Status01_2_value:_Aussentemp Status01_3_value:_Warmwasser Status01_4_value:_WWSpeicher Status01_5_value:_Pumpenstatus Status02_0_value:_HWCMode Status02_1_value:_Maximaltemperatur Status02_2_value:_ReglerMaxTEMP Status02_3_value:_ReglerCurrentTemp +deletereading DEVICE Status.* +attr eBusTemperaturBalken room eBus +attr eBusTemperaturBalken valueStyle { attrTmqtt2_ebus_createBarView($VALUE,70,"red") } +attr eBusTemperaturBalken model eBus_bai_readingsgroup_Status01Balken + + +name:eBus_bai_readingsgroup_Status02 +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a11 +define eBusWarmwasser readingsGroup MQTT2_ebusd_bai:<%time_automatic>,,_HWCMode\ + MQTT2_ebusd_bai:<%temp_temperature_max>,,Maximaltemperatur\ + MQTT2_ebusd_bai:<%sani_earth_source_heat_pump>,,_ReglerMaxTEMP\ + MQTT2_ebusd_bai:<%sani_earth_source_heat_pump>,,_ReglerCurrentTemp +attr eBusWarmwasser nameStyle style="color:yellow" +attr eBusWarmwasser room eBus +attr eBusWarmwasser valueFormat {'_HWCMode' => "%s ",\ +'_Maximaltemperatur' => "%.0f \°C",\ +'_ReglerMaxTEMP' =>"%.0f \°C",\ +'_ReglerCurrentTemp' =>"%.0f \°C" } +attr eBusWarmwasser valueStyle {'_Maximaltemperatur' => '{"style=\"color:\x23".substr(Color::pahColor(20,45,70,$VALUE,0),0,6)."\""}' , \ +'_ReglerMaxTEMP' => '{"style=\"color:\x23".substr(Color::pahColor(20,45,70,$VALUE,0),0,6)."\""}' , \ +'_ReglerCurrentTemp' => '{"style=\"color:\x23".substr(Color::pahColor(20,45,70,$VALUE,0),0,6)."\""}' ,\ +'_HWCMode' => '{"style="color:green" " }' } +attr MQTT2_ebusd_bai jsonMap Status02_0_value:_HWCMode Status02_1_value:_Maximaltemperatur Status02_2_value:_ReglerMaxTEMP Status02_3_value:_ReglerCurrentTemp +deletereading DEVICE Status.* +attr eBusWarmwasser model eBus_bai_readingsgroup_Status02 + +name:eBus_bai_readingsgroup_Status02_Balken +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a12 +define eBusWarmwasserBalken readingsGroup MQTT2_ebusd_bai:<%time_automatic>,,_HWCMode\ + MQTT2_ebusd_bai:<%temp_temperature_max>,,_Maximaltemperatur\ + MQTT2_ebusd_bai:<%sani_earth_source_heat_pump>,,_ReglerMaxTEMP\ + MQTT2_ebusd_bai:<%sani_earth_source_heat_pump>,,_ReglerCurrentTemp +attr eBusWarmwasserBalken nameStyle style="color:yellow" +attr eBusWarmwasserBalken room eBus +attr eBusWarmwasserBalken valueStyle { attrTmqtt2_ebus_createBarView($VALUE,70,"red") } +attr MQTT2_ebusd_bai jsonMap Status02_0_value:_HWCMode Status02_1_value:_Maximaltemperatur Status02_2_value:_ReglerMaxTEMP Status02_3_value:_ReglerCurrentTemp +deletereading DEVICE Status.* +attr eBusWarmwasserBalken model eBus_bai_readingsgroup_Status02_Balken + +name:eBus_Calormatic_readingsgroup_Set_Hcurve_Hotwater +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:BASE_DEV;base topic set in config;{ AttrVal("DEVICE","readingList","") =~ m,ebusd/([^/]*)/, ? $1 : undef } +order:E_01a13 +define eBusSet readingsGroup <>,,< Ist>,<      Soll>\ +MQTT2_ebusd_BASE_DEV:<%message_tendency_steady>,,Hc1HeatCurve_curve_value,\ +MQTT2_ebusd_BASE_DEV:<%sani_water_hot>,,HwcTempDesired_temp1_value, +attr eBusSet nameStyle style="color:yellow" +attr eBusSet room eBus +attr eBusSet valueStyle {'Hc1HeatCurve_curve_value' => '{"style=\"color:\x23".substr(Color::pahColor(5,10,15,$VALUE*10,0),0,6)."\""}', \ +'HwcTempDesired_temp1_value' => '{"style=\"color:\x23".substr(Color::pahColor(20,40,60,$VALUE,0),0,6)."\""}'} +attr eBusSet commands {'eBusSet.sollcurve'=>'Hc1HeatCurve_curve_value:uzsuDropDown,0.20,0.70,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70',\ +'eBusSet.sollwater'=>'HwcTempDesired_temp1_value:uzsuDropDown,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0'} +attr eBusSet model eBus_Calormatic_readingsgroup_Set_Hcurve_Hotwater + + +name:Bus_bai_readingsgroup_eBusCounter +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a14 +define eBusCounter readingsGroup <>,,< Zähler>\ +MQTT2_ebusd_bai:<%Ventilator_fett>,,FanHours_hoursum2_value \ +MQTT2_ebusd_bai:<%sani_boiler_temp>,,HcHours_hoursum2_value \ +MQTT2_ebusd_bai:<%sani_water_hot>,,HwcHours_hoursum2_value \ +MQTT2_ebusd_bai:<%sani_water_tap>,,HwcStarts_0_value +attr eBusCounter cellStyle { "r:1" => 'style="font-weight:bold;;font-size:16px"',"r:2,c:3" => 'style="color:lightgreen;;font-size:18px;;text-align:right"',"r:3,c:3" => 'style="color:green;;font-size:18px;;text-align:right"',"r:4,c:3" => 'style="color:lightgreen;;font-size:18px;;text-align:right"',"r:5,c:3" => 'style="color:green;;font-size:18px;;text-align:right"' } +attr eBusCounter nameStyle style="color:yellow" +attr eBusCounter room eBus +attr eBusCounter valueFormat {'FanHours_hoursum2_value' => "%0#6i",\ +'HcHours_hoursum2_value' => "%0#6i",\ +'HwcHours_hoursum2_value' =>"%0#6i",\ +'HwcStarts_0_value' =>"%0#6i"} +attr eBusCounter model eBus_bai_readingsgroup_eBusCounter + +name:eBus_bai_readingsgroup_eBusPumpe +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:DEV_ID;name of the device ebus;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/]([^/]+).*:, ? $1 : undef } +order:E_01a15 +define eBusPumpe readingsGroup <>,,< Leistung> MQTT2_ebusd_bai:<%measure_power>,,WPPWMPower_percent0_value MQTT2_ebusd_bai:<%vent_ventilation_level_automatic>,,FanSpeed_0_value +attr eBusPumpe cellStyle { "r:1"=>'style="font-weight:bold;;font-size:16px"'} +attr eBusPumpe nameStyle style="color:yellow" +attr eBusPumpe room eBus +attr eBusPumpe valueIcon { if($READING eq "WPPWMPower_percent0_value" && $VALUE >= 10 && $VALUE <= 60){ 'sani_pump@lightgreen' }elsif($READING eq "WPPWMPower_percent0_value" && $VALUE >= 0 && $VALUE <= 9){ 'sani_pump@gray' }elsif($READING eq "WPPWMPower_percent0_value" && $VALUE >= 61 && $VALUE <= 449){ 'sani_pump@green' }elsif($READING eq "WPPWMPower_percent0_value" && $VALUE >= 500 && $VALUE <= 4449){ 'sani_pump@orange' }elsif( $READING eq "FanSpeed_0_value" && $VALUE >= 0 && $VALUE <= 10){ 'vent_ventilation_level_0@grey' }elsif( $READING eq "FanSpeed_0_value" && $VALUE >= 11 && $VALUE <= 500){ 'vent_ventilation_level_0@lightgreen' }elsif( $READING eq "FanSpeed_0_value" && $VALUE >= 501 && $VALUE <= 1699){ 'vent_ventilation_level_1@green' }elsif( $READING eq "FanSpeed_0_value" && $VALUE >= 1700 && $VALUE <= 3000){ 'vent_ventilation_level_2@orange' }elsif( $READING eq "FanSpeed_0_value" && $VALUE >= 3001){ 'vent_ventilation_level_3@red' }else{ 'file_unknown@grey' } } +attr eBusPumpe valueSuffix {"WPPWMPower_percent0_value"=>"     (".ReadingsVal($\DEVICE,$READING,0)." Watt)", "FanSpeed_0_value"=>"     (".ReadingsVal($\DEVICE,$READING,0)." Upm)" } +attr eBusPumpe model eBus_bai_readingsgroup_eBusPumpe + + +name:eBus_Calormatic_readingsgroup_Set_Hcurve_Hotwater +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:BASE_DEV;base topic set in config;{ AttrVal("DEVICE","readingList","") =~ m,ebusd/([^/]*)/, ? $1 : undef } +order:E_01a16 +define eBusSet readingsGroup <>,,< Ist>,<      Soll>\ +MQTT2_ebusd_BASE_DEV:<%message_tendency_steady>,,Hc1HeatCurve_curve_value,\ +MQTT2_ebusd_BASE_DEV:<%sani_water_hot>,,HwcTempDesired_temp1_value, +attr eBusSet nameStyle style="color:yellow" +attr eBusSet room eBus +attr eBusSet valueStyle {'Hc1HeatCurve_curve_value' => '{"style=\"color:\x23".substr(Color::pahColor(0.1,1.0,1.5,$VALUE,0),0,6)."\""}',\ +'HwcTempDesired_temp1_value' => '{"style=\"color:\x23".substr(Color::pahColor(0.1,1.0,1.5,$VALUE,0),0,6)."\""}'} +attr eBusSet commands {'eBusSet.sollcurve'=>'Hc1HeatCurve_curve_value:uzsuDropDown,0.20,0.70,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70',\ +'eBusSet.sollwater'=>'HwcTempDesired_temp1_value:uzsuDropDown,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0'} +attr eBusSet model E_105_eBus_Calormatic_readingsgroup_Set_Hcurve_Hotwater + +name:eBus_Calormatic_TimeProgramm +filter:TYPE=MQTT2_DEVICE +desc:Format ebus Statusmessages comming from broadcast +par:BASE_DEV;base topic set in config;{ AttrVal("DEVICE","readingList","") =~ m,ebusd/([^/]*)/, ? $1 : undef } +order:E_01a17 +define TimeMo dummy +attr TimeMo alias 1 Montag +attr TimeMo group Zeiteingabe +attr TimeMo readingList HHMM1m HHMM2m HHMM3m HHMM4m HHMM5m HHMM6m HHMM7m +attr TimeMo room ZeitProgramm +attr TimeMo setList HHMM1m:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM2m:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM3m:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM4m:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM5m:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM6m:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM7m:selected,Mo-Fr,Mo-So,Sa-So +attr TimeMo stateFormat = +attr TimeMo webCmd HHMM1m: bis :HHMM2m: von :HHMM3m: bis :HHMM4m: von :HHMM5m: bis :HHMM6m: daysel :HHMM7m +define TimeDi dummy +attr TimeDi alias 2 Dienstag +attr TimeDi group Zeiteingabe +attr TimeDi readingList HHMM1t HHMM2t HHMM3t HHMM4t HHMM5t HHMM6t HHMM7t +attr TimeDi room ZeitProgramm +attr TimeDi setList HHMM1t:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM2t:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM3t:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM4t:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM5t:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM6t:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM7t:selected,Mo-Fr,Mo-So,Sa-So +attr TimeDi stateFormat = +attr TimeDi webCmd HHMM1t: bis :HHMM2t: von :HHMM3t: bis :HHMM4t: von :HHMM5t: bis :HHMM6t: daysel :HHMM7t +define TimeMi dummy +attr TimeMi alias 3 Mittwoch +attr TimeMi group Zeiteingabe +attr TimeMi readingList HHMM1w HHMM2w HHMM3w HHMM4w HHMM5w HHMM6w HHMM7w +attr TimeMi room ZeitProgramm +attr TimeMi setList HHMM1w:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM2w:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM3w:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM4w:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM5w:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM6w:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM7w:selected,Mo-Fr,Mo-So,Sa-So +attr TimeMi stateFormat = +attr TimeMi webCmd HHMM1w: bis :HHMM2w: von :HHMM3w: bis :HHMM4w: von :HHMM5w: bis :HHMM6w: daysel :HHMM7w +define TimeDo dummy +attr TimeDo alias 4 Donnerstag +attr TimeDo group Zeiteingabe +attr TimeDo readingList HHMM1th HHMM2th HHMM3th HHMM4th HHMM5th HHMM6th HHMM7th +attr TimeDo room ZeitProgramm +attr TimeDo setList HHMM1th:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM2th:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM3th:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM4th:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM5th:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM6th:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM7th:selected,Mo-Fr,Mo-So,Sa-So +attr TimeDo stateFormat = +attr TimeDo webCmd HHMM1th: bis :HHMM2th: von :HHMM3th: bis :HHMM4th: von :HHMM5th: bis :HHMM6th: daysel :HHMM7th +define TimeFr dummy +attr TimeFr alias 5 Freitag +attr TimeFr group Zeiteingabe +attr TimeFr readingList HHMM1f HHMM2f HHMM3f HHMM4f HHMM5f HHMM6f HHMM7t +attr TimeFr room ZeitProgramm +attr TimeFr setList HHMM1f:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM2f:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM3f:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM4f:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM5f:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM6f:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM7f:selected,Mo-Fr,Mo-So,Sa-So +attr TimeFr stateFormat = +attr TimeFr webCmd HHMM1f: bis :HHMM2f: von :HHMM3f: bis :HHMM4f: von :HHMM5f: bis :HHMM6f: daysel :HHMM7f +define TimeSa dummy +attr TimeSa alias 6 Samstag +attr TimeSa group Zeiteingabe +attr TimeSa readingList HHMM1sa HHMM2sa HHMM3sa HHMM4sa HHMM5sa HHMM6sa HHMM7sa +attr TimeSa room ZeitProgramm +attr TimeSa setList HHMM1sa:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM2sa:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM3sa:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM4sa:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM5sa:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM6sa:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM7sa:selected,Mo-Fr,Mo-So,Sa-So +attr TimeSa stateFormat = +attr TimeSa webCmd HHMM1sa: bis :HHMM2sa: von :HHMM3sa: bis :HHMM4sa: von :HHMM5sa: bis :HHMM6sa: daysel :HHMM7sa +define TimeSu dummy +attr TimeSu alias 7 Sonntag +attr TimeSu group Zeiteingabe +attr TimeSu readingList HHMM1sa HHMM2sa HHMM3sa HHMM4sa HHMM5sa HHMM6sa HHMM7t +attr TimeSu room ZeitProgramm +attr TimeSu setList HHMM1su:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM2su:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM3su:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM4su:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM5su:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM6su:-,00:00,00:30,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00,05:30,06:00,06:30,07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,23:30,24:00 HHMM7su:selected,Mo-Fr,Mo-So,Sa-So +attr TimeSu stateFormat = +attr TimeSu webCmd HHMM1su: bis :HHMM2su: von :HHMM3su: bis :HHMM4su: von :HHMM5su: bis :HHMM6su: daysel :HHMM7su +define einlesen dummy +attr einlesen alias Zeitprogramm auslesen +attr einlesen devStateIcon einlesen:control_arrow_downward:einlesen +attr einlesen eventMap on:einlesen off:einlesen +attr einlesen group Zeiteingabe +attr einlesen room ZeitProgramm +define DayRead notify einlesen {\ + fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Monday/get";;\ + fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Tuesday/get";;\ + fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Wednesday/get";;\ + fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Thursday/get";;\ + fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Friday/get";;\ + fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Saturday/get";;\ + fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Sunday/get";;\ + fhem "setreading TimeMo HHMM1m [MQTT2_ebusd_BASE_DEV:hcTimer.Monday_0_value]";;\ + fhem "setreading TimeMo HHMM2m [MQTT2_ebusd_BASE_DEV:hcTimer.Monday_1_value]";;\ + fhem "setreading TimeMo HHMM3m [MQTT2_ebusd_BASE_DEV:hcTimer.Monday_2_value]";;\ + fhem "setreading TimeMo HHMM4m [MQTT2_ebusd_BASE_DEV:hcTimer.Monday_3_value]";;\ + fhem "setreading TimeMo HHMM5m [MQTT2_ebusd_BASE_DEV:hcTimer.Monday_4_value]";;\ + fhem "setreading TimeMo HHMM6m [MQTT2_ebusd_BASE_DEV:hcTimer.Monday_5_value]";;\ + fhem "setreading TimeMo HHMM7m [MQTT2_ebusd_BASE_DEV:hcTimer.Monday_6_value]";;\ + fhem "setreading TimeDi HHMM1t [MQTT2_ebusd_BASE_DEV:hcTimer.Tuesday_0_value]";;\ + fhem "setreading TimeDi HHMM2t [MQTT2_ebusd_BASE_DEV:hcTimer.Tuesday_1_value]";;\ + fhem "setreading TimeDi HHMM3t [MQTT2_ebusd_BASE_DEV:hcTimer.Tuesday_2_value]";;\ + fhem "setreading TimeDi HHMM4t [MQTT2_ebusd_BASE_DEV:hcTimer.Tuesday_3_value]";;\ + fhem "setreading TimeDi HHMM5t [MQTT2_ebusd_BASE_DEV:hcTimer.Tuesday_4_value]";;\ + fhem "setreading TimeDi HHMM6t [MQTT2_ebusd_BASE_DEV:hcTimer.Tuesday_5_value]";;\ + fhem "setreading TimeDi HHMM7t [MQTT2_ebusd_BASE_DEV:hcTimer.Tuesday_6_value]";;\ + fhem "setreading TimeMi HHMM1w [MQTT2_ebusd_BASE_DEV:hcTimer.Wednesday_0_value]";;\ + fhem "setreading TimeMi HHMM2w [MQTT2_ebusd_BASE_DEV:hcTimer.Wednesday_1_value]";;\ + fhem "setreading TimeMi HHMM3w [MQTT2_ebusd_BASE_DEV:hcTimer.Wednesday_2_value]";;\ + fhem "setreading TimeMi HHMM4w [MQTT2_ebusd_BASE_DEV:hcTimer.Wednesday_3_value]";;\ + fhem "setreading TimeMi HHMM5w [MQTT2_ebusd_BASE_DEV:hcTimer.Wednesday_4_value]";;\ + fhem "setreading TimeMi HHMM6w [MQTT2_ebusd_BASE_DEV:hcTimer.Wednesday_5_value]";;\ + fhem "setreading TimeMi HHMM7w [MQTT2_ebusd_BASE_DEV:hcTimer.Wednesday_6_value]";;\ + fhem "setreading TimeDo HHMM1th [MQTT2_ebusd_BASE_DEV:hcTimer.Thursday_0_value]";;\ + fhem "setreading TimeDo HHMM2th [MQTT2_ebusd_BASE_DEV:hcTimer.Thursday_1_value]";;\ + fhem "setreading TimeDo HHMM3th [MQTT2_ebusd_BASE_DEV:hcTimer.Thursday_2_value]";;\ + fhem "setreading TimeDo HHMM4th [MQTT2_ebusd_BASE_DEV:hcTimer.Thursday_3_value]";;\ + fhem "setreading TimeDo HHMM5th [MQTT2_ebusd_BASE_DEV:hcTimer.Thursday_4_value]";;\ + fhem "setreading TimeDo HHMM6th [MQTT2_ebusd_BASE_DEV:hcTimer.Thursday_5_value]";;\ + fhem "setreading TimeDo HHMM7th [MQTT2_ebusd_BASE_DEV:hcTimer.Thursday_6_value]";;\ + fhem "setreading TimeFr HHMM1f [MQTT2_ebusd_BASE_DEV:hcTimer.Friday_0_value]";;\ + fhem "setreading TimeFr HHMM2f [MQTT2_ebusd_BASE_DEV:hcTimer.Friday_1_value]";;\ + fhem "setreading TimeFr HHMM3f [MQTT2_ebusd_BASE_DEV:hcTimer.Friday_2_value]";;\ + fhem "setreading TimeFr HHMM4f [MQTT2_ebusd_BASE_DEV:hcTimer.Friday_3_value]";;\ + fhem "setreading TimeFr HHMM5f [MQTT2_ebusd_BASE_DEV:hcTimer.Friday_4_value]";;\ + fhem "setreading TimeFr HHMM6f [MQTT2_ebusd_BASE_DEV:hcTimer.Friday_5_value]";;\ + fhem "setreading TimeFr HHMM7f [MQTT2_ebusd_BASE_DEV:hcTimer.Friday_6_value]";;\ + fhem "setreading TimeSa HHMM1sa [MQTT2_ebusd_BASE_DEV:hcTimer.Saturday_0_value]";;\ + fhem "setreading TimeSa HHMM2sa [MQTT2_ebusd_BASE_DEV:hcTimer.Saturday_1_value]";;\ + fhem "setreading TimeSa HHMM3sa [MQTT2_ebusd_BASE_DEV:hcTimer.Saturday_2_value]";;\ + fhem "setreading TimeSa HHMM4sa [MQTT2_ebusd_BASE_DEV:hcTimer.Saturday_3_value]";;\ + fhem "setreading TimeSa HHMM5sa [MQTT2_ebusd_BASE_DEV:hcTimer.Saturday_4_value]";;\ + fhem "setreading TimeSa HHMM6sa [MQTT2_ebusd_BASE_DEV:hcTimer.Saturday_5_value]";;\ + fhem "setreading TimeSa HHMM7sa [MQTT2_ebusd_BASE_DEV:hcTimer.Saturday_6_value]";;\ + fhem "setreading TimeSu HHMM1su [MQTT2_ebusd_BASE_DEV:hcTimer.Sunday_0_value]";;\ + fhem "setreading TimeSu HHMM2su [MQTT2_ebusd_BASE_DEV:hcTimer.Sunday_1_value]";;\ + fhem "setreading TimeSu HHMM3su [MQTT2_ebusd_BASE_DEV:hcTimer.Sunday_2_value]";;\ + fhem "setreading TimeSu HHMM4su [MQTT2_ebusd_BASE_DEV:hcTimer.Sunday_3_value]";;\ + fhem "setreading TimeSu HHMM5su [MQTT2_ebusd_BASE_DEV:hcTimer.Sunday_4_value]";;\ + fhem "setreading TimeSu HHMM6su [MQTT2_ebusd_BASE_DEV:hcTimer.Sunday_5_value]";;\ + fhem "setreading TimeSu HHMM7su [MQTT2_ebusd_BASE_DEV:hcTimer.Sunday_6_value]";;\ +} +attr DayRead room ZeitProgramm +define DayWrite notify schreiben {fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Monday/set " . ReadingsVal("TimeMo","HHMM1m",0) . chr(59) . chr(59) . ReadingsVal("TimeMo","HHMM2m",0) . chr(59) . chr(59) . ReadingsVal("TimeMo","HHMM3m",0) . chr(59) . chr(59) . ReadingsVal("TimeMo","HHMM4m",0) . chr(59) . chr(59) . ReadingsVal("TimeMo","HHMM5m",0) . chr(59) . chr(59). ReadingsVal("TimeMo","HHMM6m",0) . chr(59) . chr(59) . ReadingsVal("TimeMo","HHMM7m",0);;\ +fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Tuesday/set " . ReadingsVal("TimeDi","HHMM1t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM2t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM3t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM4t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM5t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM6t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM7t",0);;\ +fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Wednesday/set " . ReadingsVal("TimeMi","HHMM1w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM2w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM3w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM4w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM5w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM6w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM7w",0);;\ +fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Thursday/set " . ReadingsVal("TimeDo","HHMM1th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM2th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM3th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM4th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM5th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM6th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM7th",0);;\ +fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Friday/set " . ReadingsVal("TimeFr","HHMM1f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM2f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM3f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM4f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM5f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM6f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM7f",0);;\ +fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Saturday/set " . ReadingsVal("TimeSa","HHMM1sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM2sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM3sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM4sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM5sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM6sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM7sa",0);;\ +fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Sunday/set " . ReadingsVal("TimeSo","HHMM1su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM2su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM3su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM4su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM5su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM6su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM7su",0);;\ +Log 1, "Zeitprog=" . ReadingsVal("TimeMo","HHMM1m",0) . ";;" . ReadingsVal("TimeMo","HHMM2m",0) . ";;" . ReadingsVal("TimeMo","HHMM3m",0) . ";;" . ReadingsVal("TimeMo","HHMM4m",0) . ";;" . ReadingsVal("TimeMo","HHMM5m",0) . ";;" . ReadingsVal("TimeMo","HHMM6m",0) . ";;" . ReadingsVal("TimeMo","HHMM7m",0);;} +attr DayWrite room ZeitProgramm +define schreiben dummy +attr schreiben alias Zeitprogramm schreiben +attr schreiben devStateIcon schreiben:rc_PROG:schreiben +attr schreiben eventMap on:schreiben off:schreiben +attr schreiben group Zeiteingabe +attr schreiben room ZeitProgramm