NEWS
MQTT Broker/Client Adapter sendet nicht alle Variablen
-
@mickym sagte in MQTT Broker/Client Adapter sendet nicht alle Variablen:
eshalb die Befehle im MQTT veröffentlichen und iobroker subscribed die, damit Du im iobroker auf die Befehle , die Du aus Openhab schickst reagieren kannst.
Vermutlich stehe ich auf dem Schlauch. Das macht aus meiner Sicht so keinen Sinn. Bleiben wir mal bei der Verbindung iobroker<->MQTT:
iobroker mit dem MQTT Client veröffentlich Variablen vom Typ read/write auf dem Mosquitto Broker, die, wie auch immer von Openhab bearbeitet werden können. Wenn jetzt der MQTT Client auf dem iobroker die Variablen vom Typ write nicht published, da kein Wert darin enthalten ist, kann auf dem Broker durch Openhab auch nichts beschrieben werden...
Du sagst jetzt, dass Openhab die Befehle veröffentlichen soll. Wie soll das gehen? Die sind Openhab mangels Adapter völlig unbekannt...
Ich möchte mit iobroker auch auf nichts reagieren.. Wie gesagt, soll iobroker lediglich die Verbindung zu Viessmann zur Verfügung stellen...Die Verbindung MQTT<->Openhab steht aktuell noch nicht. Ich nutze zum Testen noch den MQTT Explorer. Das tut aber aktuell noch nichts zur Sache. Wenn ich in iobroker eine write Variable befülle, wird mir diese sofort auf dem Broker zur Verfügung gestellt und ich kann mit dem Explorer diese beschreiben. So funktioniert der Test Aufbau perfekt. Einzig und allein scheitert es em veröffentlichen der Variablen wenn es (noch) keinen Wert gib. Daran kann ich aber nichts ändern, da der Viessmann Adapter bzw. die Verbindung zur Heizung nun mal so arbeitet. Die Heizung stellt diese variablen nicht zur Verfügung... Ich kann es somit nur im MQTT Adapter ändern.
Was mich bestätigt ist der Fakt, dass es den MQTT Client Adapter nicht stört. Wenn ich die leere Variable vom Typ write auf Typ read umstelle, wird diese ebenfalls übertragen...
Wie ich es drehe und wende, ich sehe das Problem beim Adapter und nicht bei meinem Verständnis, lasse mich aber gerne vom Gegenteil überzeugen...@passuff Im Prinzip gibt es weder Read noch Write Variablen.
MQTT arbeitet mit Zuständen/States und sonst gar nichts. Jeder mqtt-Client kann einen state veröffentlichen (schreiben) oder einen state abbonnieren (lesen).
Ich verstehe zwar was Du willst - nämlich die set Struktur Deines viessmann Adapters im mqtt zum Schreiben für Openhab zur Verfügung zu stellen - aber so funktioniert mqtt NICHT.
Vergiss Deine Read und Write Variablen. Du schreibst oder liest, aber mqtt stellt keine Variablen zur Verfügung. Wenn Du etwas publishst, dann macht der mqtt Broker nichts weiter, als diese Werte an die Clients zu schicken, die dieses Thema abonniert haben. Der Broker stellt aber KEINE Variablen zur Verfügung. Ein Broker wird auch nichts zur Verfügung stellen wo es keinen Wert gibt. MQTT stellt keine Variablen oder Datenpunkte zur Verfügung. Jeder mqtt Client schreibt oder liest Werte sonst nichts.
Ich kanns Dir nicht anders erklären, vielleicht kann das jemand anders besser als ich. MQTT ist ein nachrichtenbasierendes Protokoll zum Austausch von Informationen zwischen Maschinen und keine Datenbank im herkömmlichen Sinne. Deswegen haben in der Regel auch keine Werte da drin Bestand - es sei denn man speichert sie mit dem Retain Flag.
Vielleicht erklärt es Steve besser (wenn auch in Englisch): http://www.steves-internet-guide.com/mqtt-basics-course/
Wie gesagt Du kannst Dein Ziel ja erreichen, aber eben so, wie ich es beschrieben habe und nicht mit Deiner Vorstellung von Variablen mit Read und Write. Aber wie schon gesagt, gibt hier einige Fachleute, wenn die es besser wissen, lasse ich mich auch gerne belehren.
Ansonsten kann ich Dir nur noch sagen, wie Du es halt konkret machen könntest, ansonsten bin ich hier dann aber raus.