Modul-Diskussion/Hilfe: MQTT_GENERIC_BRIDGE

Begonnen von Master_Nick, 11 Oktober 2018, 17:23:24

Vorheriges Thema - Nächstes Thema

maclovlin

Hallo an alle,

kurze Frage, wie setzt man mit  MQTT_GENERIC_BRIDGE einen "get update" ab?

Habe in Nodered meine Homematic Heizungsthermostate integriert und es wäre schön
wenn beim Aufrufen der Seite auch gleich die aktuellen Werte geholt werden.

Jemand eine Idee?

gadget

was soll "get update" denn machen ? Lass die messages deiner geräte mit retain=1 senden (z.B. in den global defaults der MQTT_GENERIC_BRIDGE). Dann speichert der mqtt broker die letzte Nachricht und Nodered bekommt sofort nach Start den letzten Stand des topics. Falls du auch in fhem bei deinen Heizungsthermostaten keine aktuellen Werte hast, musst Du erst mal den Homematic-Teil in Ordnung bringen,  siehe z.B.
Zitathttps://forum.fhem.de/index.php/topic,40189.msg641541.html#msg641541

maclovlin

"get update" holt die aktuellen Werte von der CCU ab und weil die Werte sich ändern, feuert auch die MQTT_GENERIC_BRIDGE.

Mit Retain senden bringt garnichts, weil NodeRed die MQTT Verbindung zu Mosquitto die ganze Zeit aufrecht erhält...

gadget

#348
ich kenne Homematic jetzt nicht genau, aber ich würde erwarten dass deine homematic devices sich von selbst aktualisieren, wenn sich der Zustand ändert ?! So kenne ich das jedenfalls von MAX! und FritzDect 301. Wenn Du allerdings von Nodered was in fhem auslösen willst, kannst Du dir ja bei deinem Device ein zusätzliches stopic zum Auslösen anlegen, also z.B.

set <hmdevice> mqttSubscribe desired-temp:stopic={"$base/desired-temp/set"} statusRequest:stopic={"$base/statusRequest"}

und da dann von NodeRed aus ein Leerzeichen hinschicken oder so.

In der commandref
Zitathttp://192.168.178.39:8083/fhem/docs/commandref_DE.html#CUL_HM
finde ich zu HomeMatic übrigens kein "get update" ? Ich nehme an Du meinst "status request" ?

Edit: Das solltest Du IMHO auch nicht allzu oft machen bei batteriebetriebenen Geräten ....

maclovlin

Zitat von: gadget am 13 September 2020, 13:16:56

In der commandref finde ich zu HomeMatic übrigens kein "get update" ? Ich nehme an Du meinst "status request" ?

Hab ein Screenshot angehängt, es handelt sich um ein HMCCUDEV.

gadget

#350
ein "get" is IMHO bei der MQTT_GENERIC_BRIDGE nicht implementiert. Du könntest rumtricksen z.B. mit einem MQTT_DEVICE, das auf einem topic Befehle empfängt und die dann über ein notify ausführt. Also so was ähnliches wie in
Zitathttps://www.loxwiki.eu/pages/viewpage.action?pageId=70353530
Ich würde das aber auf zumindest auf "get" einschränken, also im notify my $cmnd = "get ".$1; und dann auf das topic von Nodered aus das get-Kommando senden (ohne get davor).
Oder du machst Dir bei denen HM-Geräten ein userreading, mappst das mit einem mqtt Subscribe ("topic" statt "stopic") und reagierst mit einem Notify oder DOIF auf Updates  dieses Readings und die Reaktion kann ja auch ein get .... sein.


maclovlin

Sehr gut, Danke :-)

Hab nen Dummy erstellt, dessen Notify das "get update" an der CCU auslöst. Klappt!

Christoph Morrison

Hallo hexenmeister,

schau mal bitte in https://forum.fhem.de/index.php/topic,118586.msg1131337.html#msg1131337 - ich versuche rauszufinden, warum in einer Kombination aus DOIF, MQTT_Generic_Bridge und eocr/event-min-interval kein Publish stattfindet.

Danke dir.

Master_Nick

#353
Moin :-)

Ich weiß hier ist nicht mehr viel lost, da eigentlich wohl eine andere Bridge das abgelöst hat.
ich nutze die hier weiter produktiv und wunderte mich über folgende Entdeckung:

