NEWS
goto in node red
-
@bynight sagte in goto in node red:
Hallo Micky, langsam erschließt sich mir der Unterschied zwischen flow und msg ...
Na da hast Du ja schon Einigen was voraus.
Im Grunde sollte man so wenig wie möglich trigger nehmen, da jeder zusätzliche Trigger das System selbst belastet.
Wenn ein Flow getriggert ist, dann sollte man den trigger möglichst (gut thematisch sollte es zusammenpassen) für alles nutzen, was man zu dem Zeitpunkt erledigen will. Also auch für mehrere Geräte.Im Ergebnis macht es zwar keinen Unterschied - aber es ist halt für das System ein Unterschied, ob ein Wecker klingelt der alle aufweckt - oder 50 Wecker zur gleichen Zeit klingeln.
-
@mickym Danke! Das deckt sich mit meiner Annahme. Also hänge ich die an den Mitternachts-Zweig an und entferne den zusätzlichen Trigger.
-
@bynight Hallo Micky, ich hab schon wieder ne Frage:
ich bekomme von dem Shelly die 3 Phasen korrekt angezeigt.
Aber sobald ich den SummenNode für die Gesamtleistung anhänge bekomme ich TypeError: Cannot read properties of undefined (reading 'toString'). Hinter den Victron Nodes funktioniert der SummenNode aber.
Lese ich den Shelly falsch aus oder fehlt weiter hinten noch was oder passt der Summen Node nicht?Danke und Gruß,
Ronald -
@bynight Mit Summennodes oder so einem Schmarn arbeite ich nicht. Ich benutze für einfache Berechnungen immer nur die Standardnodes. Ausserdem vermeide ich function Nodes wo immer es geht. Wenn Du aber Summen periodisch zusammenzählen willst, dann benötigst du wohl den Kontext der function Nodes - insofern kann Deine Summennode eine Vereinfachung darstellen.
Wenn die Summennode hinter der Shelly Node funktioniert, hinter der function Node nicht, dann hast du mit der function Node das Nachrichtenobjekt so verändert, dass diese nicht mehr funktioniert.
Dazu müsstest Du über eine Debug ausgabe - die Nachrichtenobjekte, sowie den Fehler aus der Summennode sowie deren Definition zeigen.
Ich kann mir leider nicht jede Node installieren, die sich irgendjemand mal installiert hat.
-
@mickym wie komme ich an den Kontext einzelner Nodes, speziell der Funktion Node?
Der Summennode funktioniert hinter den Victrons, nicht hinter dem Shelly!
Im Debug hinter den Function Nodes wird jeweils ordentlich der Leistungswert ausgegeben.
Nur die Summe aller drei bekomme ich nicht hin. Sobald ich den Summen Node an einen der Function Nodes hänge, bekomme ich rote Fernster.Bei Victron funzt es, bei Shelly nicht:
vllt passt ja der Text in den function Nodes nicht:
var newmsg = {payload: msg.payload.emeters[1].power};
return newmsg; -
@bynight klick halt mal auf die node-id umzu sehen, welche node den fehler ausspukt.
-
@mickym es ist die node-red-contrib-sum:
-
@bynight Gut dann kann ja der Fehler nur aus der function Node 8 kommen. Also diese auf Fehler überprüfen bzw. im Protokoll schauen, ob da manchmal keine Zahlenwerte rauskommen.
-
@mickym ist nicht nur bei der 8, auch bei 7 und 9... auch wenn ich einen Switch verwende :
selbes Ergebnis...
-
@bynight Ja dann scheint halt nicht immer dieser Wert aus dem Shelly zu kommen und Du musst ggf. abfangen, wenn dieser Wert Null ist.
-
@mickym nach langer Suche im Netz bin ich nun fündig geworden:
Shelly scheint die Summe zu liefern, obwohl ich den Wert im Array nicht finden kann:Somit ist es ganz einfach, entweder per Function oder per Switch:
-
@bynight Na dann ist ja alles gut!
-
@mickym ja endlich :-))) und nun hab ich auch noch das Summieren rausgekriegt...
im Switch:oder in Function:
überall dasselbe Ergebnis :-)))
Du hast das Thema übrigens 2023 schon mal behandelt. Der Fragesteller hat fast dieselben Ansätze gehabt wie ich...
Die Lösung habe ich dann aber erst hier ganz unten gefunden...Danke für die Hilfe!
Und Grüße,
Ronald -
@bynight Das geht aber mit JSONATa viel einfacher.
Zeig mal das komplette Array hier in CodeTags. Kopiere einfach den Wert über die Schaltfläche aus dem Debugfenster und stell ihn hier in CodeTags ein.
-
@mickym meinst Du das hier?
17.8.2024, 01:43:01node: debug 66 msg : Object object status: object wifi_sta: object cloud: object mqtt: object time: "01:43" unixtime: 1723851795 serial: 391 has_update: false mac: "485519DB63BC" cfg_changed_cnt: 0 actions_stats: object relays: array[1] emeters: array[3] 0: object 1: object 2: object total_power: 272.12 emeter_n: object fs_mounted: true v_data: 1 ct_calst: 0 update: object ram_total: 49920 ram_free: 30904 fs_size: 233681 fs_free: 153612 uptime: 7981 payload: object relays: array[1] 0: object emeters: array[3] 0: object 1: object 2: object _msgid: "5ae6ba6a42a5c12a"
Jetzt sehe ich auch die Total Power im Status. Bisher habe ich immer nur relays und emeters gesehen. Den Status Reiter habe ich bisher nie gesehen...
Was soll denn einfacher gehen als ein Switch mit status.total_power drin oder eben die 3 Power Werte addiert?Das ist alles für 3 Shellys und 9 Phasen...
-
@bynight sagte in goto in node red:
@mickym meinst Du das hier?
17.8.2024, 01:43:01node: debug 66 msg : Object object status: object wifi_sta: object cloud: object mqtt: object time: "01:43" unixtime: 1723851795 serial: 391 has_update: false mac: "485519DB63BC" cfg_changed_cnt: 0 actions_stats: object relays: array[1] emeters: array[3] 0: object 1: object 2: object total_power: 272.12 emeter_n: object fs_mounted: true v_data: 1 ct_calst: 0 update: object ram_total: 49920 ram_free: 30904 fs_size: 233681 fs_free: 153612 uptime: 7981 payload: object relays: array[1] 0: object emeters: array[3] 0: object 1: object 2: object _msgid: "5ae6ba6a42a5c12a"
Nein so genau nicht. Nichts mit der Maus markieren, sondern das Objekt schön über die Schaltfläche Wert kopieren und dann in die Zwischen ablage kopieren und dann hier in Codetags reinstellen.
Also wenn Deine payload bzw. Teile Deines Nachrichtenobjektes warscheinich so aussieht
{ "payload": { "emeters": [ { "power": 20 },{ "power": 120 },{ "power": 220 },{ "power": 30 } ] } }
Dann kannst Du das mit JSONATA einfach so aufsummieren:
$sum(payload.emeters.power)
Testen kannst Du auch solche Sachen direkt im JSONATA exerciser: https://try.jsonata.org/Pel8ES7G0
-
@bynight sagte in goto in node red:
@mickym ja endlich :-))) und nun hab ich auch noch das Summieren rausgekriegt...
im Switch:Ausserdem läst man in JSONATA das msg weg, sondern greift direkt auf die Namen des Objektes zu.