mqtt2.template: bugs, Fragen, Anregungen

Begonnen von Beta-User, 15 Dezember 2018, 11:44:43

Vorheriges Thema - Nächstes Thema

Beta-User

Kürzen kann man m.E. nur mit weiteren Tricks, aber es ist sehr die Frage, ob es sinnvoll ist.

An sich finde ich das einen ziemlich coolen Wurf, auch mit den Hashes. Ein wenig irritiert mich das denglisch, und dass es zwar zwei Chargemode-Readings gibt, die aber irgendwie wieder nicht mit dem Setter "Lademods" einen Kreis zu bilden scheinen; bei anderen müßte das aber eigentlich klappen (ChargePointEnabled). Und ob die ganzen Readings mit der automatischen Benennung belassen werden sollten? (Vermutlich könnte man kürzen und umstellen).
Die "slide" sind vermutlich jeweils Typos?

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kjmEjfu

Zitat von: Beta-User am 07 April 2021, 15:26:46
An sich finde ich das einen ziemlich coolen Wurf, auch mit den Hashes. Ein wenig irritiert mich das denglisch,

Ich habe mich an die Bezeichnungen von openWB gehalten. Kann man aber natürlich komplett englisch machen.
Durchaus auch möglich, dass openWB aktuell in einer Umstellung ist und die Topics in einer der nächsten Versionen komplett englisch sind.

Zitat von: Beta-User am 07 April 2021, 15:26:46
und dass es zwar zwei Chargemode-Readings gibt, die aber irgendwie wieder nicht mit dem Setter "Lademods" einen Kreis zu bilden scheinen;

Der globale Chargemode gibt vor, inwiefern eine PV-Anlage berücksichtigt werden soll, wenn vorhanden. Das ist unabhängig von der Einstellung für die jeweiligen Ladepunkte.
Dann gibt es den Setter DirectChargeSubMode pro Ladepunkt, der aber nur Auswirkugen hat, wenn Chargemode auf 0/SofortLaden gesetzt ist. Gibt aber scheinbar kein Topic aus dem den gesetzten DirectChargeSubMode  entnehmen kann.

Zitat von: Beta-User am 07 April 2021, 15:26:46
bei anderen müßte das aber eigentlich klappen (ChargePointEnabled). Und ob die ganzen Readings mit der automatischen Benennung belassen werden sollten? (Vermutlich könnte man kürzen und umstellen).

Deshalb steht es hier als Entwurf :-)
Ich fand es sinnvoll die Readings zu clustern, die
- entweder mit dem Wert, den openWB zur EVU bekommt/holt, zu tun hat: evu_
- mit dem Ladepunkt 1: lp_1_
- mit dem Ladepunkt 2: lp_2_
- global für die openWB gelten

Zitat von: Beta-User am 07 April 2021, 15:26:46
Die "slide" sind vermutlich jeweils Typos?

Ups, ja.
Migriere derzeit zu Home Assistant

yersinia

kleines Update für das tasmota_POW template, weil reading IPAddress (zumindest bei meiner Tasmota 9.4.0) durch Info2_IPAddress ersetzt worden ist:
attr DEVICE devStateIcon {my $text = ' uptime: '.ReadingsVal($name,"Uptime","unknown").sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1"));; my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot";; my $light = ReadingsVal($name,"state","off");;"<div><a href=\"http://".ReadingsVal($name,"IPAddress",ReadingsVal($name,"Info2_IPAddress","none"))." \"target=\"_blank\">".FW_makeImage($onl).'</a> <a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($light)."</a>$text<b></b>"}
(Zeile 1047)

btw, soll das eigtl so
$text<b></b>
?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Beta-User

Danke für den Hinweis, das mit dem "leeren Fett" ist auch weg...

Btw.: Das mit dem neuen Reading für IPAddress müsste eigentlich noch mehr devices betreffen, oder?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

yersinia

#424
Zitat von: Beta-User am 08 Mai 2021, 15:11:52Btw.: Das mit dem neuen Reading für IPAddress müsste eigentlich noch mehr devices betreffen, oder?
Ich denke ja. Im fw-check für Tasmota benutze ich dieses historisch gewachsene Konstrukt:
ReadingsVal($dev,"Info2_IPAddress",ReadingsVal($dev,"IPAddress",ReadingsVal($dev,"INFO2_IPAddress","0.0.0.0")))


EDIT: das betrifft folgende Zeilen:
1083

Diese Zuweisungen im attr stateFormat sehen komisch aus - gibt es ein Reading IPAddress?
<a href="http://IPAddress" target="_blank">IPAddress</a>
1139
1165
1193
1245
1322
1527
1658
1725
2050


viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Otto123

#425
Zitat von: Beta-User am 08 Mai 2021, 15:11:52
Btw.: Das mit dem neuen Reading für IPAddress müsste eigentlich noch mehr devices betreffen, oder?
Ich befürchte, das wird mehr Arbeit  ::)
Ich habe mal gerade ein ganz generisches Device aktualisiert, das hatte bisher kein Template, das ist jetzt in den Readings gefühlt doppelt so lang geworden ...
Das INFO2_... kommt doch auch durch json2namevalue, das könnte man doch wieder wegmappen?
Zitat2021-05-08 15:40:03   Info1_FallbackTopic cmnd/DVES_D8B7E5_fb/
     2021-05-08 15:40:03   Info1_GroupTopic cmnd/tasmotas/
     2021-05-08 15:40:03   Info1_Module    Generic
     2021-05-08 15:40:03   Info1_Version   9.4.0(tasmota)
     2021-05-08 15:40:03   Info2_Hostname  tasmota-6117
     2021-05-08 15:40:03   Info2_IPAddress 192.168.178.218
     2021-05-08 15:40:03   Info2_WebServerMode Admin
     2021-05-08 15:40:03   Info3_RestartReason Software/System restart
Es kommen auch ganz neue Topics:
2021.05.08 15:34:46 2: autocreate: define MQTT2_tasmota MQTT2_DEVICE tasmota mqtt2s
attr MQTT2_tasmota readingList stat/tasmota/UPGRADE:.* { json2nameValue($EVENT) }
Das wird bestimmt noch lustig  ::)
Zitatgibt es ein Reading IPAddress?
gab es bisher - ja. Das wird jetzt nicht mehr bedient  :'(
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Zitat von: Otto123 am 08 Mai 2021, 15:58:07
Ich befürchte, das wird mehr Arbeit  ::)
Ich habe mal gerade ein ganz generisches Device aktualisiert, das hatte bisher kein Template, das ist jetzt in den Readings gefühlt doppelt so lang geworden ...
Das INFO2_... kommt doch auch durch json2namevalue, das könnte man doch wieder wegmappen?
Müßte eigentlich gehen mit jsonMap, und da praktisch alle über das zentrale Tasmota-attrTemplate laufen, dürfte das auch relativ wenig Aufwand sein; problematisch sind danach eigentlich nur noch die "Spezialfälle", insbesondere mehrkanalige "Einheitsdevices".
Und da wir dann wieder auf einem einheitlichen Stand sind über alle Firmware-Versionen weg, sollte das auch am wenigsten Rückfragen seitens der User verursachen, oder?

ZitatEs kommen auch ganz neue Topics:
2021.05.08 15:34:46 2: autocreate: define MQTT2_tasmota MQTT2_DEVICE tasmota mqtt2s
attr MQTT2_tasmota readingList stat/tasmota/UPGRADE:.* { json2nameValue($EVENT) }
Das wird bestimmt noch lustig  ::)
...öfter mal was neues...

Magst du dir das insgesamt mal ansehen? (80/20 wäre für den ersten Schuss schon mal super!)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

first shot für die Info._ bekommt man das eleganter? Das Reading jsonMap ist ja ziemlich simpel.
Man könnte anstatt $JSONMAP ein Stück Code geben - macht "man" das?  ::) ;D
attr ... readingList tele/tasmota.../INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_DVES_D8B7E5 jsonMap Info1_FallbackTopic:FallbackTopic Info1_GroupTopic:GroupTopic Info1_Module:Module Info1_Version:Version Info2_Hostname:Hostname Info2_IPAddress:IPAddress Info2_WebServerMode:WebServerMode Info3_RestartReason:RestartReason
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Zitat von: Otto123 am 10 Mai 2021, 13:55:12
first shot für die Info._ bekommt man das eleganter? Das Reading jsonMap ist ja ziemlich simpel.
Man könnte anstatt $JSONMAP ein Stück Code geben - macht "man" das?  ::) ;D
attr ... readingList tele/tasmota.../INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_DVES_D8B7E5 jsonMap Info1_FallbackTopic:FallbackTopic Info1_GroupTopic:GroupTopic Info1_Module:Module Info1_Version:Version Info2_Hostname:Hostname Info2_IPAddress:IPAddress Info2_WebServerMode:WebServerMode Info3_RestartReason:RestartReason

