Kleine Hilfe bei Node-Red / JS benötigt

Hier kommt alles rein was nicht direkt zur OpenWB gehört.
Antworten
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von Becker »

Hallo,
es tummeln sich glaube ich hier einige Profis, daher bitte ich um eine kleine Hilfe in meinem Node-Red Flow.

Es geht um den Wert vom Batterie Wechselrichter, dieser schwankt zwischen -2500 und +2500W (Be- / Entladen)

Ich wollte da gerne 2 Topics raus bauen, was auch klappt:
1.jpg
mit "Switch":
2.jpg
aber leider wird der jeweils letzte Wert beim Wechsel zwischen + und - bzw. - und + gespeichert, so dass meine Datenbank natürlich nur Mist bekäme.
So sieht das aus:
3.jpg
Wie schaffe ich es, dass immer der jeweils nicht akutelle Wert = 0 gesetzt wird ?

Den SBS2.5 (SMA) frage ich alle 5s per Modbus ab.

MfG
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
hominidae
Beiträge: 1159
Registriert: Di Sep 03, 2019 4:13 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von hominidae »

...ich sehe keine Topics, sondern eine Payload mit zwei Objekten (Entladen + Beladen).....setze doch einfach das komplementäre Objekt auf "0", wenn das reale eintrifft....die Unterscheidung bekommst Du ja schon nach dem Swiitch.

Ohne den Flow selbst ist es aber eh Rätselraten, was da Du machst...zB wo ist der split Node zum Join-Node oder auf welcher Basis wird ge-join-ed und was machen denn die vielen Function Nodes überhaupt?
Wahrscheinlich kannst Du mit ein paar Change-Nodes da gleiche erreichen, wie mit den Function Nodes?

Wofür ist denn der Output hinter dem Join überhaupt gedacht...einen Timestamp hast Du da nicht drin, in der Payload?
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von Becker »

hominidae hat geschrieben: So Apr 11, 2021 12:14 pm ...ich sehe keine Topics, sondern eine Payload mit zwei Objekten (Entladen + Beladen).....setze doch einfach das komplementäre Objekt auf "0", wenn das reale eintrifft....die Unterscheidung bekommst Du ja schon nach dem Swiitch.
Wenn du mir verrätst wie das geht gern!

Hier der Flow:

Code: Alles auswählen

