NEWS
Ausgelesene Werte in Datenpunkte schreiben (Node Red)
-
Eben nicht. Sonst würde ich dafür kein Thema aufmachen.
Ich bin leider nicht so bewandert was Skriptsprache angeht.
Was ich beim Testnode rausgekommen habe ist, dass im Debug Fenster viele Infos auftauchen, vermutlich als JSON??
Und diese Infos möchte ich gerne einzeln in Datenpunkte, die als Info oder zum Schalten dienen.
Zum Beispiel sind da der rssi Wert , Firmware, Bezeichnung.....( nur mal so als Beispiel was da so an Infos steht). -
@haselchen, schau dir in diesem Video an, wie man Datenpunkte anlegt.
-
Sei mir nicht böse, ich hab ne lange Nacht hinter mir.
Das Problem ist der Node Red Flow.
(Wie muss der genau aussehen) -> Und dann die Ausgabe an Iobroker
Von dem Prozedere habe ich keine Ahnung.Vielleicht verdeutlicht das mein Problem
Ich möchte nur 3.4.1 da rechts stehen haben.
Wie muss das drum und dran dazu aussehen.
Das ist der Amateur Flow dazu. -
@haselchen, setze zwischen den JSON-Node und den "Firmware" (IOBroker-Out Node) einen Change-Node und setze dort den msg.payload auf msg.payload.fwVersion
-
@haselchen Im Prinzip nicht schwierig - mit der Json Node - machst du den String in ein Objekt und greifst dann direkt auf das einzelne Objekt zu.
Also den Datenpunkt auslesen - wenn das ein String ist dann wieder mit der JSON Node in ein Objekt umwandeln und dann mit msg.payload.status auf den einzelnen Wert zugreifen. -
@mickym
@Seb_123
Okay, schonmal ein Teilerfolg.
Sehr schön , danke.Nun gehts an den grossen Kuchen.
Ich dachte, ich mache das wie ihr eben vorgeschlagen habt.
Und extrahiere alle Punkte einzeln aus dem JSON über das function Node.Hier wollte ich zum Beispiel den rssi Wert aus dem Ergebnis oben im Node rauslesen und in den Datenpunkt rssi schreiben.
Aber wie man sieht, es gibt eine Fehlermeldung. -
@haselchen
Hier hast Du erst mal alle Möglichkeiten
direkt auf die Objekte zuzugreifen oder mit einem split aus einem Objekt lauter Einzelnachrichten zu generieren. -
@mickym sagte in Ausgelesene Werte in Datenpunkte schreiben (Node Red):
Mein Problem ist, dass ich keine Objekt ID habe mit der ich arbeiten kann.
Die Daten für die Nodes habe ich aus dem ausgelesenen Json Flow. -
@haselchen Ich habe leider nicht mehr viel Zeit - sonst halt später.
Entweder Du bekommst direkt als Objekt Deine Daten oder als JSON String. Die kannst Du mit der JSON Node wieder in ein Objekt umwandeln. Der JSON Node erkennt beide Richtungen !!!
-
Zu allererst nen fettes Danke, dass du dir die Zeit nimmst.
Ich versuche das nun über Umwege.
Ich lese aus dem Debug einzelne Punkte aus, die ich haben will.
Dazu schreibe ich in dieses Function Node immer das Wort rein.msg.payload = msg.payload.ip;
return msg;Damit bekomme ich die Ip Adresse.
Soweit so gut. Was muss ich hinter payload eingeben wenn ich zum Beispiel rssi haben will. Im Debug steht params davor.
Nur rssi hinter payload eingeben, reicht diesmal nicht.
-
@haselchen kann im Moment nur vom handy tippen. Du musst halt schauen was das Objekt heißt. Sieht hier so aus als ob es params heisst. Dann halt params.rssi
-
Das wäre die Frage . Also ein Punkt dazwischen?
-
@haselchen ja. Zugriff immer mit .
-
@haselchen, msg.params.rssi, wenn es nicht im Payload steht.
-
-
Okay, Lösung gefunden , man muss die Zahl in eckige Klammern setzen.
Leider kann ich die Kanäle nicht schalten, sie werden halt nur angezeigt.
Es gibt ein Node mit dem man einzelne Channels schalten kann.Die Properties habe ich alle. Ist auch connected. Ist nur nen Screenshot.
Das ist die Erklärung zu dem Node.
Meine Idee ist, ich habe den Datenpunkt mit Kanal 1 ja schon.
Wenn ich per Flow jetzt den überwachen lasse und wenn der sich durch ein Blockly zum Beispiel auf true ändert, dann soll Kanal 1 angeschaltet werden.Das wäre jetzt der finale Flow für heute.
-
Muss das noch mal hochholen, weil es mich nervt und ich es nicht hinbekomme.
Niemand da, der den Flow parat hat?Wenn Datenpunkt auf true geht (z.b. wegen eines Blocklys) dann z.b. Channel 1 anschalten und wenn wieder false dann ausschalten.
-
@haselchen und wo ist das Problem? Weisst Du nicht wie Du den Datenpunkt schaltest?
-
2 Tage grübeln + zig Kopfschmerztabletten, dass ist das Problem
Node Red ist Neuland und leider nur wegen des Sonoff notwendig.
Es gibt ein contrib ewelink mit den dazugehörigen Nodes.
Zum Beispiel oben das write State Node.
Ich bräuchte nun den Flow wie ich es beschrieben habe.
Datenpunkt überwachen........true ......Dann Channel 1 anschalten.Und sollte ich das mal geschafft haben müsste ich mal wissen wie man es schafft das sich die für Node Red angelegten Datenpunkte (bei Änderung) aktualisieren.
-
@haselchen said in Ausgelesene Werte in Datenpunkte schreiben (Node Red):
contrib ewelink
So ich gehe mal davon aus, Du hast diese Nodes https://ottoszika.github.io/node-red-contrib-ewelink/#/nodes implementiert.
Wo ist das Problem?
Du nimmst eine iobroker in Node und der triggert Deinen Flow. Mit einem Switch unterscheidest zwischen true und false und gibst eine Nachricht an einer diese ewlink nodes aus.
Was hast Du denn schon gemacht - zeig halt mal Deinen Flow - wo hast Du debug nodes dran gehängt usw.
Du kannst den Power out mit "toggle, off und on bestücken" und der liefert Dir sogar den Status gleich zurück. Ich könnte Die momentan zwar den switch und change node schicken - aber ich habe halt nicht den Datenpunkt den Du auslesen willst noch den ewlink node - aber wie gesagt - an den brauchst Du nur einer der 3 Kommandos schicken.
Diesen State ewlink - finde ich auf der Webseite gar nicht - dann musst Du ggf. mal die Webseite posten welches Modul Du installiert hast, damit man sich die NOdes mal zumindest in der Therorie anschauen kann, wie die funktionieren. Das ist wie ein iobroker Adapter und da funktioniert auch jeder anders.
Am Besten Du schreibst welchen Deinen Datenpunkt Du auslesen möchtest - also javascript.0.xx. usw. und dann kann ich Dir einen rudimentären Flow gerne schicken, wie ich es angehen würde.
Und die Datenpunkte, die Du mit Node-Red beschreiben willst - dafür nimmst Du die iobroker-out Nodes. (von mir aus auch mit konkreten Pfad - damit man Dir einen Flow basteln kann, den Du ausprobieren kannst.