Na ja, _falls_ Code statt $JSONMAP ginge (ein flacher HASH ginge wohl, wenn ich das richtig im Kopf habe), würde man damit wohl das sonstige Mapping abschießen; wenn, dann müßte man $EVENT "vorbehandeln". "Info2_" etc. deutet ja auch darauf hin, dass es noch eine interne Struktur gibt, die eher dem alten Format entspricht. Erst diese Umverpackung (zusätzlich zum Topic) dafür sorgt, dass diese "unglücklichen" Readingnamen entstehen, oder liege ich da falsch...? Ggf. könnte man auch versuchen, das auf alten Stand (via backlog ?) zurückzukonfigurieren, vielleicht kann man den Unsinn abstellen?

Ansonsten ist der jsonMap-Mechanismus (nach meinem Code-Gedächtnis) ein "simpler" hash-lookup, von daher ist an der Stelle dann nichts mit regex.
Man frag sich aber, wer die ganzen Infos wann und warum braucht...

Wäre interessant zu hören, was Rudi zum Thema effiziente Verarbeitung meint, aber da müssten wir wohl etwas MQTT-Traffic zum Spielen liefern, bevor wir ggf. eine Antwort darauf bekommen ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Zitatdass es noch eine interne Struktur gibt, die eher dem alten Format entspricht.

So ist es auch:

Alt:

14:14:39.567 MQT: tele/DVES_825880/INFO1 = {"Module":"Sonoff 4CH","Version":"9.4.0(sensors)","FallbackTopic":"cmnd/DVES_825880_fb/","GroupTopic":"cmnd/tasmotas/"}
14:14:39.576 MQT: tele/DVES_825880/INFO2 = {"WebServerMode":"Admin","Hostname":"DVES_825880-6272","IPAddress":"192.168.188.61"}
14:14:39.587 MQT: tele/DVES_825880/INFO3 = {"RestartReason":"Software/System restart"}


Neu:

14:14:39.567 MQT: tele/DVES_825880/INFO1 = {"Info1":{"Module":"Sonoff 4CH","Version":"9.4.0(sensors)","FallbackTopic":"cmnd/DVES_825880_fb/","GroupTopic":"cmnd/tasmotas/"}}
14:14:39.576 MQT: tele/DVES_825880/INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"DVES_825880-6272","IPAddress":"192.168.188.61"}}
14:14:39.587 MQT: tele/DVES_825880/INFO3 = {"Info3":{"RestartReason":"Software/System restart"}}


Meine Vermutung ist das man die Objektnamen ("Info.": ) mit j2nv ignorieren kann, ist aber wie so oft/immer  ::), entweder zu wenig bisher verstanden oder schon wieder vergessen wie das umzusetzen wäre.

Beta-User

_Mit_ j2nv geht wohl nicht, aber _vor_ sollte gehen:

attr DEVICE readingList \
  TELETOPIC/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Ja das passt so.

defmod MQTT2_DVES_825880_CHTest MQTT2_DEVICE DVES_825880
attr MQTT2_DVES_825880_CHTest IODev MQTT2_Server
attr MQTT2_DVES_825880_CHTest autocreate 0
attr MQTT2_DVES_825880_CHTest comment Channel 1 for MQTT2_DVES_825880, see also MQTT2_DVES_825880_CH2, MQTT2_DVES_825880_CH3 and MQTT2_DVES_825880_CH4
attr MQTT2_DVES_825880_CHTest genericDeviceType switch
attr MQTT2_DVES_825880_CHTest icon hue_filled_outlet
attr MQTT2_DVES_825880_CHTest jsonMap POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
attr MQTT2_DVES_825880_CHTest model tasmota_4channel_split
attr MQTT2_DVES_825880_CHTest readingList tele/DVES_825880/LWT:.* LWT\
  tele/DVES_825880/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  tele/DVES_825880/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  tele/DVES_825880/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
  tele/DVES_825880/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  stat/DVES_825880/POWER1:.* state\
  stat/DVES_825880/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_DVES_825880_CHTest room MQTT2_DEVICE
attr MQTT2_DVES_825880_CHTest setList off:noArg    cmnd/DVES_825880/POWER1 0\
  on:noArg     cmnd/DVES_825880/POWER1 1\
  toggle:noArg cmnd/DVES_825880/POWER1 2\
  setOtaUrl:textField cmnd/DVES_825880/OtaUrl $EVTPART1\
  upgrade:noArg   cmnd/DVES_825880/upgrade 1
attr MQTT2_DVES_825880_CHTest setStateList on off toggle

setstate MQTT2_DVES_825880_CHTest off
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 FallbackTopic cmnd/DVES_825880_fb/
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 GroupTopic cmnd/tasmotas/
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Heap 23
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 Hostname DVES_825880-6272
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:01:52 IODev MQTT2_Server
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 IPAddress 192.168.188.61
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 LWT Online
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 LoadAvg 24
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 Module Sonoff 4CH
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 MqttCount 1
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 RestartReason Software/System restart
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Sleep 50
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 SleepMode Dynamic
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Time 2021-05-10T15:04:54
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Uptime 0T00:00:09
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 UptimeSec 9
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 Version 9.4.0(sensors)
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 WebServerMode Admin
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Wifi_AP 1
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Wifi_BSSId FE:EC:DA:FD:26:1A
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Wifi_Channel 3
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Wifi_Downtime 0T00:00:03
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Wifi_LinkCount 1
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Wifi_RSSI 76
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Wifi_SSId FBF
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:54 Wifi_Signal -62
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:04:49 state off
setstate MQTT2_DVES_825880_CHTest 2021-05-10 15:01:52 subscriptions cmnd/DVES_825880/# cmnd/DVES_825880_fb/# cmnd/tasmotas/#


Wie du siehst gibts bei dem STATE-Topic jetzt aber auch den Objektnamen Wifi:
15:04:54.460 MQT: tele/DVES_825880/STATE = {"Time":"2021-05-10T15:04:54","Uptime":"0T00:00:09","UptimeSec":9,"Heap":23,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":24,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"FE:EC:DA:FD:26:1A","Channel":3,"RSSI":76,"Signal":-62,"LinkCount":1,"Downtime":"0T00:00:03"}}

Evtl. ist es einfacher/kürzer in Zukunft mit den Prefixen zu leben ?

Beta-User

Zitat von: TomLee am 10 Mai 2021, 15:10:24
Evtl. ist es einfacher/kürzer in Zukunft mit den Prefixen zu leben ?
Na ja, wenn das bedeuten soll, ohne jsonMap zu arbeiten, dann haben wir zumindest in der Übergangszeit das Problem, dass man diese alternative Abfrage machen muss und man befürchten muss, dass das tendenziell mehr werden wird mit diesen (mAn. unnötig) verschachtelten Objekten.

Von daher neige ich dazu, das eher auf den alten Stand hinzubiegen. Die Frage wäre also, was der effizientere Weg ist, und ich vermute fast, dass es die regex-Variante mit dem "vorbehandelten" $EVENT ist. Ist halt nicht so schön anzusehen, aber wen stört das schon...

Leider ist mir zumindest auf die Schnelle im Tasmota-Changelog nichts dazu über den Weg gelaufen, wo das überhaupt herkommt; ich vermute, das kommt aus dem WiFi-Manager-Framework...?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

hydrotec

[FRAGE]

Hallo werte MQTT2-Gemeinde,

bin relativ neu in dem Thema MQTT2.
Erst einmal ein dickes Lob an alle Beteiligten.
Was hier in den letzten Jahren gewachsen ist, Hut ab.

Dankeschön  :)

Lese mich dazu schon einige Tage durch die Dokumentationen (Wiki/Forum).
Sollte die Frage schon einmal behandelt worden sein, bitte ich dies zu entschuldigen.
Ist nicht gerade wenig, wenn auch gut verfasst.

Konkret geht es um zigbee2mqtt.
Erst einmal MQTT2_SERVER (inkl. allowed) nach FHEMWiki angelegt.
Anschließend nach der Anleitung unter Zigbee2mqtt vorgegangen.

mqtt:
  client_id: 'zigbee_general'

advanced:
  report: true

in der configuration.yaml eingetragen.
Und danach zigbee2mqtt.service gestartet.
Autocreate hat mir auch gleich ein MQTT2-DEVICE angelegt, bei dem ich

set MQTT2_zigbee_general attrTemplate zigbee2mqtt_bridge

angewendet habe.

Soweit so gut, alles wie es sein soll.
zigbee-Devices werden angelegt, und mit den jeweiligen Templates funktioniert auch alles wie es soll.


Jetzt zur eigentlichen Frage. (genau genommen sind es zwei)
Sobald ich das Template zigbee2mqtt_bridge auf MQTT2_zigbee_general anwende, wird mir zusätzlich noch folgendes MQTT2-DEVICE mit angelegt.

define MQTT2_zigbee_bridge MQTT2_DEVICE zigbee_bridge
attr MQTT2_zigbee_bridge DbLogExclude .*
attr MQTT2_zigbee_bridge readingList zigbee2mqtt/bridge/logging:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_bridge room MQTT2_DEVICE

setstate MQTT2_zigbee_bridge 2021-05-12 16:53:15 IODev MQTT2_SERVER
setstate MQTT2_zigbee_bridge 2021-05-12 16:53:15 associatedWith MQTT2_zigbee_general
setstate MQTT2_zigbee_bridge 2021-05-13 08:31:36 level info
setstate MQTT2_zigbee_bridge 2021-05-13 08:31:36 message MQTT publish: topic 'zigbee2mqtt/xi_sensor_light_02', payload '{"battery":100,"illuminance":40115,"illuminance_lux":10266,"linkquality":111,"voltage":3100}'


Was für eine Funktion hat dies, und gibt es hier auch ein Template welches ich anwenden sollte?


Hoffentlich war alles etwas verständlich ausgedrückt.
Sollten noch weitere Informationen fehlen, bitte melden.

Gruß, Karsten



Falls benötigt, noch die anderen Devices (list -r <device>)

MQTT2_SERVER

define MQTT2_SERVER MQTT2_SERVER 1883 global
attr MQTT2_SERVER DbLogExclude .*
attr MQTT2_SERVER group MQTT2
attr MQTT2_SERVER room 03_Service

setstate MQTT2_SERVER 2021-05-12 15:30:19 RETAIN {"zigbee2mqtt/bridge/config":"{\u0022commit\u0022:\u0022f2e39af1\u0022,\u0022coordinator\u0022:{\u0022meta\u0022:{\u0022maintrel\u0022:1,\u0022majorrel\u0022:2,\u0022minorrel\u0022:7,\u0022product\u0022:1,\u0022revision\u0022:20210120,\u0022transportrev\u0022:2},\u0022type\u0022:\u0022zStack3x0\u0022},\u0022log_level\u0022:\u0022info\u0022,\u0022network\u0022:{\u0022channel\u0022:11,\u0022extendedPanID\u0022:\u00220xdddddddddddddddd\u0022,\u0022panID\u0022:58385},\u0022permit_join\u0022:false,\u0022version\u0022:\u00221.18.3\u0022}","zigbee2mqtt/bridge/devices":"[{\u0022definition\u0022:null,\u0022endpoints\u0022:{\u00221\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002210\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002211\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[\u0022ssIasAce\u0022],\u0022output\u0022:[\u0022ssIasZone\u0022,\u0022ssIasWd\u0022]},\u0022configured_reportings\u0022:[]},\u0022110\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002212\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002213\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[\u0022genOta\u0022],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u00222\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u0022242\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u00223\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u00224\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002247\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u00225\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u00226\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u00228\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]}},\u0022friendly_name\u0022:\u0022Coordinator\u0022,\u0022ieee_address\u0022:\u00220x00124b00214f3bc4\u0022,\u0022interview_completed\u0022:true,\u0022interviewing\u0022:false,\u0022network_address\u0022:0,\u0022supported\u0022:false,\u0022type\u0022:\u0022Coordinator\u0022},{\u0022date_code\u0022:\u002220161128\u0022,\u0022definition\u0022:{\u0022description\u0022:\u0022Aqara door & window contact sensor\u0022,\u0022exposes\u0022:[{\u0022access\u0022:1,\u0022description\u0022:\u0022Remaining battery in %\u0022,\u0022name\u0022:\u0022battery\u0022,\u0022property\u0022:\u0022battery\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022%\u0022,\u0022value_max\u0022:100,\u0022value_min\u0022:0},{\u0022access\u0022:1,\u0022description\u0022:\u0022Indicates if the contact is closed (= true) or open (= false)\u0022,\u0022name\u0022:\u0022contact\u0022,\u0022property\u0022:\u0022contact\u0022,\u0022type\u0022:\u0022binary\u0022,\u0022value_off\u0022:true,\u0022value_on\u0022:false},{\u0022access\u0022:1,\u0022description\u0022:\u0022Measured temperature value\u0022,\u0022name\u0022:\u0022temperature\u0022,\u0022property\u0022:\u0022temperature\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022°C\u0022},{\u0022access\u0022:1,\u0022description\u0022:\u0022Voltage of the battery in millivolts\u0022,\u0022name\u0022:\u0022voltage\u0022,\u0022property\u0022:\u0022voltage\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022mV\u0022},{\u0022access\u0022:1,\u0022description\u0022:\u0022Link quality (signal strength)\u0022,\u0022name\u0022:\u0022linkquality\u0022,\u0022property\u0022:\u0022linkquality\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022lqi\u0022,\u0022value_max\u0022:255,\u0022value_min\u0022:0}],\u0022model\u0022:\u0022MCCGQ11LM\u0022,\u0022supports_ota\u0022:false,\u0022vendor\u0022:\u0022Xiaomi\u0022},\u0022endpoints\u0022:{\u00221\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[\u0022genBasic\u0022,\u0022genIdentify\u0022,\u0022genOnOff\u0022],\u0022output\u0022:[\u0022genBasic\u0022,\u0022genGroups\u0022]},\u0022configured_reportings\u0022:[]}},\u0022friendly_name\u0022:\u0022xi_sensor_contact_03\u0022,\u0022ieee_address\u0022:\u00220x00158d000669299c\u0022,\u0022interview_completed\u0022:true,\u0022interviewing\u0022:false,\u0022model_id\u0022:\u0022lumi.sensor_magnet.aq2\u0022,\u0022network_address\u0022:26209,\u0022power_source\u0022:\u0022Battery\u0022,\u0022software_build_id\u0022:\u00223000-0001\u0022,\u0022supported\u0022:true,\u0022type\u0022:\u0022EndDevice\u0022},{\u0022definition\u0022:{\u0022description\u0022:\u0022Aqara door & window contact sensor\u0022,\u0022exposes\u0022:[{\u0022access\u0022:1,\u0022description\u0022:\u0022Remaining battery in %\u0022,\u0022name\u0022:\u0022battery\u0022,\u0022property\u0022:\u0022battery\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022%\u0022,\u0022value_max\u0022:100,\u0022value_min\u0022:0},{\u0022access\u0022:1,\u0022description\u0022:\u0022Indicates if the contact is closed (= true) or open (= false)\u0022,\u0022name\u0022:\u0022contact\u0022,\u0022property\u0022:\u0022contact\u0022,\u0022type\u0022:\u0022binary\u0022,\u0022value_off\u0022:true,\u0022value_on\u0022:false},{\u0022access\u0022:1,\u0022description\u0022:\u0022Measured temperature value\u0022,\u0022name\u0022:\u0022temperature\u0022,\u0022property\u0022:\u0022temperature\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022°C\u0022},{\u0022access\u0022:1,\u0022description\u0022:\u0022Voltage of the battery in millivolts\u0022,\u0022name\u0022:\u0022voltage\u0022,\u0022property\u0022:\u0022voltage\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022mV\u0022},{\u0022access\u0022:1,\u0022description\u0022:\u0022Link quality (signal strength)\u0022,\u0022name\u0022:\u0022linkquality\u0022,\u0022property\u0022:\u0022linkquality\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022lqi\u0022,\u0022value_max\u0022:255,\u0022value_min\u0022:0}],\u0022model\u0022:\u0022MCCGQ11LM\u0022,\u0022supports_ota\u0022:false,\u0022vendor\u0022:\u0022Xiaomi\u0022},\u0022endpoints\u0022:{\u00221\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]}},\u0022friendly_name\u0022:\u0022xi_sensor_contact_04\u0022,\u0022ieee_address\u0022:\u00220x00158d000669348a\u0022,\u0022interview_completed\u0022:true,\u0022interviewing\u0022:false,\u0022model_id\u0022:\u0022lumi.sensor_magnet.aq2\u0022,\u0022network_address\u0022:3822,\u0022power_source\u0022:\u0022Battery\u0022,\u0022supported\u0022:true,\u0022type\u0022:\u0022EndDevice\u0022},{\u0022date_code\u0022:\u002220190710\u0022,\u0022definition\u0022:{\u0022description\u0022:\u0022SYMFONISK sound controller\u0022,\u0022exposes\u0022:[{\u0022access\u0022:1,\u0022description\u0022:\u0022Remaining battery in %\u0022,\u0022name\u0022:\u0022battery\u0022,\u0022property\u0022:\u0022battery\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022%\u0022,\u0022value_max\u0022:100,\u0022value_min\u0022:0},{\u0022access\u0022:1,\u0022description\u0022:\u0022Triggered action (e.g. a button click)\u0022,\u0022name\u0022:\u0022action\u0022,\u0022property\u0022:\u0022action\u0022,\u0022type\u0022:\u0022enum\u0022,\u0022values\u0022:[\u0022brightness_move_up\u0022,\u0022brightness_move_down\u0022,\u0022brightness_stop\u0022,\u0022toggle\u0022,\u0022brightness_step_up\u0022,\u0022brightness_step_down\u0022]},{\u0022access\u0022:1,\u0022description\u0022:\u0022Link quality (signal strength)\u0022,\u0022name\u0022:\u0022linkquality\u0022,\u0022property\u0022:\u0022linkquality\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022lqi\u0022,\u0022value_max\u0022:255,\u0022value_min\u0022:0}],\u0022model\u0022:\u0022E1744\u0022,\u0022supports_ota\u0022:true,\u0022vendor\u0022:\u0022IKEA\u0022},\u0022endpoints\u0022:{\u00221\u0022:{\u0022bindings\u0022:[{\u0022cluster\u0022:\u0022genLevelCtrl\u0022,\u0022target\u0022:{\u0022endpoint\u0022:1,\u0022ieee_address\u0022:\u00220x00124b00214f3bc4\u0022,\u0022type\u0022:\u0022endpoint\u0022}},{\u0022cluster\u0022:\u0022genPowerCfg\u0022,\u0022target\u0022:{\u0022endpoint\u0022:1,\u0022ieee_address\u0022:\u00220x00124b00214f3bc4\u0022,\u0022type\u0022:\u0022endpoint\u0022}}],\u0022clusters\u0022:{\u0022input\u0022:[\u0022genBasic\u0022,\u0022genPowerCfg\u0022,\u0022genIdentify\u0022,\u0022genPollCtrl\u0022,\u0022touchlink\u0022],\u0022output\u0022:[\u0022genIdentify\u0022,\u0022genGroups\u0022,\u0022genOnOff\u0022,\u0022genLevelCtrl\u0022,\u0022genOta\u0022,\u0022touchlink\u0022]},\u0022configured_reportings\u0022:[{\u0022attribute\u0022:\u0022batteryPercentageRemaining\u0022,\u0022cluster\u0022:\u0022genPowerCfg\u0022,\u0022maximum_report_interval\u0022:62000,\u0022minimum_report_interval\u0022:3600,\u0022reportable_change\u0022:0}]}},\u0022friendly_name\u0022:\u0022ik_remote_symfonisk_02\u0022,\u0022ieee_address\u0022:\u00220x680ae2fffe1aa806\u0022,\u0022interview_completed\u0022:true,\u0022interviewing\u0022:false,\u0022model_id\u0022:\u0022SYMFONISK Sound Controller\u0022,\u0022network_address\u0022:1941,\u0022power_source\u0022:\u0022Battery\u0022,\u0022software_build_id\u0022:\u00222.1.024\u0022,\u0022supported\u0022:true,\u0022type\u0022:\u0022EndDevice\u0022},{\u0022date_code\u0022:\u002220191118\u0022,\u0022definition\u0022:{\u0022description\u0022:\u0022MiJia light intensity sensor\u0022,\u0022exposes\u0022:[{\u0022access\u0022:1,\u0022description\u0022:\u0022Remaining battery in %\u0022,\u0022name\u0022:\u0022battery\u0022,\u0022property\u0022:\u0022battery\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022%\u0022,\u0022value_max\u0022:100,\u0022value_min\u0022:0},{\u0022access\u0022:1,\u0022description\u0022:\u0022Raw measured illuminance\u0022,\u0022name\u0022:\u0022illuminance\u0022,\u0022property\u0022:\u0022illuminance\u0022,\u0022type\u0022:\u0022numeric\u0022},{\u0022access\u0022:1,\u0022description\u0022:\u0022Measured illuminance in lux\u0022,\u0022name\u0022:\u0022illuminance_lux\u0022,\u0022property\u0022:\u0022illuminance_lux\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022lx\u0022},{\u0022access\u0022:1,\u0022description\u0022:\u0022Link quality (signal strength)\u0022,\u0022name\u0022:\u0022linkquality\u0022,\u0022property\u0022:\u0022linkquality\u0022,\u0022type\u0022:\u0022numeric\u0022,\u0022unit\u0022:\u0022lqi\u0022,\u0022value_max\u0022:255,\u0022value_min\u0022:0}],\u0022model\u0022:\u0022GZCGQ01LM\u0022,\u0022supports_ota\u0022:false,\u0022vendor\u0022:\u0022Xiaomi\u0022},\u0022endpoints\u0022:{\u00221\u0022:{\u0022bindings\u0022:[{\u0022cluster\u0022:\u0022genPowerCfg\u0022,\u0022target\u0022:{\u0022endpoint\u0022:1,\u0022ieee_address\u0022:\u00220x00124b00214f3bc4\u0022,\u0022type\u0022:\u0022endpoint\u0022}},{\u0022cluster\u0022:\u0022msIlluminanceMeasurement\u0022,\u0022target\u0022:{\u0022endpoint\u0022:1,\u0022ieee_address\u0022:\u00220x00124b00214f3bc4\u0022,\u0022type\u0022:\u0022endpoint\u0022}}],\u0022clusters\u0022:{\u0022input\u0022:[\u0022genBasic\u0022,\u0022msIlluminanceMeasurement\u0022,\u0022genIdentify\u0022,\u0022genPowerCfg\u0022],\u0022output\u0022:[\u0022genIdentify\u0022]},\u0022configured_reportings\u0022:[{\u0022attribute\u0022:\u0022batteryVoltage\u0022,\u0022cluster\u0022:\u0022genPowerCfg\u0022,\u0022maximum_report_interval\u0022:62000,\u0022minimum_report_interval\u0022:3600,\u0022reportable_change\u0022:0},{\u0022attribute\u0022:\u0022measuredValue\u0022,\u0022cluster\u0022:\u0022msIlluminanceMeasurement\u0022,\u0022maximum_report_interval\u0022:3600,\u0022minimum_report_interval\u0022:15,\u0022reportable_change\u0022:500}]}},\u0022friendly_name\u0022:\u0022xi_sensor_light_02\u0022,\u0022ieee_address\u0022:\u00220x04cf8cdf3c7ca64e\u0022,\u0022interview_completed\u0022:true,\u0022interviewing\u0022:false,\u0022model_id\u0022:\u0022lumi.sen_ill.mgl01\u0022,\u0022network_address\u0022:39578,\u0022power_source\u0022:\u0022Battery\u0022,\u0022software_build_id\u0022:\u00222019\u005cu0000www.\u0022,\u0022supported\u0022:true,\u0022type\u0022:\u0022EndDevice\u0022}]","zigbee2mqtt/bridge/extensions":"[]","zigbee2mqtt/bridge/groups":"[]","zigbee2mqtt/bridge/info":"{\u0022commit\u0022:\u0022f2e39af1\u0022,\u0022config\u0022:{\u0022advanced\u0022:{\u0022adapter_concurrent\u0022:null,\u0022adapter_delay\u0022:null,\u0022availability_blacklist\u0022:[],\u0022availability_blocklist\u0022:[],\u0022availability_passlist\u0022:[],\u0022availability_timeout\u0022:0,\u0022availability_whitelist\u0022:[],\u0022cache_state\u0022:true,\u0022cache_state_persistent\u0022:true,\u0022cache_state_send_on_startup\u0022:true,\u0022channel\u0022:11,\u0022elapsed\u0022:false,\u0022ext_pan_id\u0022:[221,221,221,221,221,221,221,221],\u0022homeassistant_discovery_topic\u0022:\u0022homeassistant\u0022,\u0022homeassistant_legacy_triggers\u0022:true,\u0022homeassistant_status_topic\u0022:\u0022hass/status\u0022,\u0022last_seen\u0022:\u0022disable\u0022,\u0022legacy_api\u0022:true,\u0022log_directory\u0022:\u0022/opt/zigbee2mqtt/data/log/%TIMESTAMP%\u0022,\u0022log_file\u0022:\u0022log.txt\u0022,\u0022log_level\u0022:\u0022info\u0022,\u0022log_output\u0022:[\u0022console\u0022,\u0022file\u0022],\u0022log_rotation\u0022:true,\u0022log_symlink_current\u0022:false,\u0022log_syslog\u0022:{},\u0022pan_id\u0022:58385,\u0022report\u0022:true,\u0022soft_reset_timeout\u0022:0,\u0022timestamp_format\u0022:\u0022YYYY-MM-DD HH:mm:ss\u0022},\u0022ban\u0022:[],\u0022blocklist\u0022:[],\u0022device_options\u0022:{},\u0022devices\u0022:{\u00220x00158d000669299c\u0022:{\u0022debounce\u0022:1,\u0022filtered_attributes\u0022:[],\u0022friendly_name\u0022:\u0022xi_sensor_contact_03\u0022,\u0022temperature_calibration\u0022:0,\u0022temperature_precision\u0022:{\u002210\u0022:1,\u002230\u0022:0}},\u00220x00158d000669348a\u0022:{\u0022debounce\u0022:1,\u0022friendly_name\u0022:\u0022xi_sensor_contact_04\u0022},\u00220x04cf8cdf3c7ca64e\u0022:{\u0022friendly_name\u0022:\u0022xi_sensor_light_02\u0022},\u00220x680ae2fffe1aa806\u0022:{\u0022debounce\u0022:0.2,\u0022debounce_ignore\u0022:[\u0022action\u0022,\u0022brightness\u0022],\u0022friendly_name\u0022:\u0022ik_remote_symfonisk_02\u0022}},\u0022experimental\u0022:{\u0022output\u0022:\u0022json\u0022},\u0022external_converters\u0022:[],\u0022frontend\u0022:{\u0022host\u0022:\u00220.0.0.0\u0022,\u0022port\u0022:8080},\u0022groups\u0022:{},\u0022homeassistant\u0022:false,\u0022map_options\u0022:{\u0022graphviz\u0022:{\u0022colors\u0022:{\u0022fill\u0022:{\u0022coordinator\u0022:\u0022#e04e5d\u0022,\u0022enddevice\u0022:\u0022#fff8ce\u0022,\u0022router\u0022:\u0022#4ea3e0\u0022},\u0022font\u0022:{\u0022coordinator\u0022:\u0022#ffffff\u0022,\u0022enddevice\u0022:\u0022#000000\u0022,\u0022router\u0022:\u0022#ffffff\u0022},\u0022line\u0022:{\u0022active\u0022:\u0022#009900\u0022,\u0022inactive\u0022:\u0022#994444\u0022}}}},\u0022mqtt\u0022:{\u0022base_topic\u0022:\u0022zigbee2mqtt\u0022,\u0022client_id\u0022:\u0022zigbee_general\u0022,\u0022force_disable_retain\u0022:false,\u0022include_device_information\u0022:false,\u0022server\u0022:\u0022mqtt://192.168.78.131\u0022,\u0022user\u0022:\u0022<user>\u0022},\u0022ota\u0022:{\u0022disable_automatic_update_check\u0022:false,\u0022update_check_interval\u0022:1440},\u0022passlist\u0022:[],\u0022permit_join\u0022:false,\u0022serial\u0022:{\u0022disable_led\u0022:false,\u0022port\u0022:\u0022/dev/ttyUSB0\u0022},\u0022whitelist\u0022:[]},\u0022config_schema\u0022:{\u0022definitions\u0022:{\u0022device\u0022:{\u0022properties\u0022:{\u0022debounce\u0022:{\u0022description\u0022:\u0022Debounces messages of this device\u0022,\u0022title\u0022:\u0022Debounce\u0022,\u0022type\u0022:\u0022number\u0022},\u0022debounce_ignore\u0022:{\u0022description\u0022:\u0022Protects unique payload values of specified payload properties from overriding within debounce time\u0022,\u0022examples\u0022:[\u0022action\u0022],\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022title\u0022:\u0022Ignore debounce\u0022,\u0022type\u0022:\u0022array\u0022},\u0022filtered_attributes\u0022:{\u0022description\u0022:\u0022Allows to prevent certain attributes from being published\u0022,\u0022examples\u0022:[\u0022temperature\u0022,\u0022battery\u0022,\u0022action\u0022],\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022title\u0022:\u0022Filtered attributes\u0022,\u0022type\u0022:\u0022array\u0022},\u0022friendly_name\u0022:{\u0022description\u0022:\u0022Used in the MQTT topic of a device. By default this is the device ID\u0022,\u0022readOnly\u0022:true,\u0022title\u0022:\u0022Friendly name\u0022,\u0022type\u0022:\u0022string\u0022},\u0022icon\u0022:{\u0022description\u0022:\u0022The user-defined device icon for the frontend. It can be a link to an image (not a path to a file) or base64 encoded data URL like: image/svg+xml;;base64,PHN2ZyB3aW....R0aD\u0022,\u0022title\u0022:\u0022Icon\u0022,\u0022type\u0022:\u0022string\u0022},\u0022optimistic\u0022:{\u0022description\u0022:\u0022Publish optimistic state after set (default true)\u0022,\u0022title\u0022:\u0022Optimistic\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022qos\u0022:{\u0022descritption\u0022:\u0022QoS level for MQTT messages of this device\u0022,\u0022title\u0022:\u0022QoS\u0022,\u0022type\u0022:\u0022number\u0022},\u0022retain\u0022:{\u0022description\u0022:\u0022Retain MQTT messages of this device\u0022,\u0022title\u0022:\u0022Retain\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022retention\u0022:{\u0022description\u0022:\u0022Sets the MQTT Message Expiry in seconds, Make sure to set mqtt.version to 5\u0022,\u0022title\u0022:\u0022Retention\u0022,\u0022type\u0022:\u0022number\u0022}},\u0022required\u0022:[\u0022friendly_name\u0022],\u0022type\u0022:\u0022object\u0022},\u0022group\u0022:{\u0022properties\u0022:{\u0022devices\u0022:{\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022type\u0022:\u0022array\u0022},\u0022filtered_attributes\u0022:{\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022type\u0022:\u0022array\u0022},\u0022friendly_name\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022optimistic\u0022:{\u0022type\u0022:\u0022boolean\u0022},\u0022qos\u0022:{\u0022type\u0022:\u0022number\u0022},\u0022retain\u0022:{\u0022type\u0022:\u0022boolean\u0022}},\u0022required\u0022:[\u0022friendly_name\u0022],\u0022type\u0022:\u0022object\u0022}},\u0022properties\u0022:{\u0022advanced\u0022:{\u0022properties\u0022:{\u0022adapter_concurrent\u0022:{\u0022description\u0022:\u0022Adapter concurrency (e.g. 2 for CC2531 or 16 for CC26X2R1) (default: null, uses recommended value)\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Adapter concurrency\u0022,\u0022type\u0022:[\u0022number\u0022,\u0022null\u0022]},\u0022adapter_delay\u0022:{\u0022description\u0022:\u0022Adapter delay\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Adapter delay\u0022,\u0022type\u0022:[\u0022number\u0022,\u0022null\u0022]},\u0022availability_blacklist\u0022:{\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022readOnly\u0022:true,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Availability blacklist (deprecated, use availability_blocklist)\u0022,\u0022type\u0022:\u0022array\u0022},\u0022availability_blocklist\u0022:{\u0022description\u0022:\u0022Prevent devices from being checked for availability\u0022,\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Availability Blocklist\u0022,\u0022type\u0022:\u0022array\u0022},\u0022availability_passlist\u0022:{\u0022description\u0022:\u0022Only enable availability check for certain devices\u0022,\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Availability passlist\u0022,\u0022type\u0022:\u0022array\u0022},\u0022availability_timeout\u0022:{\u0022default\u0022:0,\u0022description\u0022:\u0022Availability timeout in seconds when enabled, devices will be checked if they are still online. Only AC powered routers are checked for availability\u0022,\u0022minimum\u0022:0,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Availability Timeout\u0022,\u0022type\u0022:\u0022number\u0022},\u0022availability_whitelist\u0022:{\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022readOnly\u0022:true,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Availability whitelist (deprecated, use passlist)\u0022,\u0022type\u0022:\u0022array\u0022},\u0022baudrate\u0022:{\u0022description\u0022:\u0022Baud rate speed for serial port, this can be anything firmware support but default is 115200 for Z-Stack and EZSP, 38400 for Deconz, however note that some EZSP firmware need 57600\u0022,\u0022examples\u0022:[38400,57600,115200],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Baudrate\u0022,\u0022type\u0022:\u0022number\u0022},\u0022cache_state\u0022:{\u0022default\u0022:true,\u0022description\u0022:\u0022MQTT message payload will contain all attributes, not only changed ones. Has to be true when integrating via Home Assistant\u0022,\u0022title\u0022:\u0022Cache state\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022cache_state_persistent\u0022:{\u0022default\u0022:true,\u0022description\u0022:\u0022Persist cached state, only used when cache_state: true\u0022,\u0022title\u0022:\u0022Persist cache state\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022cache_state_send_on_startup\u0022:{\u0022default\u0022:true,\u0022description\u0022:\u0022Send cached state on startup, only used when cache_state: true\u0022,\u0022title\u0022:\u0022Send cached state on startup\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022channel\u0022:{\u0022default\u0022:11,\u0022description\u0022:\u0022Zigbee channel, changing requires repairing all devices! (Note: use a ZLL channel: 11, 15, 20, or 25 to avoid Problems)\u0022,\u0022examples\u0022:[11,15,20,25],\u0022maximum\u0022:26,\u0022minimum\u0022:11,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022ZigBee channel\u0022,\u0022type\u0022:\u0022number\u0022},\u0022elapsed\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Add an elapsed attribute to MQTT messages, contains milliseconds since the previous msg\u0022,\u0022title\u0022:\u0022Elapsed\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022ext_pan_id\u0022:{\u0022description\u0022:\u0022Zigbee extended pan ID, changing requires repairing all devices!\u0022,\u0022items\u0022:{\u0022type\u0022:\u0022number\u0022},\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Ext Pan ID\u0022,\u0022type\u0022:\u0022array\u0022},\u0022homeassistant_discovery_topic\u0022:{\u0022description\u0022:\u0022Home Assistant discovery topic\u0022,\u0022examples\u0022:[\u0022homeassistant\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Homeassistant discovery topic\u0022,\u0022type\u0022:\u0022string\u0022},\u0022homeassistant_legacy_triggers\u0022:{\u0022default\u0022:true,\u0022description\u0022:\u0022Home Assistant legacy triggers, when enabled Zigbee2mqt will send an empty 'action' or 'click' after one has been send. A 'sensor_action' and 'sensor_click' will be discoverd\u0022,\u0022title\u0022:\u0022Home Assistant legacy triggers\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022homeassistant_status_topic\u0022:{\u0022description\u0022:\u0022Home Assistant status topic\u0022,\u0022examples\u0022:[\u0022homeassistant/status\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Home Assistant status topic\u0022,\u0022type\u0022:\u0022string\u0022},\u0022ikea_ota_use_test_url\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Use IKEA TRADFRI OTA test server, see OTA updates documentation\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022IKEA TRADFRI OTA use test url\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022last_seen\u0022:{\u0022default\u0022:\u0022disable\u0022,\u0022description\u0022:\u0022Add a last_seen attribute to MQTT messages, contains date/time of last Zigbee message\u0022,\u0022enum\u0022:[\u0022disable\u0022,\u0022ISO_8601\u0022,\u0022ISO_8601_local\u0022,\u0022epoch\u0022],\u0022title\u0022:\u0022Last seen\u0022,\u0022type\u0022:\u0022string\u0022},\u0022legacy_api\u0022:{\u0022default\u0022:true,\u0022description\u0022:\u0022Disables the legacy api (false = disable)\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Legacy API\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022log_directory\u0022:{\u0022description\u0022:\u0022Location of log directory\u0022,\u0022examples\u0022:[\u0022data/log/%TIMESTAMP%\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Log directory\u0022,\u0022type\u0022:\u0022string\u0022},\u0022log_file\u0022:{\u0022default\u0022:\u0022log.txt\u0022,\u0022description\u0022:\u0022Log file name, can also contain timestamp\u0022,\u0022examples\u0022:[\u0022zigbee2mqtt_%TIMESTAMP%.log\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Log file\u0022,\u0022type\u0022:\u0022string\u0022},\u0022log_level\u0022:{\u0022default\u0022:\u0022info\u0022,\u0022description\u0022:\u0022Logging level\u0022,\u0022enum\u0022:[\u0022info\u0022,\u0022warn\u0022,\u0022error\u0022,\u0022debug\u0022],\u0022title\u0022:\u0022Log level\u0022,\u0022type\u0022:\u0022string\u0022},\u0022log_output\u0022:{\u0022description\u0022:\u0022Output location of the log, leave empty to supress logging\u0022,\u0022items\u0022:{\u0022enum\u0022:[\u0022console\u0022,\u0022file\u0022,\u0022syslog\u0022],\u0022type\u0022:\u0022string\u0022},\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Log output\u0022,\u0022type\u0022:\u0022array\u0022},\u0022log_rotation\u0022:{\u0022default\u0022:true,\u0022description\u0022:\u0022Log rotation\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Log rotation\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022log_symlink_current\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Create symlink to current logs in the log directory\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Log symlink current\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022log_syslog\u0022:{\u0022properties\u0022:{\u0022app_name\u0022:{\u0022default\u0022:\u0022Zigbee2MQTT\u0022,\u0022description\u0022:\u0022The name of the application (Default: Zigbee2MQTT).\u0022,\u0022title\u0022:\u0022Localhost\u0022,\u0022type\u0022:\u0022string\u0022},\u0022eol\u0022:{\u0022default\u0022:\u0022/n\u0022,\u0022description\u0022:\u0022The end of line character to be added to the end of the message (Default: Message without modifications).\u0022,\u0022title\u0022:\u0022eol\u0022,\u0022type\u0022:\u0022string\u0022},\u0022host\u0022:{\u0022default\u0022:\u0022localhost\u0022,\u0022description\u0022:\u0022The host running syslogd, defaults to localhost.\u0022,\u0022title\u0022:\u0022Host\u0022,\u0022type\u0022:\u0022string\u0022},\u0022localhost\u0022:{\u0022default\u0022:\u0022localhost\u0022,\u0022description\u0022:\u0022Host to indicate that log messages are coming from (Default: localhost).\u0022,\u0022title\u0022:\u0022Localhost\u0022,\u0022type\u0022:\u0022string\u0022},\u0022path\u0022:{\u0022default\u0022:\u0022/dev/log\u0022,\u0022description\u0022:\u0022The path to the syslog dgram socket (i.e. /dev/log or /var/run/syslog for OS X).\u0022,\u0022examples\u0022:[\u0022/dev/log\u0022,\u0022/var/run/syslog\u0022],\u0022title\u0022:\u0022Path\u0022,\u0022type\u0022:\u0022string\u0022},\u0022pid\u0022:{\u0022default\u0022:\u0022process.pid\u0022,\u0022description\u0022:\u0022PID of the process that log messages are coming from (Default process.pid).\u0022,\u0022title\u0022:\u0022PID\u0022,\u0022type\u0022:\u0022string\u0022},\u0022port\u0022:{\u0022default\u0022:123,\u0022description\u0022:\u0022The port on the host that syslog is running on, defaults to syslogd's default port.\u0022,\u0022title\u0022:\u0022Port\u0022,\u0022type\u0022:\u0022number\u0022},\u0022protocol\u0022:{\u0022default\u0022:\u0022tcp4\u0022,\u0022description\u0022:\u0022The network protocol to log over (e.g. tcp4, udp4, tls4, unix, unix-connect, etc).\u0022,\u0022examples\u0022:[\u0022tcp4\u0022,\u0022udp4\u0022,\u0022tls4\u0022,\u0022unix\u0022,\u0022unix-connect\u0022],\u0022title\u0022:\u0022Protocol\u0022,\u0022type\u0022:\u0022string\u0022},\u0022type\u0022:{\u0022default\u0022:\u00225424\u0022,\u0022description\u0022:\u0022The type of the syslog protocol to use (Default: BSD, also valid: 5424).\u0022,\u0022title\u0022:\u0022Type\u0022,\u0022type\u0022:\u0022string\u0022}},\u0022title\u0022:\u0022syslog\u0022,\u0022type\u0022:\u0022object\u0022},\u0022network_key\u0022:{\u0022description\u0022:\u0022Network encryption key, changing requires repairing all devices!\u0022,\u0022oneOf\u0022:[{\u0022title\u0022:\u0022Network key(string)\u0022,\u0022type\u0022:\u0022string\u0022},{\u0022items\u0022:{\u0022type\u0022:\u0022number\u0022},\u0022title\u0022:\u0022Network key(array)\u0022,\u0022type\u0022:\u0022array\u0022}],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Network key\u0022},\u0022pan_id\u0022:{\u0022description\u0022:\u0022ZigBee pan ID, changing requires repairing all devices!\u0022,\u0022oneOf\u0022:[{\u0022title\u0022:\u0022Pan ID (string)\u0022,\u0022type\u0022:\u0022string\u0022},{\u0022title\u0022:\u0022Pan ID (number)\u0022,\u0022type\u0022:\u0022number\u0022}],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Pan ID\u0022},\u0022report\u0022:{\u0022description\u0022:\u0022Enables report feature (deprecated)\u0022,\u0022readOnly\u0022:true,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Reporting\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022rtscts\u0022:{\u0022description\u0022:\u0022RTS / CTS Hardware Flow Control for serial port\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022RTS / CTS\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022soft_reset_timeout\u0022:{\u0022description\u0022:\u0022Soft reset ZNP after timeout\u0022,\u0022minimum\u0022:0,\u0022readOnly\u0022:true,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Soft reset timeout (deprecated)\u0022,\u0022type\u0022:\u0022number\u0022},\u0022timestamp_format\u0022:{\u0022description\u0022:\u0022Log timestamp format\u0022,\u0022examples\u0022:[\u0022YYYY-MM-DD HH:mm:ss\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Timestamp format\u0022,\u0022type\u0022:\u0022string\u0022}},\u0022title\u0022:\u0022Advanced\u0022,\u0022type\u0022:\u0022object\u0022},\u0022ban\u0022:{\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022readOnly\u0022:true,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Ban (deprecated, use blocklist)\u0022,\u0022type\u0022:\u0022array\u0022},\u0022blocklist\u0022:{\u0022description\u0022:\u0022Block devices from the network (by ieeeAddr)\u0022,\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Blocklist\u0022,\u0022type\u0022:\u0022array\u0022},\u0022device_options\u0022:{\u0022type\u0022:\u0022object\u0022},\u0022devices\u0022:{\u0022patternProperties\u0022:{\u0022^.*$\u0022:{\u0022$ref\u0022:\u0022#/definitions/device\u0022}},\u0022propertyNames\u0022:{\u0022pattern\u0022:\u0022^0x[\u005c\u005cd\u005c\u005cw]{16}$\u0022},\u0022type\u0022:\u0022object\u0022},\u0022experimental\u0022:{\u0022properties\u0022:{\u0022output\u0022:{\u0022description\u0022:\u0022Examples when 'state' of a device is published json: topic: 'zigbee2mqtt/my_bulb' payload '{\u005c\u0022state\u005c\u0022: \u005c\u0022ON\u005c\u0022}' attribute: topic 'zigbee2mqtt/my_bulb/state' payload 'ON' attribute_and_json: both json and attribute (see above)\u0022,\u0022enum\u0022:[\u0022attribute_and_json\u0022,\u0022attribute\u0022,\u0022json\u0022],\u0022title\u0022:\u0022MQTT output type\u0022,\u0022type\u0022:\u0022string\u0022},\u0022transmit_power\u0022:{\u0022description\u0022:\u0022Transmit power of adapter, only available for Z-Stack (CC253*/CC2652/CC1352) adapters, CC2652 = 5dbm, CC1352 max is = 20dbm (5dbm default)\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Transmit power\u0022,\u0022type\u0022:[\u0022number\u0022,\u0022null\u0022]}},\u0022title\u0022:\u0022Experimental\u0022,\u0022type\u0022:\u0022object\u0022},\u0022external_converters\u0022:{\u0022description\u0022:\u0022You can define external converters to e.g. add support for a DiY device\u0022,\u0022examples\u0022:[\u0022DIYRuZ_FreePad.js\u0022],\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022External converters\u0022,\u0022type\u0022:\u0022array\u0022},\u0022frontend\u0022:{\u0022properties\u0022:{\u0022auth_token\u0022:{\u0022description\u0022:\u0022Enables authentication, disabled by default\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Auth token\u0022,\u0022type\u0022:[\u0022string\u0022,\u0022null\u0022]},\u0022host\u0022:{\u0022default\u0022:\u0022 0.0.0.0\u0022,\u0022description\u0022:\u0022Frontend binding host\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Bind host\u0022,\u0022type\u0022:\u0022string\u0022},\u0022port\u0022:{\u0022default\u0022:8080,\u0022description\u0022:\u0022Frontend binding port\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Port\u0022,\u0022type\u0022:\u0022number\u0022}},\u0022title\u0022:\u0022Frontend\u0022,\u0022type\u0022:\u0022object\u0022},\u0022groups\u0022:{\u0022patternProperties\u0022:{\u0022^.*$\u0022:{\u0022$ref\u0022:\u0022#/definitions/group\u0022}},\u0022propertyNames\u0022:{\u0022pattern\u0022:\u0022^[\u005c\u005cw].*$\u0022},\u0022type\u0022:\u0022object\u0022},\u0022homeassistant\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Home Assistant integration (MQTT discovery)\u0022,\u0022title\u0022:\u0022Home Assistant integration\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022map_options\u0022:{\u0022properties\u0022:{\u0022graphviz\u0022:{\u0022properties\u0022:{\u0022colors\u0022:{\u0022properties\u0022:{\u0022fill\u0022:{\u0022properties\u0022:{\u0022coordinator\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022enddevice\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022router\u0022:{\u0022type\u0022:\u0022string\u0022}},\u0022type\u0022:\u0022object\u0022},\u0022font\u0022:{\u0022properties\u0022:{\u0022coordinator\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022enddevice\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022router\u0022:{\u0022type\u0022:\u0022string\u0022}},\u0022type\u0022:\u0022object\u0022},\u0022line\u0022:{\u0022properties\u0022:{\u0022active\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022inactive\u0022:{\u0022type\u0022:\u0022string\u0022}},\u0022type\u0022:\u0022object\u0022}},\u0022type\u0022:\u0022object\u0022}},\u0022type\u0022:\u0022object\u0022}},\u0022title\u0022:\u0022Networkmap\u0022,\u0022type\u0022:\u0022object\u0022},\u0022mqtt\u0022:{\u0022properties\u0022:{\u0022base_topic\u0022:{\u0022description\u0022:\u0022MQTT base topic for Zigbee2MQTT MQTT messages\u0022,\u0022examples\u0022:[\u0022zigbee2mqtt\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Base topic\u0022,\u0022type\u0022:\u0022string\u0022},\u0022ca\u0022:{\u0022description\u0022:\u0022Absolute path to SSL/TLS certificate of CA used to sign server and client certificates\u0022,\u0022examples\u0022:[\u0022/etc/ssl/mqtt-ca.crt\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Certificate authority\u0022,\u0022type\u0022:\u0022string\u0022},\u0022cert\u0022:{\u0022description\u0022:\u0022Absolute path to SSL/TLS certificate for client-authentication\u0022,\u0022examples\u0022:[\u0022/etc/ssl/mqtt-client.crt\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022SSL/TLS certificate\u0022,\u0022type\u0022:\u0022string\u0022},\u0022client_id\u0022:{\u0022description\u0022:\u0022MQTT client ID\u0022,\u0022examples\u0022:[\u0022MY_CLIENT_ID\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Client ID\u0022,\u0022type\u0022:\u0022string\u0022},\u0022force_disable_retain\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Disable retain for all send messages. ONLY enable if you MQTT broker doesn't support retained message (e.g. AWS IoT core, Azure IoT Hub, Google Cloud IoT core, IBM Watson IoT Platform). Enabling will break the Home Assistant integration\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Force disable retain\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022include_device_information\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Include device information to mqtt messages\u0022,\u0022title\u0022:\u0022Include device information\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022keepalive\u0022:{\u0022default\u0022:60,\u0022description\u0022:\u0022MQTT keepalive in second\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Keepalive\u0022,\u0022type\u0022:\u0022number\u0022},\u0022key\u0022:{\u0022description\u0022:\u0022Absolute path to SSL/TLS key for client-authentication\u0022,\u0022examples\u0022:[\u0022/etc/ssl/mqtt-client.key\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022SSL/TLS key\u0022,\u0022type\u0022:\u0022string\u0022},\u0022password\u0022:{\u0022description\u0022:\u0022MQTT server authentication password\u0022,\u0022examples\u0022:[\u0022ILOVEPELMENI\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Password\u0022,\u0022type\u0022:\u0022string\u0022},\u0022reject_unauthorized\u0022:{\u0022default\u0022:true,\u0022description\u0022:\u0022Disable self-signed SSL certificate\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Reject unauthorized\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022server\u0022:{\u0022description\u0022:\u0022MQTT server URL (use mqtts:// for SSL/TLS connection)\u0022,\u0022examples\u0022:[\u0022mqtt://localhost:1883\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022MQTT server\u0022,\u0022type\u0022:\u0022string\u0022},\u0022user\u0022:{\u0022description\u0022:\u0022MQTT server authentication user\u0022,\u0022examples\u0022:[\u0022johnnysilverhand\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022User\u0022,\u0022type\u0022:\u0022string\u0022},\u0022version\u0022:{\u0022default\u0022:4,\u0022description\u0022:\u0022MQTT protocol version\u0022,\u0022examples\u0022:[4,5],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Version\u0022,\u0022type\u0022:[\u0022number\u0022,\u0022null\u0022]}},\u0022required\u0022:[\u0022base_topic\u0022,\u0022server\u0022],\u0022title\u0022:\u0022MQTT\u0022,\u0022type\u0022:\u0022object\u0022},\u0022ota\u0022:{\u0022properties\u0022:{\u0022disable_automatic_update_check\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Zigbee devices may request a firmware update, and do so frequently, causing Zigbee2MQTT to reach out to third party servers. If you disable these device initiated checks, you can still initiate a firmware update check manually.\u0022,\u0022title\u0022:\u0022Disable automatic update check\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022update_check_interval\u0022:{\u0022default\u0022:1440,\u0022description\u0022:\u0022Your device may request a check for a new firmware update. This value determines how frequently third party servers may actually be contacted to look for firmware updates. The value is set in minutes, and the default is 1 day.\u0022,\u0022title\u0022:\u0022Update check interval\u0022,\u0022type\u0022:\u0022number\u0022}},\u0022title\u0022:\u0022OTA updates\u0022,\u0022type\u0022:\u0022object\u0022},\u0022passlist\u0022:{\u0022description\u0022:\u0022Allow only certain devices to join the network (by ieeeAddr). Note that all devices not on the passlist will be removed from the network!\u0022,\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Passlist\u0022,\u0022type\u0022:\u0022array\u0022},\u0022permit_join\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Allow new devices to join (re-applied at restart)\u0022,\u0022title\u0022:\u0022Permit join\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022serial\u0022:{\u0022properties\u0022:{\u0022adapter\u0022:{\u0022description\u0022:\u0022Adapter type, not needed unless you are experiencing problems\u0022,\u0022enum\u0022:[\u0022deconz\u0022,\u0022zstack\u0022,\u0022zigate\u0022,\u0022ezsp\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Adapter\u0022,\u0022type\u0022:[\u0022string\u0022,\u0022null\u0022]},\u0022disable_led\u0022:{\u0022default\u0022:false,\u0022description\u0022:\u0022Disable LED of the adapter if supported\u0022,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Disable led\u0022,\u0022type\u0022:\u0022boolean\u0022},\u0022port\u0022:{\u0022description\u0022:\u0022Location of the adapter. To autodetect the port, set null\u0022,\u0022examples\u0022:[\u0022/dev/ttyACM0\u0022],\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Port\u0022,\u0022type\u0022:[\u0022string\u0022,\u0022null\u0022]}},\u0022title\u0022:\u0022Serial\u0022,\u0022type\u0022:\u0022object\u0022},\u0022whitelist\u0022:{\u0022items\u0022:{\u0022type\u0022:\u0022string\u0022},\u0022readOnly\u0022:true,\u0022requiresRestart\u0022:true,\u0022title\u0022:\u0022Whitelist (deprecated, use passlist)\u0022,\u0022type\u0022:\u0022array\u0022}},\u0022required\u0022:[\u0022mqtt\u0022],\u0022type\u0022:\u0022object\u0022},\u0022coordinator\u0022:{\u0022meta\u0022:{\u0022maintrel\u0022:1,\u0022majorrel\u0022:2,\u0022minorrel\u0022:7,\u0022product\u0022:1,\u0022revision\u0022:20210120,\u0022transportrev\u0022:2},\u0022type\u0022:\u0022zStack3x0\u0022},\u0022log_level\u0022:\u0022info\u0022,\u0022network\u0022:{\u0022channel\u0022:11,\u0022extended_pan_id\u0022:\u00220xdddddddddddddddd\u0022,\u0022pan_id\u0022:58385},\u0022permit_join\u0022:false,\u0022restart_required\u0022:false,\u0022version\u0022:\u00221.18.3\u0022}","zigbee2mqtt/bridge/state":"online"}
setstate MQTT2_SERVER 2021-05-12 15:38:31 nrclients 1
setstate MQTT2_SERVER 2021-05-12 14:52:20 state Initialized