[{"id":"52afd055.a836a8","type":"function","z":"9f6752b0.b55988","name":"PAC3","func":"msg.payload = msg.payload.PAC3;\nmsg.topic = \"PAC3\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":830,"y":1940,"wires":[["61997a16.71aefc","3ac6a532.5e5e5a","a8d64f72.66cf18","2e0cdfdb.db198","8ec4b63c.80096","6f07f889.bda788"]]},{"id":"b6efc276.3b37","type":"switch","z":"9f6752b0.b55988","name":"","property":"payload.PAC3","propertyType":"msg","rules":[{"t":"gte","v":"0","vt":"num"},{"t":"lt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":1350,"y":1940,"wires":[["4d18ea91.fe6d24"],["fbb45a39.7ca4d8"]]},{"id":"4d18ea91.fe6d24","type":"function","z":"9f6752b0.b55988","name":"Entladen","func":"msg.payload = msg.payload.PAC3;\nmsg.topic = \"Entladen\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1480,"y":1920,"wires":[["b028ac79.76d8a"]]},{"id":"fbb45a39.7ca4d8","type":"function","z":"9f6752b0.b55988","name":"Beladen","func":"msg.payload = (msg.payload.PAC3 * -1);\nmsg.topic = \"Beladen\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1480,"y":1960,"wires":[["b028ac79.76d8a"]]},{"id":"b028ac79.76d8a","type":"calculate","z":"9f6752b0.b55988","name":"Durchschnitt pro Minute","pauseType":"timed","calculation":"average","timeout":"10","timeoutUnits":"seconds","rate":"10","x":1690,"y":1940,"wires":[["f01d2ea8.e59cb"]]},{"id":"f01d2ea8.e59cb","type":"function","z":"9f6752b0.b55988","name":"runden","func":"var temp = msg.payload\nmsg.payload = parseFloat(temp.toFixed(0));\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1880,"y":1940,"wires":[["e2b13662.528b18"]]},{"id":"e2b13662.528b18","type":"join","z":"9f6752b0.b55988","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"1","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1870,"y":1880,"wires":[["6d1bb8c1.0a8278"]]},{"id":"6d1bb8c1.0a8278","type":"debug","z":"9f6752b0.b55988","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1870,"y":1820,"wires":[]}]
um den es geht.

die beiden Funktionen "Beladen" und "Entladen" machen bloß Topic =... und beim einen *-1

Durchschnitt sollte sich von selbst erklären, Durchschnitt pro Minute (steht gerade auf 10s) und anschließend runden.

Danach durch "join" ein Objekt für InfluxDB.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
hominidae
Beiträge: 1159
Registriert: Di Sep 03, 2019 4:13 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von hominidae »

Wie schon vermutet, sind die Funktion-Nodes nicht wirklich notwendig, sondern könnten durch Change-Nodes ersetzt werden (warum wollen immer Alle programmieren, in NR?).

Für influx fehlt das Timestamp, zumindest sehe ich es nicht.
Warum willst Du aus den Rohdatren einen Mittelwert bauen und den dann in die influxDB paclen?
Ich würde die Rohdaten da reinlaufen lassen und die Mittelwertbildung von Influx bei der Abfrage / Query nutzen....hast Du Platzproblme am Speicherort?

Fragen zu Deinem Problem/Flow:
  • ...aus welcher Bibliothek ist der Node für die Mittelwert-Bildung (calculate)?
  • Könntest Du: den msg-Output des Debig mal mit vollständigem msg-Objekt zeigen?
  • Kannst Du eine Demo-Nachricht aus dem PAC3-Nodes bzw als Eingang für den Switch-Node bereitstellen?
  • Bis Du sicher, das der Switch-Node funktioniert (wird der Wert der Payload (payload.PAC3) auch als numerischer Wert erkannt?) und was passiert, wenn Du im Switch-Node sagst "Nach erster Übereinstimmung stoppen"
hominidae
Beiträge: 1159
Registriert: Di Sep 03, 2019 4:13 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von hominidae »

@Becker:

das "Problem" könnte sein, dass der WR sehr oft zwischen be- und entladen wechselt...häufig, innerhalb das Intevalls für die Mittelwertbildung.
Dann ist das "normal".

Code: Alles auswählen

[{"id":"e348726b.2a4ec","type":"tab","label":"Flow 5","disabled":false,"info":""},{"id":"48c3e30b.0b676c","type":"inject","z":"e348726b.2a4ec","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":280,"wires":[["489adf85.c5485"]]},{"id":"489adf85.c5485","type":"random","z":"e348726b.2a4ec","name":"","low":"-2500","high":"2500","inte":"false","property":"payload","x":300,"y":280,"wires":[["92e8a1ef.c0319"]]},{"id":"92e8a1ef.c0319","type":"change","z":"e348726b.2a4ec","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"PAC3","tot":"msg"},{"t":"move","p":"PAC3","pt":"msg","to":"payload.PAC3","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"PAC3","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":280,"wires":[["b6efc276.3b37"]]},{"id":"b6efc276.3b37","type":"switch","z":"e348726b.2a4ec","name":"","property":"payload.PAC3","propertyType":"msg","rules":[{"t":"gte","v":"0","vt":"num"},{"t":"lt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":670,"y":280,"wires":[["4d18ea91.fe6d24"],["fbb45a39.7ca4d8"]]},{"id":"4d18ea91.fe6d24","type":"function","z":"e348726b.2a4ec","name":"Entladen","func":"msg.payload = msg.payload.PAC3;\nmsg.topic = \"Entladen\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":800,"y":260,"wires":[["b028ac79.76d8a"]]},{"id":"fbb45a39.7ca4d8","type":"function","z":"e348726b.2a4ec","name":"Beladen","func":"msg.payload = (msg.payload.PAC3 * -1);\nmsg.topic = \"Beladen\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":800,"y":300,"wires":[["b028ac79.76d8a"]]},{"id":"b028ac79.76d8a","type":"calculate","z":"e348726b.2a4ec","name":"Durchschnitt pro Minute","pauseType":"timed","calculation":"average","timeout":"10","timeoutUnits":"seconds","rate":"10","x":1010,"y":280,"wires":[["f01d2ea8.e59cb"]]},{"id":"f01d2ea8.e59cb","type":"function","z":"e348726b.2a4ec","name":"runden","func":"var temp = msg.payload\nmsg.payload = parseFloat(temp.toFixed(0));\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1200,"y":280,"wires":[["e2b13662.528b18"]]},{"id":"e2b13662.528b18","type":"join","z":"e348726b.2a4ec","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"1","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1190,"y":220,"wires":[["6d1bb8c1.0a8278"]]},{"id":"6d1bb8c1.0a8278","type":"debug","z":"e348726b.2a4ec","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1190,"y":160,"wires":[]}]

Edit: wenn Du es so machst, bekommst Du die Mittelwerte für be- und entladen getrennt.

Code: Alles auswählen

[{"id":"b028ac79.76d8a","type":"calculate","z":"e348726b.2a4ec","name":"Durchschnitt pro Minute","pauseType":"timed","calculation":"average","timeout":"10","timeoutUnits":"seconds","rate":"10","x":1010,"y":220,"wires":[["f01d2ea8.e59cb"]]},{"id":"f01d2ea8.e59cb","type":"function","z":"e348726b.2a4ec","name":"runden","func":"var temp = msg.payload\nmsg.payload = parseFloat(temp.toFixed(0));\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1200,"y":220,"wires":[["e2b13662.528b18"]]},{"id":"e2b13662.528b18","type":"join","z":"e348726b.2a4ec","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"1","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1190,"y":160,"wires":[["6d1bb8c1.0a8278"]]},{"id":"6d1bb8c1.0a8278","type":"debug","z":"e348726b.2a4ec","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1190,"y":100,"wires":[]}]
...aber wie gesagt, den UseCase dahinter verstehe ich noch nicht so ganz
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von Becker »

wie kann ich die funktion durch change ersetzen ?

für influx braucht es kein timestamp, das macht der influx node von alleine.

ich hatte zu Anfangs mal alle 2 bzw. 5s in influx geschrieben, das hat den RPi3 stark ausgelastet, nachdem ich auf 1min gegangen bin ist dieser wieder zu gebrauchen, daher wollte ich dies auch beibehalten.

"node-red-contrib-calculate" heißt der Durchschnittswert node - komisch dass den Niemand kennt.

Objekt Beladen/Entladen:

Code: Alles auswählen

{"topic":"Entladen","messageId":"60731656da2d713ac81849de","payload":{"Entladen":92},"queueLengthByUnitId":{"unitId":3,"queueLength":0},"queueUnitId":3,"unitId":3,"modbusRequest":{"value":1618155094206,"unitid":"3","fc":4,"address":"30775","quantity":"2","messageId":"60731656da2d713ac81849de"},"responseBuffer":{"data":[0,92],"buffer":[0,0,0,92]},"_msgid":"779d74cf.bac0fc","originalPayload":[0,92],"specification":{"options":{"byteSwap":[],"resultType":"keyvalue","singleResult":true,"msgProperty":"payload","setTopic":true},"items":[{"type":"int32be","name":"PAC3","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":"","id":0,"value":92}]},"values":[92],"objectResults":{"PAC3":{"type":"int32be","name":"PAC3","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":"","id":0,"value":92}},"keyvalues":{"PAC3":92},"arrayResults":[{"type":"int32be","name":"PAC3","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":"","id":0,"value":92}],"buffer":[0,0,0,92]}
Demo Nachricht bin ich gerade überfragt, das kommt als PAC3 raus:

Code: Alles auswählen

{"topic":"PAC3","messageId":"60731737da2d713ac8184cf6","payload":-389,"queueLengthByUnitId":{"unitId":3,"queueLength":0},"queueUnitId":3,"unitId":3,"modbusRequest":{"value":1618155319851,"unitid":"3","fc":4,"address":"30775","quantity":"2","messageId":"60731737da2d713ac8184cf6"},"responseBuffer":{"data":[65535,65147],"buffer":[255,255,254,123]},"_msgid":"b27a35db.d36448","originalPayload":[65535,65147],"specification":{"options":{"byteSwap":[],"resultType":"keyvalue","singleResult":true,"msgProperty":"payload","setTopic":true},"items":[{"type":"int32be","name":"PAC3","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":"","id":0,"value":-389}]},"values":[-389],"objectResults":{"PAC3":{"type":"int32be","name":"PAC3","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":"","id":0,"value":-389}},"keyvalues":{"PAC3":-389},"arrayResults":[{"type":"int32be","name":"PAC3","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":"","id":0,"value":-389}],"buffer":[255,255,254,123]}
"Nach erster Übereinstimmung stoppen" bringt leider nix, der alte Wert bleibt gespeichert.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
hominidae
Beiträge: 1159
Registriert: Di Sep 03, 2019 4:13 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von hominidae »

Becker hat geschrieben: So Apr 11, 2021 3:35 pm wie kann ich die funktion durch change ersetzen ?
...indem Du den Node benutzt und die Regeln auf die msg anwendest.
Zum Beispiel "setze" msg.topic PAC3
für influx braucht es kein timestamp, das macht der influx node von alleine.
...ist dann allerdings der Timestamp, wann die msg im der DB eintrifft.
Auf jeden Fall nicht die Zeitpunktt des Intervalls aus der Durchschnittsberechnung.
Ich denke ja, es wäre am falschen Platz gespart, denn in der DB ist eh ein Timestamp, aber eben nicht das, wekches zum Ereignis im Datensatz/Value gehört....nicht mal annähernd.
ich hatte zu Anfangs mal alle 2 bzw. 5s in influx geschrieben, das hat den RPi3 stark ausgelastet, nachdem ich auf 1min gegangen bin ist dieser wieder zu gebrauchen, daher wollte ich dies auch beibehalten.
Hast Du mal probiert, die Daten im Batch-Mode zu senden....das ist deutlich ressourcenschonender ... gibt es auch einen Influx-Node für.
"node-red-contrib-calculate" heißt der Durchschnittswert node - komisch dass den Niemand kennt.
...zumindest ich nicht....und, wie gesagt, node-red ist event basiert, nicht daten-basiert.
Um einen Mittelwert aus N-Events zu bilden würde ich eher nicht NR benutzen, sondern die Rohdaten in eine DB packen und dort die Daten (mean-value) so abfragen.
Demo Nachricht bin ich gerade überfragt, das kommt als PAC3 raus:
...schau mal in meinen Flow oben, da erzeuge ich alle 5sec einen Random-Wert zwischen +/- 2500
"Nach erster Übereinstimmung stoppen" bringt leider nix, der alte Wert bleibt gespeichert.
Ja, war nur ein mögliches Szenario, ohne den Flow ausprobiert zu haben.
Wie gesagt, ich denke das "Problem" ist, dass Du die Wechsel zwischen be- und entladen nicht unterscheiden kannst, aus zwei Gründen:

- Du baust einen Mittelwert aus allen Nachrichten innerhalb des Intervals, egal ob Be- oder Entladung
- der Join Node nimmt immer zwei Mittelwert-Msg, ebenfalls egal, was drin steht

...wenn in diesem Intervall (2 Mittelwert-Intervalle) ein Wechsel stattfindet, bekommst Du es nicht mit, bzw. es ist dann halt jeweils enthalten und eben - da Du keine Timestamps hast - sieht es so aus, als ob es zeitgleich ist.

Deine vermutlich getroffene Annahme, dass ein Wechsel zwischen be- und entladen nicht so häufig erfolgt ist wohl falsch.
Mein Flow mit dem random Generatior treibt das zuzusagen auf die Spitze und daher erhält man gleich "Dein Problem"-Ergebnis.
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von Becker »

..ich habe den Mittelwert komplett raus geschmissen und es funktioniert nicht :roll:

gibt es in Node-Red keine Möglichkeit auf die Aktualität eines vorhandenen Wertes zu prüfen?
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
hominidae
Beiträge: 1159
Registriert: Di Sep 03, 2019 4:13 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von hominidae »

...wie gesagt, mischt der Join-Node in Deiner Konfiguration auch zwei msgs zusammen...wenn die beiden mgs also einen Wechsel zwischen be- und entladen enhalten kommt halt in Summe eine msg mit beiden topics raus.

Edit:
@Becker Schau mal, wie wäre es mit sowas:

Code: Alles auswählen

[{"id":"a0f5ff06.320f2","type":"tab","label":"Flow 6","disabled":false,"info":""},{"id":"fc269382.895dc","type":"change","z":"a0f5ff06.320f2","name":"Beladen","rules":[{"t":"delete","p":"topic","pt":"msg"},{"t":"set","p":"payload","pt":"msg","to":"[\t{\"value\": $.payload.PAC3 * -1,\t\"time\": $toMillis($now())},\t{\"topic\": \"Beladen\"}\t]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":300,"wires":[["400e065a.1a6138"]]},{"id":"6c99a461.2933bc","type":"inject","z":"a0f5ff06.320f2","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":119,"y":260,"wires":[["9b90c616.c3e298"]]},{"id":"9b90c616.c3e298","type":"random","z":"a0f5ff06.320f2","name":"","low":"-2500","high":"2500","inte":"false","property":"payload","x":289,"y":260,"wires":[["68afeb3f.e535e4"]]},{"id":"68afeb3f.e535e4","type":"change","z":"a0f5ff06.320f2","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"PAC3","tot":"msg"},{"t":"move","p":"PAC3","pt":"msg","to":"payload.PAC3","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"PAC3","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":469,"y":260,"wires":[["2979c9b5.63c066"]]},{"id":"2979c9b5.63c066","type":"switch","z":"a0f5ff06.320f2","name":"","property":"payload.PAC3","propertyType":"msg","rules":[{"t":"gte","v":"0","vt":"num"},{"t":"lt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":629,"y":260,"wires":[["45dace08.d3bdf"],["fc269382.895dc"]]},{"id":"45dace08.d3bdf","type":"change","z":"a0f5ff06.320f2","name":"Entladen","rules":[{"t":"delete","p":"topic","pt":"msg"},{"t":"set","p":"payload","pt":"msg","to":"[\t{\"value\": $.payload.PAC3,\t\"time\": $toMillis($now())},\t{\"topic\": \"Entladen\"}\t]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":220,"wires":[["400e065a.1a6138"]]},{"id":"400e065a.1a6138","type":"join","z":"a0f5ff06.320f2","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"10","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":930,"y":260,"wires":[["b2a4db6f.2d7ea8"]]},{"id":"b2a4db6f.2d7ea8","type":"debug","z":"a0f5ff06.320f2","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1079,"y":260,"wires":[]}]
...es wird aus einem PAC3 jeweils ein Datenpunkt für Influx gebaut (jeweils ein Array aus zwei Objekten - value+time und topic) ...mit dem Join-Node kannst Du die als Array-of-Arrays zusammenbauen (hier zB immer 10 Stck.) und das sollte so in den influxDB Node passen.
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Re: Kleine Hilfe bei Node-Red / JS benötigt

Beitrag von Becker »

ich glaube ich habs endlich:

Code: Alles auswählen

[{"id":"4d18ea91.fe6d24","type":"function","z":"9f6752b0.b55988","name":"Be-/Entladen","func":"var PAC3 = msg.payload.PAC3;\nvar msg1 = {};\nvar msg2 = {};\nvar Bel;\nvar Ent;\nif(PAC3 < 0 ) {\n    Bel = (PAC3 * -1);\n    Ent = 0;\n    msg1.payload = Bel;\n    msg2.payload = Ent;\n    msg1.topic = \"Beladen\";\n    msg2.topic = \"Entladen\";\n} else {\n    Ent = PAC3;\n    Bel = 0;\n    msg1.payload = Bel;\n    msg2.payload = Ent;\n    msg1.topic = \"Beladen\";\n    msg2.topic = \"Entladen\";\n}\nreturn [msg1,msg2];","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1330,"y":1800,"wires":[["30497b15.ec7ca4","fe2ee3c.6cc092"],["f551193.c377de8","fe2ee3c.6cc092"]]},{"id":"a1bb3028.40353","type":"debug","z":"9f6752b0.b55988","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1830,"y":1920,"wires":[]},{"id":"30497b15.ec7ca4","type":"ui_text","z":"9f6752b0.b55988","group":"d5972738.a29c7","order":2,"width":0,"height":0,"name":"Beladen","label":"<font color=green> Beladen","format":"{{msg.payload}} W","layout":"row-spread","x":1540,"y":1740,"wires":[]},{"id":"f551193.c377de8","type":"ui_text","z":"9f6752b0.b55988","group":"d5972738.a29c7","order":3,"width":0,"height":0,"name":"Entladen","label":"<font color=blue> Entladen","format":"{{msg.payload}} W","layout":"row-spread","x":1540,"y":1780,"wires":[]},{"id":"fe2ee3c.6cc092","type":"calculate","z":"9f6752b0.b55988","name":"Durchschnitt pro Minute","pauseType":"timed","calculation":"average","timeout":"1","timeoutUnits":"minutes","rate":"10","x":1590,"y":1840,"wires":[["203c272e.ef2308"]]},{"id":"203c272e.ef2308","type":"function","z":"9f6752b0.b55988","name":"runden","func":"var temp = msg.payload\nmsg.payload = parseFloat(temp.toFixed(1));\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1640,"y":1880,"wires":[["863d24d1.62ea3"]]},{"id":"863d24d1.62ea3","type":"join","z":"9f6752b0.b55988","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1650,"y":1920,"wires":[["a1bb3028.40353"]]},{"id":"d5972738.a29c7","type":"ui_group","name":"SBS 2.5","tab":"69ee5cda.ec1a2c","order":2,"disp":true,"width":"5","collapse":false},{"id":"69ee5cda.ec1a2c","type":"ui_tab","name":"Batterie","icon":"fa-battery-half","order":2,"disabled":false,"hidden":false}]
Muss ich morgen noch testen wenn die Werte öfters wechseln.

edit, sieht gut aus:
ds.jpg
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
Antworten