mqttPublish
state:topic={"$base/$name"} state:qos=1 state:retain=1


Das genutzt um einen state (on/off) zu publishen und irgendwie wird das retain aber nicht umgesetzt - so sieht es zumindest für mich aus.

Client mqtt_pub received PUBLISH (d0, q1, r0, m18, 'homeland/haushalt/energy/saving/state', ... (5 bytes))
Client mqtt_pub sending PUBACK (m18, rc0)
homeland/haushalt/energy/saving/state false


Was mache ich falsch?

Settings für die Bridge im Device sind:
mqttDefaults base={"homeland/haushalt/energy/saving"}
mqttForward all
mqttPublish state:topic={"$base/$name"} state:qos=1 state:retain=1
mqttSubscribe state:stopic={"$base/state/set"}


PS: Ich scheine das gleiche Problem aber auch bei normalen MQTT Devices zu haben - auch da kein retain O_o Am Mosquitto liegt es net aus Node-Red kommt mit Retain.

Habt dank :-)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Ralli

Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

Beta-User

Kann es sein, dass das limit des mosquitto-Servers überschritten ist: https://stackoverflow.com/questions/67344858/mqtt-mosquitto-broker-does-not-sent-all-retained-messages (1020 per default, wenn ich das richtig interpretiert habe).

MQTT_GENERIC_BRIDGE ist mAn. auch weiter aktuell, es wurde nur daran gearbeitet, dass man es auch (besser) mit MQTT2_(CLIENT|SERVER) nutzen kann.
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

Master_Nick

#356
Also ich nutze ja gar keinen  MQTT2 daher sollte mich das gar nicht touchieren oder? @Ralli

Mh Limits würde das Log mir ja aufweisen - wäre so meine Denkweise. @Beta-User

Ich schaue mal, ob ich was finde. Hatte aber auch die DB vom mosquitto nun gekillt - somit sollte da nix großes drin sein und dennoch geht es nicht.

Mein Mosquitto ist in FHEM mittels Modul 00_MQTT.pm eingebunden.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Beta-User

Zitat von: Master_Nick am 18 Januar 2023, 14:03:08
Mh Limits würde das Log mir ja aufweisen - wäre so meine Denkweise. @Beta-User
Welches Log? Möglicherweise das mosquitto-log, aber sicher wäre ich mir da nicht, dass man da viel findet...

Vielleicht mal schauen, was 00_MQTT so versendet (verbose 5 müßte u.a. auch die gesendeten Messages aufzeichnen)?
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

Master_Nick

Zitat von: Beta-User am 18 Januar 2023, 14:14:42
Welches Log? Möglicherweise das mosquitto-log, aber sicher wäre ich mir da nicht, dass man da viel findet...

Vielleicht mal schauen, was 00_MQTT so versendet (verbose 5 müßte u.a. auch die gesendeten Messages aufzeichnen)?

Sehr guter Ansatz - und siehe da....
2023.01.18 14:17:22 5 : MQTT_GENERIC_BRIDGE:DEBUG:> [mqttGeneric] publish: homeland/haushalt/energy/saving/state => false (qos: 2, retain: 1

Damn ... es ist nicht innerhalb FHEM - dann geh ich mal forschen.

Danke!
Bin ich denn richtig gewickelt - das r0 bei mosquitto clients ist retain 0 oder?
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Beta-User

 :)
Viel Spaß beim suchen...

Zitat von: Master_Nick am 18 Januar 2023, 14:18:11
Bin ich denn richtig gewickelt - das r0 bei mosquitto clients ist retain 0 oder?
Ich denke schon, müßte aber auch in der Doku schauen. Was "aktuell" da ist, müßte man z.B. mit mosquitto_sub rausfinden. Das in eine Datei pipen, und Zeilen zählen ;) ?

Allgemeiner Hinweis: nach diversen Diskussionen u.a. mit Rudi zu den QoS und retain-Themen bin ich zwischenzeitlich eher skeptisch, was den großflächigen Einsatz dieser Optionen angeht. Manche Geräte sind in der Richtung auch eher weniger vorsichtig, so dass man uU. - je nach Umfeld - relativ schnell eine Menge Topics zusammenbringt, auf die "irgendjemand" per retain sendet.
War einer der Gründe, warum zwischenzeitlich (6.2) auch M2S die retain-Messages im default nicht für einen Neustart abspeichert...
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