MQTT2_DEVICE (attrTemplate zigbee2mqtt_bridge)

define MQTT2_zigbee_general MQTT2_DEVICE zigbee_general
attr MQTT2_zigbee_general DbLogExclude .*
attr MQTT2_zigbee_general bridgeRegexp zigbee2mqtt/([A-Za-z0-9._]+)[/]?.*:.* "zigbee_$1"
attr MQTT2_zigbee_general comment To check for new updates of the deamon software, you might want to use a separate HTTPMOD device. See HTTPMOD template zigbee2mqtt_daemon_updates for further details.
attr MQTT2_zigbee_general devicetopic zigbee2mqtt
attr MQTT2_zigbee_general getList devicelist:noArg log $DEVICETOPIC/bridge/config/devices/get\
  networkmap_raw:noArg raw $DEVICETOPIC/bridge/networkmap raw\
  networkmap_graphviz:noArg graphviz $DEVICETOPIC/bridge/networkmap graphviz
attr MQTT2_zigbee_general icon mqtt
attr MQTT2_zigbee_general model zigbee2mqtt_bridge
attr MQTT2_zigbee_general readingList $DEVICETOPIC/bridge/state:.* state\
  $DEVICETOPIC/bridge/config/devices:.* {}\
  $DEVICETOPIC/bridge/config/log_level:.* log_level\
  $DEVICETOPIC/bridge/config/permit_join:.* permit_join\
  $DEVICETOPIC/bridge/config/rename:.* { json2nameValue($EVENT, 'rename_') }\
  $DEVICETOPIC/bridge/log:.*\"type\".\"devices\".\"message\".* devices\
  $DEVICETOPIC/bridge/log:.* log\
  $DEVICETOPIC/bridge/networkmap:.* {}\
  $DEVICETOPIC/bridge/networkmap/graphviz:.* graphviz\
  $DEVICETOPIC/bridge/networkmap/raw:.* raw\
  $DEVICETOPIC/bridge/config:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_general room MQTT2_DEVICE
attr MQTT2_zigbee_general setList log_level:debug,info,warn,error $DEVICETOPIC/bridge/config/log_level $EVTPART1\
  permit_join:true,false $DEVICETOPIC/bridge/config/permit_join $EVTPART1\
  remove:textField $DEVICETOPIC/bridge/config/remove $EVTPART1\
  ota_update:textField $DEVICETOPIC/bridge/ota_update/update $EVTPART1\
  ota_update_check:textField $DEVICETOPIC/bridge/ota_update/check $EVTPART1\
  y_device_setting:textField $DEVICETOPIC/$EVTPART1/set {"$EVTPART2": "$EVTPART3"}\
  x_bind:textField $DEVICETOPIC/bridge/bind/$EVTPART1 $EVTPART2\
  x_bind_unbind:textField $DEVICETOPIC/bridge/unbind/$EVTPART1 $EVTPART2\
  x_device_options:textField $DEVICETOPIC/bridge/config/device_options {"friendly_name":"$EVTPART1","options": {"$EVTPART2": "$EVTPART3"}}\
  x_group_add_to:textField $DEVICETOPIC/bridge/group/$EVTPART1/add $EVTPART2\
  x_group_rm_from:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove $EVTPART2\
  x_group_rm_from_all:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove_all $EVTPART2\
  x_group_add_group:textField $DEVICETOPIC/bridge/config/add_group $EVTPART1\
  x_group_rm_group:textField $DEVICETOPIC/bridge/config/remove_group $EVTPART1\
  z_elapsed:textField $DEVICETOPIC/bridge/config/elapsed $EVTPART1\
  z_last_seen:disable,ISO_8601,epoch,ISO_8601_local $DEVICETOPIC/bridge/config/last_seen $EVTPART1\
  z_ban:textField $DEVICETOPIC/bridge/config/ban $EVTPART1\
  z_rename:textField $DEVICETOPIC/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
  z_reset_CC:noArg $DEVICETOPIC/bridge/config/reset
