NEWS
MQTT Topic/Payload Dokumentation
-
@homoran Ja, ich kann auch den MQTT-Client Adapter nehmen. Und ich kann ja mit
mosquitto_pub -h 127.0.0.1 -t test/lampe/1/off -m "Lampe ist aus"
etwas an meinen Broker schicken. Was macht der MQTT-Client Adapter denn damit?
-
@joe_d sagte in MQTT Topic/Payload Dokumentation:
Was macht der MQTT-Client Adapter denn damit?
er nimmt es an, legt einen Datenpunkt an und schreibt den Wert da hinein
Ist aber schon einige Jahre her, dass ich damit gearbeitet hatte
-
@joe_d Der mqtt Adapter macht nichts weiter damit. Nur den Wert in den Datenpunkt schreiben. Bei mir werden die Heizungsdaten übermittelt. Die zeige ich dann in der Vis mit widgets und einer Grafik an.
Anderes Beispiel,, übermitteln der Stromdaten der Waschmaschine, und Bestimmung wann die Maschine fertig ist. Dies wird mit einenJavascript erledigt -
@gargano sagte in MQTT Topic/Payload Dokumentation:
@joe_d Der mqtt Adapter macht nichts weiter damit. Nur den Wert in den Datenpunkt schreiben. Bei mir werden die Heizungsdaten übermittelt. Die zeige ich dann in der Vis mit widgets und einer Grafik an.
Ok, ist mir nun auch gelungen:
Nur fehlt mir jetzt echt irgendwie ein Leitfaden.
Wie kann ich eine schaltbare Lampe (am Besten automatisch) mit MQTT hinzufügen?
-
@joe_d mit einem kleinem Script, der auf den Event triggert, also in JS ein on -Event. In dem Event dann setstate(dpname,wert) die Lampe schalten.
Du kannst es auch über Blockly machen, da kenn ich mich aber nicht aus. Ich bevorzuge JS, da weiß ich was der macht
Ansonsten gibt es noch den Szenen Adapter -
@gargano Verstehe ich leider nicht wirklich. Gibt es irgendwo ein Beispiel für sowas? Also eine Lampe die dem MQTT-Broker ihren aktuellen Zustand meldet (und wie der zugehörige Payload aussehen muss/sollte) und in iobroker ein Lampenicon auf das man draufdrückt und das dann je nach Zustand dem MQTT-Broker "was" schickt.
Oder gibt es für solche Dinge keinen "Standard", d.h. muss man dies alles selbst progammieren? -
@joe_d muss man alles selber machen. Aber schau Dir mal den Szenen Adapter an
-
Hallo Jochen,
es gibt noch keine offizielle Dokumentation, in der Form wie du es gebrauchen könntest.
Derzeit arbeite ich an einer allgemeinen Dokumentation zu MQTT.
Hier kannst du dir mal ein Vorab ansehen, ist noch nicht ganz fertig.@joe_d sagte in MQTT Topic/Payload Dokumentation:
Kann der Adapter auf unterschiedliche Payloads oder Topics konfiguriert werden
Ich gehe mal davon aus, das du den Adapter "MQTT Broker/Client" meinst, welcher in der Instanz als Client konfiguriert wird. Die Verbindung zu mosquitto hast du ja schon funktionabel hergestellt.
Innerhalb der Instanz hast du die Möglichkeit die gewünschten Topics anzugeben.
So kannst du mehrere Instanzen anlegen, welche auf unterschiedliche Topics hören.
Gruß, Karsten
-
@hydrotec Danke für die Infos.
Bislang schicke ich einfach irgendwelche Sachen an irgendwelche Topics, die werden "leider" nur als Zustandstyp Zeichenkette, Rolle variable angelegt:
Cool fände ich nun, wenn die rot umrandeten Felder per MQTT besetzt werden könnten:
Zum Beispiel über ein spezielles Topic, /iobroker/mqttconfig mit Inhalt:
{ "common": { "name": "/devices/wb-adc/controls/lala1", "write": false, "read": true, "role": "switch", "type": "boolean" } }
Das dann eben angelegt oder geändert wird sofern es das nicht gibt oder andere Werte enthält...
-
Denke nicht das es vorgesehen ist, da etwas zu ändern.
Generell funktionieren die Objekte ja so wie sie angelegt sind.
Aber du kannst gerne auf GitHub nachfragen.
https://github.com/ioBroker/ioBroker.mqttNur für mich, aus Interesse, was möchtest du durch diese Änderung erreichen?
-
@joe_d Das macht keinen Sinn. mqtt kennt im Prinzip keine Datentypen und die Daten werden so weiter transportiert, wie sie reingekommen sind. Deswegen wird immer alles als String und Buffer interpretiert. Als Transport bieten sich JSON Strings an - damit kann ich dann im JS, Blockly oder Node Red wieder originale Datentypen draus machen.
-
@hydrotec Im Endeffekt wäre sowas wie https://www.home-assistant.io/docs/mqtt/discovery ganz hübsch:
@mickym Es geht mir ja auch nicht um MQTT selbst, das ist ja nur das Transportmedium, sondern um iobroker. iobroker hat doch unterschiedliche roles/types/write und read-Eigenschaften (die ich bislang noch nicht so ganz verstehe). Warum und wozu kann ich die manuell anpassen?
Wenn es keinen Sinn macht, dann müsste es doch eigentlich ausreichen alles über "variable String" zu erledigen und es bräuchte gar keine unterschiedlichen roles und types?
-
@joe_d Du sollst da drin auch nichts anpassen. In der Regel sind diese Felder nur dazu da, um Datenpunkte unter 0_userdata entsprechend zu konfigurieren. Alles andere sollten in der Regel die Adapter machen. Und der mqtt-Adapter interpretiert nun mal keine Datentypen (und sollte das meiner Meinung nach auch nicht).
-
@mickym Das iobroker Konzept verstehe ich noch nicht so ganz. Warum gibt es unterschiedliche roles und types? Wo werden die verwendet? In Jarvis konnte ich so einen mqtt-Datenpunkt auf ein Widget legen, musste es aber von Hand konfigurieren. Bislang konnte ich noch nicht rausfinden wie ein Datenpunkt beschaffen sein muss um automatisch z.B. als Schalter oder Licht dargestellt zu werden....
-
@joe_d Da gibt es sicher kompetentere Ansprechpartner als mich. In der Regel ist für einen Benutzer vorgesehen, Räume oder Funktionen über die Aufzählungen den Objekten zuzuordnen bzw. umgekehrt den Aufzählungen die Objekte zu zuordnen.
Diese Objekt Eigenschaften sind in der Regel (ausser userdata oder zur Fehlerbehebung) zum Beschreiben durch den Adapter gedacht.
Ich denke @Homoran, @paul53 oder @apollon77 können Dir das genauer erklären bzw. auf eine aktuelle Dokumentation hinweisen.
Ich gebe hier nur wieder, wie ich das System jetzt aus der Praxis verstanden habe. Bin aber auch kein Adapterentwickler. -
Also "roles" werden von Visualisierungs-UIs genutzt (bzw KÖNNEN!) um automatisiert richtige Widgets anzuzeigen ohne das dies durch den User konfiguriert wird. Material macht dies zB so. Andere Visus nutzen es nicht oder nutzen es nur teilweise. Genauso der "Type" kann in Verbidnung genutzt werden um zB eine Checkbox bei Boolean zu nutzen oder (in verbindung mit "states") eine Selection mit relevanten Werten oder ein Zahlenfeld mit hoch/runter-Buttons für Zahlen.
Die "Functions" (aka Funktionen) und "Rooms" (Räume) sind ein von Homematic übernommenes Konzept was eine Zweistufige Strukturierung der Geräte erlaubt. Visus, wie Material o.ä., nutzen diese um auch hier automatisiert Strukturen anzuzeigen.
-
@joe_d sagte in MQTT Topic/Payload Dokumentation:
Im Endeffekt wäre sowas wie https://www.home-assistant.io/docs/mqtt/discovery ganz hübsch:
HomeAssistant setzt einen externen Broker voraus, bei ioBroker kannst du auch einen integrierten Broker verwenden.
Wie du selber schon erfahren hast, geht jede Automatisationssoftware anders mit diesem Thema um.
Ich kann dir nur empfehlen, solltest du bei ioBroker bleiben, wovon ich ausgehe, dann vergiss ganz schnell wie andere Automationslösungen das umgesetzt haben. Am Anfang hatte ich auch meine Probleme, das rührte daher, das bei ioBroker nicht mehr so kompliziert gedacht werden muss. Kenne das auch, nächtelang irgendwelche Regex zusammenbasteln, nur um ganz einfache Dinge zu realisieren. Seit ioBroker ist das vorbei, zum Glück@joe_d sagte in MQTT Topic/Payload Dokumentation:
... iobroker hat doch unterschiedliche roles/types/write und read-Eigenschaften (die ich bislang noch nicht so ganz verstehe). Warum und wozu kann ich die manuell anpassen?
Bitte nicht falsch verstehen, warum möchtest du das anpassen, gibt es einen bestimmten Grund dafür?
Wenn der gesendete Payload in dem richtigen Objekt unter Wert drinn steht, kannst du doch damit arbeiten.
Auch wenn @mickym und @apollon77 schon die Antworten dazu geliefert haben, wenn du es genau wissen willst.
https://www.iobroker.net/#de/documentation/dev/stateroles.md
Eigentlich ist das für den Benutzer uninteressant, für uns kommen eher die "Aufzählungen" in Frage, wenn du die nutzen möchtest.