From 9a38a031de54ab1b357365c480eacf01f718fa66 Mon Sep 17 00:00:00 2001
From: Beta-User <>
Date: Sat, 15 Dec 2018 09:15:18 +0000
Subject: [PATCH] mqtt2template: - some more cleanup - make use of new
description option
git-svn-id: https://svn.fhem.de/fhem/trunk@17977 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/lib/AttrTemplate/mqtt2.template | 67 +++++++++++++----------
1 file changed, 38 insertions(+), 29 deletions(-)
diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template
index f64928f50..48e67d36b 100644
--- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template
+++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template
@@ -1,3 +1,6 @@
+###########################################
+# $Id$
+#
# 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)
@@ -5,13 +8,19 @@
# perl_code returns a value for the parameter, or undef.
# If undef, the user has to specify them (the comment is shown to the user)
+###########################################
+#
+name:0_mqtt2.attrTemplate
+desc:would be nice to have kind of preamble
would allow to start with some first remarks here for usage, conventions, link to issue-thread etc.
+
###########################################
# zigbee2mqtt
-# The zigbee2mqtt bridge device
-name:L_01x_zigbee2mqtt_bridge_outdated
+# The zigbee2mqtt bridge device (entire hex id of devices as bridgeRegexp)
+name:L_01a_zigbee2mqtt_bridge
+desc:The zigbee2mqtt bridge device
New version, using entire device name including "0x"
filter:TYPE=MQTT2_DEVICE
-par:BASE_TOPIC;base topic as set in configuration.yaml of the zigbee2mqtt bridge in the topics;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/].*:, ? $1 : undef }
-attr DEVICE bridgeRegexp BASE_TOPIC/0x([A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
+par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/].*:, ? $1 : undef }
+attr DEVICE bridgeRegexp BASE_TOPIC/(0x[A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
attr DEVICE setList\
permit_join:true,false BASE_TOPIC/bridge/config/permit_join $EVTPART1\
remove:textField BASE_TOPIC/bridge/config/remove $EVTPART1\
@@ -21,23 +30,26 @@ attr DEVICE setList\
devicelist:noArg BASE_TOPIC/bridge/config/devices
attr DEVICE readingList BASE_TOPIC/bridge/log:.* { json2nameValue($EVENT) }\
BASE_TOPIC/bridge/state:.* state
-
-# The zigbee2mqtt bridge device (entire hex id of devices as bridgeRegexp)
-name:L_01a_zigbee2mqtt_bridge_V2_testing
-filter:TYPE=MQTT2_DEVICE
-par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/].*:, ? $1 : undef }
-set DEVICE attrTemplate L_01_zigbee2mqtt_bridge_V1
-attr DEVICE bridgeRegexp BASE_TOPIC/(0x[A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
-
+
# The zigbee2mqtt bridge device: (allows friendly names for devices, but adds new device(s) when receiving interface messages)
-name:L_01b_zigbee2mqtt_bridge_V2_speaking_names_testing
+name:L_01b_zigbee2mqtt_bridge_V2_speaking_names
+desc:The zigbee2mqtt bridge device - new version
Allows friendly names for devices, but adds new device(s) also when receiving messages related to the service itself
filter:TYPE=MQTT2_DEVICE
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/].*:, ? $1 : undef }
set DEVICE attrTemplate L_01_zigbee2mqtt_bridge_V1
attr DEVICE bridgeRegexp BASE_TOPIC/([A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
+# The zigbee2mqtt bridge device
+name:L_01x_zigbee2mqtt_bridge_outdated
+desc:The zigbee2mqtt bridge device
Original version, kept in repo for compability reasons.
Truncs device name from "0x"
+filter:TYPE=MQTT2_DEVICE
+par:BASE_TOPIC;base topic as set in configuration.yaml of the zigbee2mqtt bridge in the topics;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/].*:, ? $1 : undef }
+set DEVICE attrTemplate L_01_zigbee2mqtt_bridge
+attr DEVICE bridgeRegexp BASE_TOPIC/0x([A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
+
# A dimmable light connected via zigbee2mqtt
name:L_02a_zigbee2mqtt_bulb
+desc: A dimmable light connected via zigbee2mqtt
Tested with: Tradfri LED1650R5, Osram Lightify W32
filter:TYPE=MQTT2_DEVICE
par:BASE_TOPIC;base topic as set in configuration.yaml of the zigbee2mqtt bridge in the topics;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/].*:, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","readingList","") =~ m,[^/]+[/](.*):, ? $1 : undef }
@@ -105,8 +117,7 @@ attr DEVICE setList \
# - DVES_XXXXXX:/SmartHome/Esszimmer/Stehlampe/tele/LWT: => /SmartHome/Esszimmer/Stehlampe/cmnd/
name:A_01_tasmota_basic_noprefix
filter:TYPE=MQTT2_DEVICE
-desc:Applies to Sonoff Basic, S20 using POWER1-topic for relay state
-desc:firmware version xyz
+desc:Applies to Sonoff Basic, S20 using POWER1-topic for relay state
firmware versions ???
par:COMMAND;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\btele(/.*)?/LWT:, ? "${1}cmnd$2" : undef }
set DEVICE attrTemplate A_09x_tasmota_pure_base_noprefix
attr DEVICE stateFormat {lc ReadingsVal("$name","POWER","") }
@@ -119,15 +130,13 @@ attr DEVICE setList \
# sonoff 1 channel device flashed with Tasmota.
name:A_01a_tasmota_1channel_noprefix
filter:TYPE=MQTT2_DEVICE
-desc:Applies to Sonoff 1 Channel devices using POWER1-topic for relay state
-desc:firmware version xyz
+desc:Applies to Sonoff 1 Channel devices using POWER1-topic for relay state
firmware version ???
set DEVICE attrTemplate A_01_tasmota_basic
attr DEVICE stateFormat {lc ReadingsVal("$name","POWER1","") }
# tasmota device with one relay, one motion sensor via switch
-# and one SI7021 combined temperature and humidity sensor
-# as one FHEM device
name:A_01b_tasmota_1ch+motion+SI7021_noprefix
+desc:tasmota device with one relay, one motion sensor via switch and one SI7021 combined temperature and humidity sensor.
Configures a single device including all readings
filter:TYPE=MQTT2_DEVICE
set DEVICE attrTemplate A_01a_tasmota_1channel_noprefix
par:DEVNAME;ESP's name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,tele/([^/]*)/, ? $1 : undef }
@@ -150,9 +159,9 @@ attr DEVICE stateFormat {\
# sonoff 2 channel device flashed with Tasmota.
-# NOTE: a second device will be created for the second channel
name:A_02a_tasmota_2channel_2devices_noprefix
filter:TYPE=MQTT2_DEVICE
+desc:sonoff 2 channel device flashed with Tasmota.
NOTE: a second device will be created for the second channel
par:COMMAND;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\btele(/.*)?/LWT:, ? "${1}cmnd$2" : undef }
set DEVICE attrTemplate A_01a_tasmota_1channel_noprefix
attr DEVICE comment Channel 1 for DEVICE, see also DEVICE_CH2
@@ -177,7 +186,6 @@ attr DEVICE readingList \
deleteReading DEVICE .*
attr DEVICE autocreate 0
-
# tasmota 4ch as one FHEM device.
name:A_04a_tasmota_sonoff_4ch_noprefix
filter:TYPE=MQTT2_DEVICE
@@ -221,6 +229,7 @@ attr DEVICE getList shellies/DEVNAME/relay/power power
# NOTE: a second device will be created for the second channel
name:A_11a_shelly2
filter:TYPE=MQTT2_DEVICE
+desc:shelly2 using original firmware.
NOTE: a second device will be created for the second channel
par:DEVNAME;Shelly2 name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,shellies/([^/]*)/, ? $1 : undef }
set DEVICE attrTemplate A_10a_shellyplug
attr DEVICE comment Channel 1 for DEVICE, see also DEVICE_CH2
@@ -232,9 +241,9 @@ attr DEVICE_CH2 setList \
on:noArg shellies/DEVNAME/relay/1/command on
# shelly4pro using original firmware
-# NOTE: for each of the second to fourth channel, a new device will be created
name:A_14_shelly4pro
filter:TYPE=MQTT2_DEVICE
+desc:shelly4pro using original firmware
NOTE: for each of the second to fourth channel, a new device will be created
par:DEVNAME;Shelly4Pro name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,shellies/([^/]*)/, ? $1 : undef }
set DEVICE attrTemplate A_10a_shellyplug
attr DEVICE getList shellies/DEVNAME/relay/0/power power1\
@@ -268,9 +277,10 @@ attr DEVICE getList shellies/DEVNAME/relay/3/power power4\
shellies/DEVNAME/relay/3/energy energy4
attr DEVICE comment Channel 4 for DEVICE, see also DEVICE, DEVICE_CH2 and DEVICE_CH3
-# shellybulb using original firmware. Tested with 1.3
+# shellybulb using original firmware
name:A_15_shellybulb
filter:TYPE=MQTT2_DEVICE
+desc:shellybulb using original firmware
Tested with 1.3
par:DEVNAME;name of this shelly;{ AttrVal("DEVICE","readingList","") =~ m,shellies/([^/]+)/, ? $1 : undef }
attr DEVICE setList\
off:noArg shellies/DEVNAME/color/0/command off\
@@ -293,22 +303,21 @@ attr DEVICE icon light_control
#
#The ESP-Milight-Hub bridge device
#Atm there are no furter commands to be set to the esp itself
-name:X_01_esp_milight_hub_bridge_experimental
+name:X_01_esp_milight_hub_bridge
filter:TYPE=MQTT2_DEVICE
+desc:use this with Chris Mullins ESP-Milight-Hub. for further details visit https://github.com/sidoh/esp8266_milight_hub
#recommended structure of the topic pattern milight/:device_id/:device_type/:group_id as set in the settings section in the bridge's web interface.
NOTE: Development state of the bulb devices is experimental!
par:BASE_ID;BASE_ID typically is milight;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/]updates/.*:, ? $1 : undef }
-par:REMOTE_ID;HEX number representing a specific remote or bridge;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/](0x....)[/].*:, ? $2 : undef }
-par:BULB_TYPE;rgbw, cct, rgb_cct, rgb, fut089, ;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/](.*)[/](.*)[/].*:, ? $3 : undef }
-par:GROUP_ID;HEX number representing a specific remote or bridge;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/](0x....)[/](.*)[/](.*):, ? $4 : undef }
attr DEVICE bridgeRegexp BASE_ID/states/(0x....)/.*/([0-4])?.*:.* "milight_$1_$2"
attr DEVICE autocreate 1
#rgbw-bulb
-name:X_01_esp_milight_hub_rgbw_bulb_experimental
+name:X_01_esp_milight_hub_rgbw_bulb
filter:TYPE=MQTT2_DEVICE
+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
par:BASE_ID;BASE_ID typically is milight;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/]updates/.*:, ? $1 : undef }
+par:GROUP_ID;number from 0 to 4 representing one of the channels of an original bridge or remote;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/](.*)[/](.*)[/](.).*:, ? $4 : undef }
par:REMOTE_ID;HEX number representing a specific remote or bridge;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/](0x....)[/].*:, ? $2 : undef }
par:BULB_TYPE;rgbw, cct, rgb_cct, rgb, fut089, ;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/](.*)[/](.*)[/].*:, ? $3 : undef }
-par:GROUP_ID;HEX number representing a specific remote or bridge;{ AttrVal("DEVICE","readingList","") =~ m,([^/]+)[/](0x....)[/](.*)[/](.*):, ? $4 : undef }
deletereading DEVICE .*_.*
attr DEVICE icon light_control
attr DEVICE eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/