NEWS
Automatisch States anlegen ioBroker out?
-
Hallo,
ich habe eine Payload, die mehrere Werte enthält und darauf die passenden States erstellt werden sollen.
Die Werte kommen aus dem Node "Buffer-parser".
cell01_voltage : msg : Object
object
topic: "cell01_voltage"
specification: object
payload: "0BC8"
_msgid: "6d993129914a6e24"Und davon kommen viele Werte, immer mit anderen Topic.
Im Iobroker habe ich den Ordner erstellt: 0_Userdata.0.Akku
und dort drunter sollen die States mit dem Namen des Topics erstellt werden und dann mit dem payload beschrieben werden.Frage: Wie setze ich die Variablen im "ioBroker out" in die Felder ein?
Spitze Klammer klappen nicht..
-
@werde45 Am besten Du nimmst aus der Buffer Node ein key/value Output - und bildest ein Objekt.
Dann kannst Du meinen Flow nehmen, der Dir daraus einzelne Datenpunkte zusammen mit der iobroker Out Node erstellt:
https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegenAnsonsten musst du halt wenn Du es selbst machen willst das topic halt vorher zusammen stellen.
Also topic vorher mit einer change Node zusammenstellen und den State Namen musst Du auch über das Nachrichtenobjekt erstellen:msg.stateName
Das steht ja alles in der Hilfe zur iobroker Out node.
Also um Dein topic zu erstellen musst halt vorher mit einer Change Node das topic erstellen:
-
@mickym In der Online-Hilfe fehlen doch alle Bilder. Oder sehe ich das falsch?
https://www.iobroker.net/docu/index-280.htm?page_id=4284&lang=de
-
@werde45 Ja das stimmt - diese Doku hilft dir nicht viel.
Die Hilfe von der ich redete, ist in der Hilfe zu den Nodes.
Aber ich helfe Dir gerne - siehe unten
-
@mickym Also vorher mit Switch die Werte passende "umbauen". Diese Hilfe hatte ich übersehen. Bin erst seit 2 Tagen mit Node-Red unterwegs und "Hello Welt" war zu langweilig
-
@werde45 Nein nichts mit switch - sondern mit change.
Wenn Du ein key/value aus der buffer Node rauskommen lässt, dann sollte doch ein Objekt rauskommen. Poste das doch mal hier in CodeTags.
Geht auch nicht um "Hello World" - aber du solltest die Grundstrukturen von Nachrichtenobjekten kennen.
-
Ein schönen Thread zum Erlernen von NodeRed zusammen im iobroker findest Du hier:
https://www.smarthome-tricks.de/uebersicht-iobroker-node-red/
Das sind auch viele Bilder drin, wenn auch nicht mehr ganz aktuell, was den iobroker betrifft.
-
@mickym
So siehts aus:{"topic":"cell01_voltage","specification":{"type":"ascii","name":"cell01_voltage","offset":25,"length":4,"offsetbit":0,"scale":"1","mask":"","id":0,"value":"0BC2"},"payload":"0BC2","_msgid":"c6ed947a2da3bd2a"}
Der Name ist der Name des States, Payload ist der eigentliche Wert, der noch von Hex gewandelt werden muss, die anderen Werte des States sind Statisch ebenso wie die anderen Optionen (Einheit etc.)
Die Basis ist 0_userdata.0.Akku
Aber das Hauptproblem war wohl, das Node-Red keine externen Werte erstellen durfte....jajajajaja
-
@werde45 Na Du hast nicht die key/value Option und die payload als output gepostet. Aber wenn Du jetzt alleine zurecht kommst, dann passt es ja.
-
@mickym Hey...danke erstmal.
Ich werde das am Wochenende mal testen. Ich denke, das Grundprinzip ist klar.
Ich mache sonst viel in Powershell und das hier ist doch eine andere Welt.
Und mit der Hilfe im Node selber, die sich extra versteckt hatte, werde ich das wohl hinkriegen.
-
Jetze...
{"_msgid":"e78ce5f560f12ff8","payload":{"cell01_voltageX":"0BBD","cell02_voltage":"0BE1"},"originalPayload":[126,50,50,48,52,52,65,48,48,69,48,67,54,48,48,48,48,54,52,49,50,69,65,49,48,48,66,66,68,48,66,69,49,48,66,67,57,48,66,68,66,48,66,68,66,48,66,68,53,48,66,68,52,48,66,68,55,48,66,67,68,48,66,67,68,48,66,68,67,48,66,68,65,48,66,67,70,48,66,67,55,48,66,67,70,48,66,68,55,48,48,65,48,48,48,65,65,48,48,65,48,48,52,48,48,65,65,48,48,65,65,48,48,65,65,48,48,65,65,48,48,48,48,48,48,48,48,48,48,54,52,48,49,50,55,49,48,48,48,54,52,48,48,48,53,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,48,48,48,50,51,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,68,51,69,70,13],"specification":{"options":{"byteSwap":[],"resultType":"keyvalue","singleResult":true,"msgProperty":"payload","setTopic":true},"items":[{"type":"ascii","name":"cell01_voltageX","offset":25,"length":4,"offsetbit":0,"scale":"1","mask":"","id":0,"value":"0BBD"},{"type":"ascii","name":"cell02_voltage","offset":29,"length":4,"offsetbit":0,"scale":"1","mask":"","id":1,"value":"0BE1"}]},"values":["0BBD","0BE1"],"objectResults":{"cell01_voltageX":{"type":"ascii","name":"cell01_voltageX","offset":25,"length":4,"offsetbit":0,"scale":"1","mask":"","id":0,"value":"0BBD"},"cell02_voltage":{"type":"ascii","name":"cell02_voltage","offset":29,"length":4,"offsetbit":0,"scale":"1","mask":"","id":1,"value":"0BE1"}},"keyvalues":{"cell01_voltageX":"0BBD","cell02_voltage":"0BE1"},"arrayResults":[{"type":"ascii","name":"cell01_voltageX","offset":25,"length":4,"offsetbit":0,"scale":"1","mask":"","id":0,"value":"0BBD"},{"type":"ascii","name":"cell02_voltage","offset":29,"length":4,"offsetbit":0,"scale":"1","mask":"","id":1,"value":"0BE1"}],"buffer":[126,50,50,48,52,52,65,48,48,69,48,67,54,48,48,48,48,54,52,49,50,69,65,49,48,48,66,66,68,48,66,69,49,48,66,67,57,48,66,68,66,48,66,68,66,48,66,68,53,48,66,68,52,48,66,68,55,48,66,67,68,48,66,67,68,48,66,68,67,48,66,68,65,48,66,67,70,48,66,67,55,48,66,67,70,48,66,68,55,48,48,65,48,48,48,65,65,48,48,65,48,48,52,48,48,65,65,48,48,65,65,48,48,65,65,48,48,65,65,48,48,48,48,48,48,48,48,48,48,54,52,48,49,50,55,49,48,48,48,54,52,48,48,48,53,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,48,48,48,50,51,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,68,51,69,70,13]}
Das war gemeint
-
@werde45 Nein das war nicht gemeint.
Na egal, was kommt denn aus Deiner buffer Node raus. Mach halt mal eine debug Node dahinter und poste das Debug Fenster.
-
@mickym Guten morgen,
leider viel Neuschnee in Oberbayern - daher keine Solarleitung aber Zeit...
Ich habe die Wandlung nun in eine Funktion geschrieben und es klappt. Und alles im Parser steuerbar.
msg.ack = true; msg.Name = msg.topic; msg.topic = "0_userdata.0.Akku." + msg.topic; // Hex in Dezimal wandeln msg.payload = parseInt(msg.payload, 16); return msg;
Danke. Ich wünsche ein schönes Wochenende.