Node-blue Werte auslesen und auf UI/Dashboard anzeigen

Hey Leute, ich stehe hier mit einer Anfängerfrage auf dem Schaluch: Wie hole ich einen Wert aus einem JSON Objekt und gebe es weiter?
Bei Node-red hatte ich das mal im Griff, nun sehe ich aber grad keine Lösung. Dabei ist dass doch Basics…

Also, hier die Ausgabe aus der Debug Node (ganze Message):
Bildschirmfoto 2020-02-16 um 17.59.49

Was ich nun möchte, ist den Wert der Variable “payload” als $message[‘payload’] an die Debug-Node ausgeben.

In $message['payload'] steht schon “DASDING…”. $message ist ein Objekt, dass das “Aufgeklappte” enthält… also auch ['payload'].

Oder versteh ich grade nicht, was du erreichen willst? :slight_smile:

Das ist korrekt, doch, wenn ich das an die Debug-Node weitergebe, erscheint da einfach nix. Nur wenn ich die Ausgabe auf “Komplettes Nachrichten-Objekt” umstelle, bekommen ich obenstehende Ausgabe.

Dabei sollte ich doch in $message.payload den Wert “DASDING …” erhalten können.

Sollte genau so funktionieren.
Was passiert denn hiermit?

[{"id":"1b9f3c17.19e5ec","type":"constant","namespace":"variable","z":"a8b26615.612f28","name":"","payload":"1","payloadType":"int","outputonstartup":false,"x":180,"y":1510,"wires":[[{"id":"96a3850c.3ae8e8","port":0}]]},{"id":"96a3850c.3ae8e8","type":"change","namespace":"basic-logic","z":"a8b26615.612f28","name":"","rules":[{"t":"set","p":"payload","pt":"message","to":"test","tot":"string"},{"t":"set","p":"foo","pt":"message","to":"bar","tot":"string"}],"x":320,"y":1510,"wires":[[{"id":"b1fae3e5.510b6","port":0}]]},{"id":"b1fae3e5.510b6","type":"debug","namespace":"debug","z":"a8b26615.612f28","name":"","active":true,"console":"debtab","complete":"payload","loglevel":"info","x":495,"y":1510,"wires":[]}]

Danke @pmayer. Mit deinem Code passiert genau nix. Also so wie ich oben beschireben habe. Setze ich die Debug-Node in deinem Beispiel auf “Komplettes Nachrichtenobjekt”, erscheint wie erwartet:

object
    foo: "bar"
    payload: "test"
    source: "c32f7769.0bbc58"

EDIT: Ich merke gerade, wenn ich den Button direkt an die Debug-Node hänge, kommt auch nix hinten raus. Irgendwas ist da komisch. Du erinnerst dich an die Miele-node? Damit klappts, die plappert schön via $message.payload.

Hmm… ich glaube immernoch, dass da irgendwas nicht richtig gefüllt ist. Hast du nen Screenshot?

HIer mal Screenshots von der Miele-Node:
Bildschirmfoto 2020-02-17 um 20.57.30

und von deinem Beispiel, was du mir geschickt hast:

Bildschirmfoto 2020-02-17 um 20.59.46

Was mir auffällt habe ich grün eingekastet: $message : Object vs. $message['payload'] : Object

Moment, erwartest du in payload ein Object, dass payload enthält?
Dann wäre es $message['payload']['payload'].

Ich hab grade das Problem, dass ich das Problem nicht erkennen kann.

Das Problem sehe ich langsam auch nciht mehr, dennoch ist die Lösung noch nciht gefunden :wink:
Also, was ich ja wollte, war, dass ich aus der SONOS Node, nur den “Titel” auf den Debug bekomme.


Und da kommt einfach nix hinten raus. Solange ich Debug “$message[‘payload’]” habe.

Ok, ich bin ein Schrittchen weiter. Bei der Miele Node habe ich es geschaft, die verbleibende Zeit aus dem Objekt zu isolieren:

$msg['payload'] = $message['payload']['state']['remainingTime'];
return $msg;

Ergebnis (Maschine läuft grad nciht, daher 0:00):
Bildschirmfoto 2020-02-17 um 22.48.54

Kann es sein, dass in Node-blue, aufgrund der PHP-Umgebung eine Function-Node anders aufgebaut werden muss als bei Node-red? Obige Schreibweise scheint mir doch eher kompliziert.
Ziel wäre es nun diese Werte (Minuten in Array [0] und Sekunden in Array [1]) auf die Node-blue UI zu bekommen. Gibt es da Ideen oder lohnt sich da ev noch der Umweg via Node-red und der Dashboard-Node?

Hm, was meinst du mit anders? Es ist php…
Ideen wofür?

Ich glaube das beantwortet meine Frage: sind zwar beides Function-Nodes, doch die Sprache ist bei Node-red java und Node-blue php.

*javascript :wink:

Ach, da hat man mich doch glatt dabei ertappt, dass ich keine Ahnung hab’! :crazy_face:

1 Like