NEWS
node.status Weitergabe aus Subflow
-
Hallo zusammen,
aktuell bin ich damit beschäfftigt eine automatisierte Rollladensteuerung je Raum umzusetzen.
Ohne Subflow wird der node.status unter der Funktions-Node Automation richtig ausgegeben.
Um die Thematik zu vereinfachen habe ich einen Subflow erstellt. Beim Subflow wird nur der Payload ausgegeben, aber nicht der definierte node.status.
Im JSON ist die Subflow-Definition aber eigentlich vorhanden. Weshalb ich das nicht verstehe.
"status": { "x": 760, "y": 180, "wires": [ { "id": "617a7a725ff5c2f2", "port": 0 } ] }
Ich habe gelesen, dass es im Edit Subflow unter "Appearance" / "Anzeigeoptionen" eine Checkbox zum Aktivieren von "Show status text" oder "Zeige Statusinformationen" ab Version 3.1.0 geben soll. Im Node-Red im ioBroker wird Version 3.1.11 angezeigt.
Diese Checkbox finde ich leider aber nicht.Der Payload sieht zum Beispiel so aus:
Rollladen_Dachstudio_Sued : msg.payload : Object object Rollladen_Dachstudio_Sued: 0 RollladenStatus_Dachstudio_Sued: 0 Fensterkontakt_Dachstudio_Sued: 0 Temperatur_Dachstudio: 27.1 Temperatur: 19.7 Taupunkt: 14.51 Regenmenge: 0.3 Schneefallgrenze: 3200 altitude: 59.29033470058892 Tageszeit: 3 Bewoelkung: 71
Hier noch mein Flow:
flows_rollladensteuerung.jsonDanke für Eure Unterstützung.
Markus -
@mage Im Subflow - gibts kein node.status wie für die function Node.
Du musst die node.status infos als eigene payload in die status Node des subflows schicken:
Also im Prinzip würde ich als eigene Eigenschaft - den node.status in msg.status weitergeben und diese msg.status dann in die payload für die status Node verwenden.
Trotzdem will nicht in mein Kopf - was ein Subflow mit EINER function Node für einen Sinn macht. Wenn Du anstelle der function Node einen Flow daraus machen würdest, würde ich es ja verstehen - aber so macht das ja kaum Sinn.
-
@mickym vielen lieben Dank für deine Unterstützung und deinen Tipp.
Da hatte ich mich bei der Recheche wohl von der netten KI in die Irre führen lassen. Die gab mir folgende Information.Die entsprechende Funktionalität wurde in Node-RED 3.1.0 eingeführt, dokumentiert u. a. hier:
Node-RED Release Notes 3.1.0
Subflows now support defining a status output so that calls to node.status() from within a subflow can be surfaced in the parent flow.
Direkt aus dem Release Log:
You can add a status output to your subflow. Any nodes in the subflow that call node.status() will then surface that status under the subflow instance in the parent flow. (Quelle: Node-RED 3.1.0 release notes)
Da denkt man, die modernen Technik nutzen ist sooo einfach. Dabei ist es wie im richtigen Leben. Zwei unterhalten sich und nehmen an, dass sie vom gleichen sprechen, meinen aber komplett was anderes.
Und du hast natürlich recht. Es gibt nur die status-node die den Payload augibt, wie hier beschrieben. https://nodered.org/docs/user-guide/editor/workspace/subflows
Dann werde ich es mal mit deinem beschriebenen Weg über eine Change Node probieren umso die node.status({fill:"red",shape:"ring",text:"message"}) aus Subflow in den Hauptflow zu bekommen.
Eigentlich sollte es doch über msg. status auch funktionieren, oder?msg.status = { fill: "grey", shape: "ring", text: `Sonnenschutz aktiv (${positionStatus})` };
Der Grund, weshalb ich nur EINE Funktions Node in ein Subflow integriert habe, hat einfach den Hintergrund, dass ich 8 Räume einzeln mit den jeweiligen Rollladen steuere und bei Verwendung der Funktions Node in einen Subflow bei Änderungen nur EINE Funktions Node anpassen muss.