Zigbee mit deCONZ zu MQTT

Begonnen von Murph, 04 Januar 2019, 08:47:48

Vorheriges Thema - Nächstes Thema

Murph

Hallo zusammen, hab da mal die eine oder andere Verständnissfrage.

Wie im Betreff geschrieben möchte ich meine Tradfri Lampen welche über das deCONZ Modul in FHEM eingebunden sind gerne über MQTT Befehle mit Node-Red schalten/dimmen.

Wenn ich das richtig verstanden habe funktioniert ja zigbee2mqtt nur mit einem CC2531 Stick oder?
Also war mein Ansatz über das Modul  MQTT_GENERIC_BRIDGE.
Funktioniert auch soweit, d.h. das ich die Schaltzustände mit "mqttPublish" in MQTT.fx sehen kann.

Wenn ich versuche dies mit "mqttSubscribe" zu lösen werden fortlaufend die Zustände übertragen.

Wie bekomme ich es hin das ich den die Schaltbefehle zu meinem Broker schicken kann?

Murph


Beta-User

Deine Infos sind m.E. nur rudimentär...

Was für einen IO-Typ nutzt du für die Bridge? (MQTT2 (-Server o. -Client) oder MQTT)

Um von außen Befehle zu erhalten, muß man stopic nutzen, allerdings will das bei mir grade auch nicht (siehe dazu und den Details zum setup meinen Beitrag hier).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Murph

Danke,

als IODev nutze ich Mosquitto der auf dem RasPI zusammen mit Fhem läuft.
Das mir stopic hab ich auch schon probiert, irgendwie beruhigend wenn's nicht nur bei mir nicht funktioniert.  ::)

Ich hab aber eher den Verdacht das das Hauptproblem bei mir vorm Bildschirm sitzt...  :-[

Beta-User

Du nutzt also MQTT (00_MQTT.pm) als IODev-Modul (es gibt auch MQTT2_CLIENT, das kann auch mit mosquitto, wie bereits angedeutet ;) ).

Damit sollte es eigentlich funktionieren, wenn ich hexenmeister und Rudi im anderen Thread richtig verstanden habe. Das Problem scheint also ein anderes zu sein und du solltest  lists liefern. (Wie: siehe angepinnte Posts im Anfängerbereich). Sonst kann dir vermutlich keiner weiterhelfen, ich bin jedenfalls mangels MQTT/mosquitto raus...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hexenmeister

Klingt nach einer Endlosschleife zw. Sender und Empfänger. Aber ohne Lists (und mangels Glaskugel)...

Murph

#6
Danke euch, werde heute Nachmittag wenn ich zu Hause bin mal schauen wegen lists und so....

Sodele,hier das Listing für das Device:
defmod deCONZ_HUEDevice2 HUEDevice 2  IODev=deCONZ
attr deCONZ_HUEDevice2 DbLogExclude .*
attr deCONZ_HUEDevice2 IODev deCONZ
attr deCONZ_HUEDevice2 alias Stehlampe
attr deCONZ_HUEDevice2 color-icons 2
attr deCONZ_HUEDevice2 devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr deCONZ_HUEDevice2 model TRADFRI bulb E27 W opal 1000lm
attr deCONZ_HUEDevice2 mqttForward all
attr deCONZ_HUEDevice2 mqttPublish onoff|pct:topic={"Haus/Wohnzimmer/$name"}
attr deCONZ_HUEDevice2 mqttSubscribe onoff|pct:stopic={"Haus/Wohnzimmer/$set"}
attr deCONZ_HUEDevice2 room HUEDevice,Wohnzimmer
attr deCONZ_HUEDevice2 subType dimmer
attr deCONZ_HUEDevice2 webCmd pct:on:off

Für die Bridge:
defmod mqttGeneric MQTT_GENERIC_BRIDGE
attr mqttGeneric DbLogExclude .*
attr mqttGeneric IODev Mosquitto

setstate mqttGeneric 2019-01-05 16:48:34 device-count 1
setstate mqttGeneric 2019-01-05 16:47:54 incoming-count 54845
setstate mqttGeneric 2019-01-07 16:24:42 outgoing-count 2937
setstate mqttGeneric 2019-01-07 16:24:42 transmission-state outgoing publish sent
setstate mqttGeneric 2019-01-03 18:15:56 updated-reading-count 2860
setstate mqttGeneric 2019-01-04 16:58:10 updated-set-count 5

Und noch für meinen Broker:
defmod Mosquitto MQTT 192.168.178.41:1883
attr Mosquitto DbLogExclude .*
attr Mosquitto mqttForward all