attr MQTT2_zigbee_general setStateList on off

setstate MQTT2_zigbee_general online
setstate MQTT2_zigbee_general 2021-05-12 16:52:58 attrTemplateVersion 20201215
setstate MQTT2_zigbee_general 2021-05-12 17:42:00 log {"message":[{"dateCode":"20210120","friendly_name":"Coordinator","ieeeAddr":"0x00124b00214f3bc4","lastSeen":1620834120086,"networkAddress":0,"softwareBuildID":"zStack3x0","type":"Coordinator"},{"dateCode":"20161128","description":"Aqara door & window contact sensor","friendly_name":"xi_sensor_contact_03","hardwareVersion":2,"ieeeAddr":"0x00158d000669299c","lastSeen":1620831194167,"manufacturerID":4151,"manufacturerName":"LUMI","model":"MCCGQ11LM","modelID":"lumi.sensor_magnet.aq2","networkAddress":26209,"powerSource":"Battery","softwareBuildID":"3000-0001","type":"EndDevice","vendor":"Xiaomi"},{"description":"Aqara door & window contact sensor","friendly_name":"xi_sensor_contact_04","ieeeAddr":"0x00158d000669348a","lastSeen":1620833083573,"manufacturerID":4151,"manufacturerName":"LUMI","model":"MCCGQ11LM","modelID":"lumi.sensor_magnet.aq2","networkAddress":3822,"powerSource":"Battery","type":"EndDevice","vendor":"Xiaomi"},{"dateCode":"20190710","description":"SYMFONISK sound controller","friendly_name":"ik_remote_symfonisk_02","hardwareVersion":1,"ieeeAddr":"0x680ae2fffe1aa806","lastSeen":1620805490206,"manufacturerID":4476,"manufacturerName":"IKEA of Sweden","model":"E1744","modelID":"SYMFONISK Sound Controller","networkAddress":1941,"powerSource":"Battery","softwareBuildID":"2.1.024","type":"EndDevice","vendor":"IKEA"},{"dateCode":"20191118","description":"MiJia light intensity sensor","friendly_name":"xi_sensor_light_02","hardwareVersion":1,"ieeeAddr":"0x04cf8cdf3c7ca64e","lastSeen":1620833708690,"manufacturerID":4718,"manufacturerName":"LUMI","model":"GZCGQ01LM","modelID":"lumi.sen_ill.mgl01","networkAddress":39578,"powerSource":"Battery","softwareBuildID":"2019\u0000www.","type":"EndDevice","vendor":"Xiaomi"}],"type":"devices"}
setstate MQTT2_zigbee_general 2021-05-12 19:05:42 subscriptions zigbee2mqtt/#


Beispielhaft noch ein Sensor
MQTT2_DEVICE (attrTemplate zigbee2mqtt_Light_Intensity_Sensor)

define MQTT2_zigbee_xi_sensor_light_02 MQTT2_DEVICE zigbee_xi_sensor_light_02
attr MQTT2_zigbee_xi_sensor_light_02 DbLogExclude .*
attr MQTT2_zigbee_xi_sensor_light_02 devicetopic zigbee2mqtt/xi_sensor_light_02
attr MQTT2_zigbee_xi_sensor_light_02 model zigbee2mqtt_Light_Intensity_Sensor
attr MQTT2_zigbee_xi_sensor_light_02 readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_zigbee_xi_sensor_light_02 room MQTT2_DEVICE
attr MQTT2_zigbee_xi_sensor_light_02 stateFormat Lux: illuminance_lux Luminance: illuminance

setstate MQTT2_zigbee_xi_sensor_light_02 Lux: 10266 Luminance: 40115
setstate MQTT2_zigbee_xi_sensor_light_02 2021-05-12 16:55:06 associatedWith MQTT2_zigbee_general
setstate MQTT2_zigbee_xi_sensor_light_02 2021-05-12 16:56:10 attrTemplateVersion 20200904
setstate MQTT2_zigbee_xi_sensor_light_02 2021-05-13 08:31:36 battery 100
setstate MQTT2_zigbee_xi_sensor_light_02 2021-05-13 08:31:36 illuminance 40115
setstate MQTT2_zigbee_xi_sensor_light_02 2021-05-13 08:31:36 illuminance_lux 10266
setstate MQTT2_zigbee_xi_sensor_light_02 2021-05-13 08:31:36 linkquality 111
setstate MQTT2_zigbee_xi_sensor_light_02 2021-05-13 08:31:36 voltage 3100


Beta-User

Das "logging"-Device sieht mir nach einem "Irrläufer" beim "brücken" aus, vermutlich sollte einfach die readingList von "MQTT2_zigbee_general" angepasst werden und der Topic da reingeschrieben werden.
Wenn das (neuerdings?) per default kommt oder "log" umbenannt wurde, kann ich das gerne am "bridge"-attrTemplate anpassen, dann paßt es wieder für alle Neueinsteiger.
(ich vermute, die erfahreneren Nutzer haben das einfach so gemacht, und es hat sich daher eben noch niemand hier wegen der Korrektur gemeldet...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files