NEWS
Datenpunkt 2 MQTT
-
@mickym
Danke. native.topic hat keine Bedeutung? -
@paul53 sagte in Datenpunkt 2 MQTT:
@mickym
Danke. native.topic hat keine Bedeutung?Native.topic enthält den mqtt - Namen - ob der innerhalb des Adapters verwendet wird, weiß ich nicht (scheint aber so, falls der fehlt, setzt der mqtt Adapter den native.topic als reguläres mqtt- topic siehe unten) :
Also im Prinzip der Name mit dem ein mqtt-Client subscribed, wenn der MQTT-Adapter als Broker betrieben wird oder auch als Name unter dem gepublished wird, wenn der MQTT-Adapter published.
Ich habe allerdings keine Einschränkungen gemerkt, wenn ich gepublished habe nur durch Anlage des Datenpunktes. Da stehen diese mqtt Namen ja nicht drin. Fehlt das native.topic ergänzt es der Adapter selbst beim Beschreiben des Datenpunktes
Wenn der Adapter allerdings ein neues topic empfängt, dann füllt er native.topic:
{ "common": { "name": "test/temperatur", "write": true, "read": true, "role": "variable", "desc": "mqtt client variable", "type": "number" }, "native": { "topic": "test/temperatur" }, "type": "state", "from": "system.adapter.mqtt.1", "user": "system.user.admin", "ts": 1637951211626, "_id": "mqtt.1.test.temperatur", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Was positiv ist, dass entweder der mqtt-Adapter oder der admin5 den Typ des Datenpunktes analysiert und korrekt setzt, denn der ist ja nie Bestandteil der mqtt-Nachricht!
Ich habe es gerade getestet:
- Wenn man einen Datenpunkt manuell anlegt - dann ist native.topic ja nicht gesetzt. Sobald man dann aber einen Wert in den Datenpunkt reinschreibt und der mqtt-Adapter published - setzt der Adapter native.topic selbst im Nachhinein:
{ "common": { "name": "innentemperatur", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0 }, "type": "state", "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1637951551240, "_id": "mqtt.1.test.innentemperatur", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "native": { "topic": "test/innentemperatur" } }
native.topic wurde bei einem selbst erstellten Datenpunkt mit dem ersten Beschreiben des Datenpunktes mit dem publishen selbst gesetzt - ich betreibe den ADapter als Client - hoffe mal er macht das als Server ebenso.
Also intern kann ich mir vorstellen, dass native.topic vom Adapter verwendet wird um das mqtt Topic zu publishen.
Ich kann nur hoffen, dass einfach bestimmte Namensräume aus diesem Admin5 Regelkonzept ausgenommen werden und dazu gehört für mich userdata und mqtt.
-
@mickym
Moin...
Ich hab das jetzt so gemacht wie Du geschrieben hast und...
ES LÄUFT...
Vielen Dank und das du/ihr soviel Geduld mit mir habt.
Mir war von Anfang an nicht klar wie der Temperaturwert von userdata0 nach mqtt0 geschrieben wird aber das geht wohl nur über das Blockly...muß ich aber erst noch ausprobieren ob ich das schaffe.
Gibt es irgendwo sowas wie nen iobroker Grundkurs für dummies damit ich nicht jede Kleinigkeit nachfragen muß?
Schönes WE wünsch ich euch! -
Freut mich, dass es funktioniert.
@warlord sagte in Datenpunkt 2 MQTT:
Mir war von Anfang an nicht klar wie der Temperaturwert von userdata0 nach mqtt0 geschrieben wird aber das geht wohl nur über das Blockly...muß ich aber erst noch ausprobieren ob ich das schaffe.
Gibt es irgendwo sowas wie nen iobroker Grundkurs für dummies damit ich nicht jede Kleinigkeit nachfragen muß?Du musst es nicht über Blocklies machen. Nein das kannst Du mit jeder Logikmaschine machen. Du musst es ja auch nicht unter userdata den DP anlegen und kannst ihn direkt in den mqtt Bereich schreiben. Du kannst auch über den mqtt-Adapter selbst andere Bereiche des iobrokers publishen - wobei ich Dir seit dem Admin5 davon eher abraten würde.
Ansonsten eine Dokumentation gibt es hier: https://www.iobroker.net/#de/documentation/basics/adapter.md
Hier gibts ein paar Videos zum schauen: https://haus-automatisierung.com/iobroker-tutorial-reihe/
Im Grunde genommen ist der iobroker eine plattformübergreifendes Tool mit dem man verschiedene Systeme mit einandere sprechen lassen kann und logisch verbinden kann und somit das ganze smart - sprich mehr oder weniger intelligent macht.
Das Prinzip ist immer das Gleiche:
Du hast Sensoren oder Zeit als Trigger und damit schaltest Du oder änderst was.
Dazwischen verknüpfst Du zusätzliche Sensoren, Werte und stellst Bedingungen. Das machst Du mit Deiner Logikmaschine.
Der Javascript-Adapter bietet Dir dafür die Szenen, Blockly oder Javascript. Ich bevorzuge Node Red aus verschiedenen Gründen. Bevor Du Dich also weiter in den iobroker vertiefst, würde ich mir die Logikmaschinen genau anschauen und dann entscheiden mit was Du die zukünftig umsetzen willst. Die meisten nutzen zwar Blockly, aber andere wollen lieber in einer normalen Programmiersprache schreiben und nutzen deshalb lieber Javascript. Der Szeneadapter ist vielleicht am Einfachsten dafür bist Du aber wahrscheinlich eher eingeschränkt.
Mit Blockly, Javascript oder NodeRed hast Du alle Möglichkeiten und sind auch gleich mächtig. Alle Tools basieren auf Javascript - deswegen gibt es da keine Unterschiede. Mit NodeRed wird Deine Logik grafisch halt am Besten dargestellt, Du hast desweiteren den Vorteil auch Nodes benutzen zu können für die der iobroker keinen Adapter anbietet (als Anbindung an Hardware) und NodeRed nimmt Dir unter Umständen einiges an Programmierarbeit ab, weil viele Nodes von einer Community entwickelt werden, die man als Bausteine einfach einbinden kann. Die Integration in den iobroker ist Klasse, es gibt einen eigenen Adapter mit dem Du wie aus Blocklies Datenpunkte im iobroker beschreiben oder lesen kannst.
Wie gesagt die meisten hier nutzen Blocklies und können Dir damit vielleicht besser helfen. Ich würde mich trotzdem mit den 4 Möglichkeiten von Szenen, Blockly, Javascript und NodeRed selbst ein Bild machen, bevor Du Dich für eines entscheidest.
Im Prinzip kann man aber auch über die iobroker Datenpunkte auch verschiedene Logikmaschinen verwenden. Sprich Du beschreibst mit Blockly einen Datenpunkt und triggerst damit ein JavaScript oder einen NodeRed Flow oder umgekehrt. Also es ist keine Einbahnstraße und man muss sich nicht festlegen. Eine große Stärke des iobrokers ist ja die Flexibilität - auch wenn man versucht diese wohl wieder einzuschränken - da man anscheinend mit dem admin5 Adapter momentan versucht eine bestimmte Struktur zu erzwingen, was es wohl in Zukunft schwieriger macht - Protokolle wie mqtt etc. direkt zu nutzen, da dann alles nur noch über Adapter laufen soll, die sich an strikte Vorgaben des Aufbaus ihrer states und Objekte halten müssen.Lies einfach und schau Dir die Problemstellungen hier im Forum an und wie die gelöst wurden - das hilft am meisten.
Im Übrigen ist es nicht schlimm bei Kleinigkeiten nachzufragen - hier gibt es genügend hilfsbereite Leute, die auch gerne helfen. Da braucht man keine Skrupel haben und lieber einmal zu viel als zu wenig gefragt.
-
@mickym
....danke dir für deine ausführliche Antwort.
Es ist schon gut zu wissen dass man immer nachfragen kann aber ich möchte ja iobroker nicht nur auf Zuruf machen sondern Aufgabenstellungen selber lösen ohne alle 5min ins Forum zu schreiben.
Nachdem ich ja bei 0 anfange weiß ich nicht was mir liegt...also ich kann schon mal kein JS und Blockly oder node red sind beides für mich Neuland bzw wie soll ich entscheiden was mir besser liegt..da bräuchte ich ja einen Lehrer..denn ich kann schon nerven mit meinen Fragen wenn ich dann nichts verstehe... und nur nachlesen u Videos nützen letztendlich auch nicht viel wenn nicht genau mein Problem behandelt wird,deswegen ja auch meine vielen Nachfragen und das was ich habe ist mit Sicherheit keine sooo große Aufgabe ...aber für mich schon.
Ich versuch jetzt trotzdem mit meinen bescheidenen Wissen mich einzulesen bzw Tutorials schauen.
Nochmal Danke für die Zeit die du dir für mich nimmst -
@paul53
Danke...hat auf Anhieb funktioniert...
Schönes WE -
@warlord sagte in Datenpunkt 2 MQTT:
Nachdem ich ja bei 0 anfange weiß ich nicht was mir liegt...also ich kann schon mal kein JS und Blockly oder node red sind beides für mich Neuland bzw wie soll ich entscheiden was mir besser liegt..da bräuchte ich ja einen Lehrer..denn ich kann schon nerven mit meinen Fragen wenn ich dann nichts verstehe... und nur nachlesen u Videos nützen letztendlich auch nicht viel wenn nicht genau mein Problem behandelt wird,deswegen ja auch meine vielen Nachfragen und das was ich habe ist mit Sicherheit keine sooo große Aufgabe ...aber für mich schon.
Am Besten ist es in meinen Augen in solchen Fällen, wenn man eine Aufgabenstellung hat und ein Lösung hat, sich mal anzuschauen, wie man es mit den anderen Tools macht.
Ich wollte erst in Deinem anderen Thread ebenfalls eine Lösung vorschlagen, hab dann aber meinen Beitrag, wie Du ja gesehen hast wieder gelöscht, nachdem ich Dein Eingangsposting nochmals genau durchgelesen hatte und Du dann explizit nach einer Lösung mit Blockly gefragt hast. Da war für mich eigentlich schon klar, für welche Technik Du Dich entschieden hast.
Solche Dinge, wie einen JSON String zu zerlegen oder auch nur einzelne Eigenschaften herauszulesen sind ein paar Grundlagen, die ich Dir schon nahe legen würde, da sie halt ein sehr effizientes Mittel sind - ein ganzes Set an Nachrichten zu übermitteln.
Ursprünglich wollte ich in Deinem anderen Thread eine Lösung vorschlagen, die ich mal in Node Red gebastelt habe und die aus allen Objekten und JSONs einzelne Datenpunkte im iobroker erstellt.
Im Prinzip ist es zwar nun schön, dass Du diese einzelnen Datenpunkte nun unter 0_userdata.0 hast - aber eigentlich ist es unsinnig eine Information, die Du bereits im mqtt hast - nochmals abzusspeichern - um sie dann zu verwerten. Kann man machen, weil es im iobroker schön dargestellt wird und wenn man es zum Beispiel für seine Visualisierung benötigt macht so ein einzelner Datenpunkt Sinn.Im Prinzip ist so ein JSON String halt eine allgemeine Methode, um Javascript Objekte als String über verschiedene Systemgrenzen - auch zum Beispiel unter Nutzung des HTTP Protokolls (oder eben mqtt) - zu transportieren. Das heißt mal grundsätzlich, dass man einen JSON String, will man in weiter verarbeiten, in ein Javascript Objekt umwandelt und damit in der Lage ist direkt auf die Eigenschaften zu zugreifen. Will man dann so ein Objekt wieder abspeichern oder weiterschicken dann verpackt man das Javascript-Objekt wieder in einen JSON String. Ein JSON String ist einfach eine reine Zeichenkette und somit leicht übertragbar - wird das in ein Javascript Objekt umgewandelt, dann kannst Du wieder verschiedene Datentypen wie Booleans, Zahlen etc. verwenden.
Sind zwar englische Artikel bzw. Tutorial, die ich da verlinkt habe - aber ansonsten ist das mein Nachschlagewerk für Javascript - weil Du mit den Tutorials das direkt ausprobieren kannst.
-
@mickym
Ok... iobroker ist etwas umfangreicher als ich dachte...ich hab zigbee2mqtt gelesen und war der meinung ich bekomme gleich schöne mqtt topics aus den zigbee Werten..weit gefehlt...
Zwischen Blockly und node red hab ich einfach gewürfelt,das hat nichts mit Entscheidung für oder wider node red zu tun
Ich probiere jetzt beides mal und werde viele Fragen stellen und dann wie der Kaiser sagt...
Schau mer mal -
@warlord Du hättest auch den Zigbee Adapter nehmen können, der basiert auf dem gleichen Projekt und da bekommst die Datenpunkte einzeln.
- Kommt drauf an was für einen Stick bzw. Coordinator Du hast und wie groß Dein zigbee Netz ist.
ansonsten bin ich aber auch ein mqtt- Fan !!! - Und der JSON war sicher nicht der Grund, warum ich es nicht installiert habe, sondern eher, weil man ja noch irgendein Zusatzprogramm braucht um das zigbee in mqtt umzusetzen.
-
@mickym
Den hatte ich auch schon installiert..aber da wusste ich noch nichts von blockly u node red...deswegen zigbee2mqtt ..aber war halt Denkfehler......
-
@warlord sagte in Datenpunkt 2 MQTT:
@mickym
Den hatte ich auch schon installiert..aber da wusste ich noch nichts von blockly u node red...deswegen zigbee2mqtt ..aber war halt Denkfehler......
Kein Problem - musst Dich halt nur entscheiden - was Du zukünftig nutzt - beides zusammen geht nicht (also zigbee2mqtt und zigbee Adapter).
-
@mickym
Ja..das beides nicht geht hab ich auch schon gemerkt und öfter als einmal meinen rpi neu istalliert (das hab ich mittlerweile drauf)
Ich hab einen Conbee2 von Dresden und mein zigbee Netzwerk umfasst bis jetzt stolze 2 Sensoren
Ich hab auch vorhin tatsächlich überlegt einfach wieder den zigbeeadapter zu installieren und zigbee2mqtt wieder zu löschen.
Da ich quasi noch bei fast 0 stehe...
Ratschlag von dir:
Zigbee2mqtt oder zigbee adapter
blockly oder node red
Ich muß ja irgendwo mal anfangen...und nicht vergessen:
Ich bin sowas von Anfänger.... -
@warlord Also ich habe auch den Conbee2 - allerdings musst aufpassen, dass Du den nicht an die blauen (USB 3.0) Ports anschließt. Außerdem läuft er im Moment stabiler mit einer USB Verlängerung - da die USB Ports am rpi doch ziemlich heiß werden. Und wenn Dein zigbee 2 Sensoren umfasst, dann ist alles ja halb so schlimm. Ich habe auch nur ein kleines - im Vergleich zu dem was andere hier gepostet haben:
Zu zigbee2mqtt kann ich nicht viel sagen - hatte das kurz drauf, aber da ging auch was nicht, weshalb ich den Gedanken wieder verworfen hatte, weil ich eine Zeitlang vom zigbee Adapter nicht begeistert war. Beim zigbee Adapter zusammen mit dem Conbee2 hast Du auch noch einen Fehler, den die Entwickler noch nicht beseitigt haben. Der tritt aber nur auf, wenn Du Zigbee Geräte als Gruppen schalten willst - also 3 Lichter zusammen usw.
Dann bekommst Du diese Fehlermeldungen:
zigbee.0 2021-11-27 07:39:45.656 error Device 0x00212effff05d77f "undefined" not described in statesMapping. zigbee.0 2021-11-27 07:39:45.598 error Device 0x00212effff05d77f "undefined" not described in statesMapping. zigbee.0 2021-11-27 07:36:03.024 error Device 0x00212effff05d77f "undefined" not described in statesMapping. zigbee.0 2021-11-27 07:36:02.983 error Device 0x00212effff05d77f "undefined" not described in statesMapping. zigbee.0 2021-11-27 07:36:00.969 error Device 0x00212effff05d77f "undefined" not described in statesMapping. zigbee.0 2021-11-27 07:36:00.953 error Device 0x00212effff05d77f "undefined" not described in statesMapping.
Und wenn Du mich fragst mit was für einer Logikmaschine Du anfangen sollst, sag ich natürlich NodeRed - aber das sehen hier viele anders.
-
@mickym
Ok..dann fang ich doch mal so an...eine letzte bitte noch...
Du hast doch so ein node red dings das zigbee nach mqtt wandelt..würdest du mir das zur Verfügung stellen damit ich einen vergleich zu blockly habe um zu sehen was mir eher liegt.....
Und dann hast du erstmal ruhe vor mir..ich will dich nicht in Beschlag nehmen denn du hast mit sicherheit noch anderes zu tun als mich zu unterrichten... -
@warlord Also mein NodeRed Flow ist wesentlich umfangreicher, als was Du mit dem Blockly gemacht hast. Es ist in dem verlinkten Thread auch leicht zu exportieren und mit Anleitung. Aber wie gesagt um das vergleichbar zu halten, mache ich Dir schnell exakt das, was Du mit dem Blockly gemacht hast im NodeRed.
Mach doch bitte mal kurz ein Screenshot von dem Blockly was Du jetzt hast hier rein .
-
-
@warlord
Wird der Datenpunkt "0_userdata.0.Aussensensor.Temperatur" noch benötigt, nachdem ein solcher DP unter "mqtt.0" existiert? -
@paul53
Hm...ich dachte man soll die da anlegen weil es in mqtt nicht mehr gehen soll...ich hab ehrlich gesagt keine Ahnung was richtig und falsch ist... -
-
@warlord sagte: weil es in mqtt nicht mehr gehen soll.
Der DP existiert doch unter "mqtt.0", denn er wird mit "steuere" geschrieben.
Es ist unter Admin 5 nur schwierig geworden, Datenpunkte unter "mqtt.0" zu erstellen, aber nicht unmöglich. Notfalls kann man zu dem Zweck auf die Admin 4 Oberfläche zurück schalten.