setstate Mosquitto opened
setstate Mosquitto 2019-01-07 17:14:31 connection active
setstate Mosquitto 2019-01-04 16:59:48 state opened


Es kommt einfach keine Nachricht beim Broker an obwohl die Bridge sagt "*** outgoing puplish sent".
Hab auch schon andere Hierachien ausprobiert.
Wie gesagt mit dem puplish Attribut funktioniert es.

Ich werde es mal mit MQTT2_CLIENT versuchen!

Murph

#7
Hab gerade noch entdeckt:
deCONZ_HUEDevice2
  publish:
    onoff            => Haus/Wohnzimmer/onoff (mode: R; qos: 0)
    pct              => Haus/Wohnzimmer/pct (mode: R; qos: 0)
  subscribe:
    onoff            <= --- (mode: S)
    pct              <= --- (mode: S)


Was bedeutet denn das "mode: S"?

Edit sagt:
Ah eben...R = receive und S = send, kann das sein?

hexenmeister

Immer mit dem Listing anfangen ;)

Mode S in devlist kommt von 'stopic', bedeutet 'set'-Befehl anstatt 'setreading'. Die drei Striche zeigen an, dass Topic nicht bestimmt werden kann. Kommt davon, dass es keine $set-Variable bekannt ist. Muss natürlich ohne $-Zeichen sein. Korrigiere das, dann sieht devinfo so aus:
deCONZ_HUEDevice2
  publish:
    onoff            => Haus/Wohnzimmer/onoff (mode: R; qos: 0)
    pct              => Haus/Wohnzimmer/pct (mode: R; qos: 0)
  subscribe:
    onoff            <= Haus/Wohnzimmer/set (mode: S)
    pct              <= Haus/Wohnzimmer/set (mode: S)


Im Commandref steht mehr zu Variablen und welche es gibt.

Murph

Aha, dankeschön für die Info!  :-* ;)

Tja mit den Variablen...
das ist so ein Thema, hab vom programmieren mal so gar keine Ahnung.  :-[

Aber ich versuch es trotzdem zu verstehen!

Murph

Hab ich gemacht, passt.  ;D


Schalten geht aber immer noch nicht, testweise mit MQTT.fx probiert.

hexenmeister

Muss an deinem Device/Konfig liegen.
Mangels kompatibler Hardware teste ich mit einem Dummy. Funktioniert in beide Richtungen wie es soll.

publish auf mqtt.fx auf Haus/Wohnzimmer/set kommt als zwei set-Befehle (set <gerätname> pct <wert> und set <gerätname> onoff <wert>) an. Macht das eigentlich überhaupt Sinn, zwei set-Befehle nacheinander abzusetzen?

Dummy-Definition:
defmod deCONZ_HUEDevice2 dummy
attr deCONZ_HUEDevice2 alias Stehlampe
attr deCONZ_HUEDevice2 mqttForward all
attr deCONZ_HUEDevice2 mqttPublish onoff|pct:topic={"Haus/Wohnzimmer/$name"}
attr deCONZ_HUEDevice2 mqttSubscribe onoff|pct:stopic={"Haus/Wohnzimmer/set"}
attr deCONZ_HUEDevice2 readingList onoff pct
attr deCONZ_HUEDevice2 room TEST_Reported
attr deCONZ_HUEDevice2 setList onoff pct
attr deCONZ_HUEDevice2 webCmd pct:on:off

Murph

Denke schon, wäre einemal ein/aus  ::) und mit pct wird die Helligkeit/Dimmer angegeben.
Hab so ziemlich wie Du die Attribute gesetzt ( was passiert eigentlich bei dem Attribut "setlist"?) und nichts passiert.
Bzw. die puplish Nachricht wird beim schalten aus FHEM heraus schön abgesetzt, kann aber anders herum nicht schalten oder dimmen. Hatte auch schon das subscribe nur mit
attr deCONZ_HUEDevice2 mqttSubscribe onoff:stopic={"Haus/Wohnzimmer/set"}
oder mit
attr deCONZ_HUEDevice2 mqttSubscribe onoff:stopic={"Haus/Wohnzimmer/state"}
versucht. Leider auch ohne Erfolg.  :(

Beta-User

Hmmm,
da du sowieso einen Dummy hast und die Sendebefehle nicht an ein sowieso bestehendes Device anhängen willst:

Warum nicht MQTT2_CLIENT als IO nutzen und das ganze als MQTT2_DEVICE anlegen? Dürfte hier im Ergebnis einfacher sein...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Murph