FHEM - Hausautomations-Systeme > MQTT

Läuft: zigbee2mqtt mit MQTT2_SERVER und MQTT2_DEVICE

(1/96) > >>

supernova1963:
Hallo zusammen,

gerade habe ich im Koenkk/zigbee2mqtt Gateway den fhem MQTT2_SERVER eingetragen und neugestartet.
Damit gepairt sind:

* 1 x Xiaomi Aqara human body movement and illuminance sensor (RTCGQ11LM)
* 1 x Xiaomi Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)Es hat auch sofort funktioniert. Das zigbee2mqtt gateway wurde sofort erkannt und die als MQTT2_DEVICE angelegt.
Der einzige Wermutstropfen, alle readings der verschiedenen zigbee Devices werden an dem erkannten Gateway (MQTT2_DEVICE) angelegt.


--- Code: ---Internals:
   CFGFN     
   CID        mqttjs_45746193
   DEF        mqttjs_45746193
   DEVICETOPIC MQTT2_mqttjs_45746193
   IODev      mqttserver
   LASTInputDev mqttserver
   MSGCNT     37
   NAME       MQTT2_mqttjs_45746193
   NR         21781
   STATE      online
   TYPE       MQTT2_DEVICE
   mqttserver_MSGCNT 37
   mqttserver_TIME 2018-09-23 19:04:58
   READINGS:
     2018-09-23 19:04:58   humidity        44.33
     2018-09-23 18:45:33   illuminance     259
     2018-09-23 19:04:58   linkquality     94
     2018-09-23 18:45:33   occupancy       false
     2018-09-23 19:04:58   pressure        978
     2018-09-23 18:39:55   state           online
     2018-09-23 19:04:58   temperature     27.32
Attributes:
   IODev      mqttserver
   readingList mqttjs_45746193:zigbee2mqtt/bridge/state:.* state
mqttjs_45746193:zigbee2mqtt/0x00158d000276e175:.* { json2nameValue($EVENT) }
mqttjs_45746193:zigbee2mqtt/0x00158d00023256f8:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
--- Ende Code ---

Gibt es die Möglichkeit den MQTT2_SERVER dazu zu bringen, ein Gateway zu erkennen und die angeschlossenen Devices als einzelne MQTT2_DEVICE anzulegen?

Danke,

Gernot

rudolfkoenig:
Nicht automatisch, da ich nicht weiss, an welchem Kriterium ich die Geraete unterscheiden soll.Ohne Automatik sollte es aber jetzt schon gehen.

Beta-User:
Lustig, habe heute auch etwas mit dem Thema rumexperimentiert.

Was nicht so lustig ist: es werden bei jedem Restart des zigbee2mqtt-services wieder neue Devices angelegt. An sich sollte das damit zu erledigen sein, dass man in der configuration.yaml eine "client_id" vergibt. Leider scheint das das Problem aber nicht zu erledigen.

Ist das bei dir ähnlich? Jemand eine Idee für Abhilfe?

Sonst könnte man die Devices ähnlich vereinzeln, wie ich das mit der Sidoh-Bridge schon gemacht hatte, Details um diesen Beitrag herum: https://forum.fhem.de/index.php/topic,86932.msg832336.html#msg832336

Aber wenn man da jedes Mal von vorne anfangen muß, ist das nicht so lustig. (Könnte aber auch daran liegen, dass das Modul von Neumann derzeit auch im Einsatz ist, evtl. kommt sich da was in die Quere).

supernova1963:
Ja, die neue ClientID bei Neustart des zigbee2mqtt gateway führt bei mir auch zu einer Neuanlage in mqtt2

Beta-User:
Hast du in der configuration.yaml auch was festgelegt?
Den Teil erledigt hier ein separater reaktivierter PI, der die Daten auch sauber an die erwartete Stelle (zigbee_pi) liefert:
--- Code: ---zigbee_pi:zigbee2mqtt/bridge/state:.* state
--- Ende Code ---

In der yaml steht hier unter mqtt die Angabe "client_id: 'zigbee_pi'".

Nur tauchen daneben weitere MQTT2-Devices auf mit immer wieder anderen Nummern. Bin mittlerweile aber ziemlich sicher, dass es daran liegt, dass ich keinen anderen Broker mehr am laufen habe und für die ersten Geh-Versuche noch ein 00_MQTT-Gerät (mit der externen IP des FHEM-Servers, da es über localhost nicht wollte) und zwei Leuchtmittel als Xiaomi-MQTT-Devices definiert sind. Irgendwie muß man ja rausbekommen, was da an Verkehr stattfindet.

Mehr zur eigenen Doku noch folgendes:
Das letztgenanntes Modul ist so aufgebaut, dass man ein Gerät als Bridge definieren muß, aber an dem gibt es eigentlich nicht viel mehr wie den Befehl "set <Bridge> pair 1", der im mosquitto_sub dann folgendes erzeugt:

--- Code: ---'zigbee2mqtt/bridge/config/permit_join', ... (4 bytes))
true
'xiaomi/cmnd/bridge/pair', ... (3 bytes))
220

--- Ende Code ---

Alles, was nicht direkt mit der Bridge zu tun hat, kommt über

--- Code: ---zigbee_pi:zigbee2mqtt/<bulb id>:.* { json2nameValue($EVENT) }
--- Ende Code ---
rein, für das set wird ein set angefügt:

--- Code: ---zigbee2mqtt/<bulb id>/set:.* {<json> }
--- Ende Code ---
Der set-Code unterscheidet sich kaum von dem, was die Milights benötigen, sieht z.B. so aus:

--- Code: ---{"brightness":"135"}
{"state":"ON"}

--- Ende Code ---

Dürfte also kein Hexenwerk sein, das vollends nur mit MQTT2 zu machen.

(Spannender wird ggf. der nächste Schritt, auf MQTT ganz zu verzichten, aber das ist was für 2019...)

EDIT: Im Modulcode für Xiaomi-MQTT steht zu den 'xiaomi/cmnd/bridge...'-Messages immer ein "Backwards compability" drin. Scheint also verzichtbar zu sein;

weitere Spezial-Messages:
zigbee2mqtt/bridge/config/remove", message => $hash->{SID} (SID ist wohl das, was oben mit <bulb id> bezeichnet ist)
zigbee2mqtt/bridge/config/devices", message => "" für "update devices"

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln