PV Modul mehr als ein WR

Anfragen zum Erstellen von Modulen, Fragen zu Modulen
doppeldecker1678
Beiträge: 29
Registriert: Mi Mai 06, 2020 11:30 am

Re: PV Modul mehr als ein WR

Beitrag von doppeldecker1678 »

Hallo zusammen,

das N.-PV-Modul beschäftigt mich auch gerade, weil bei einem Freund mehrere Ausrichtungen über Modulwechselrichter und insgesamt (aktuell) 4 Sonoff POW laufen. Diese wiederum sollen dann auf Tasmota laufen. Somit kann man ja bis zu 2 über JSON in die 2 PV-Module eintragen.
Es sind aber 4...

Wir haben folgende Idee: Abseits der openWB mittels Node-Red alle Sonoff auslesen und saldieren. Das ginge sogar ohne Tasmota über mqtt. Die saldierten Werte dann ebenfalls über Node-Red mittels "http response" zur Abfrage durch openWB als JSON-Objekt zur Vefügung stellen.
Kann das mal grundsätzlich jemand einschätzen? Ich sehe nicht viel, was im Weg sein könnte, lediglich bei der Bereitstellung des JSON-Objektes bin ich unsicher, weil noch nie gemacht.

Wird natürlich alles hier geteilt, ist ja Ehrensache...
Das Auslesen der Sonoff's ist einfach, dazu später mehr. Genauso lassen sich bspw. beliebig viele Froniusse summieren oder eben alle WR, die über Node-Red (also MQTT, HTTP) auszulesen wären.

Bereitstellung JSON-String für Request durch openWB:
Müsste helfen: https://cookbook.nodered.org/http/serve-json-content

Gruß
Sascha
doppeldecker1678
Beiträge: 29
Registriert: Mi Mai 06, 2020 11:30 am

Re: PV Modul mehr als ein WR

Beitrag von doppeldecker1678 »

Ist erledigt. Anbei der Flow für Node-Red. Logik und Skalierung müsste beim Betrachten der Flows klar werden.
Völlig bescheuert habe ich noch die Summierung der Einzelwerte gelöst, aber dafür sind die Werte im Array mit der Herkunft als Schüsselwort gekennzeichnet. Dadurch fängt man auch Timing Fehler ab und es werden sicher immer alle Werte von 1 bis n addiert. So oft ändert sich die PV-Anlage ja nicht.

Node-Red ist ja standardmäßig auf dem raspi dabei, man muss nur noch dafür sorgen, dass es immer mit startet:

sudo systemctl enable nodered.service

Froniusse sind schonmal inkludiert. Bei mir läuft das sauber, ich bitte um Verbesserungsvorschläge/Korrekturen/konstruktive Kritik. Ich behaupte nicht, ich könne programmieren, aber genau dafür war Node-Red ja gedacht ;-)

Der Flow unten ist stets aktuell soweit es meine Arbeit angeht....Einstellungen openWB siehe Bild
NATÜRLICH MUSS JEDER SEINE IP-ADRESSEN und sonstigen Pfade und Adressen pflegen...
einstellunegn open WB.jpg
ACHTUNG!!! Ich habe da wohl die Tagesenergien aggregiert, aber es müssen die TOTALEN-Energien aggregiert werden, Flow am 19.05.2021 geupdated!
Dateianhänge
tasmota ls n-te PV.txt
(6.23 KiB) 168-mal heruntergeladen
Zuletzt geändert von doppeldecker1678 am Mi Mai 19, 2021 11:00 am, insgesamt 10-mal geändert.
mode
Beiträge: 44
Registriert: Sa Nov 07, 2020 10:48 am

Re: PV Modul mehr als ein WR

Beitrag von mode »

Ich sammle die PV Echtzeitdaten meiner PV Anlagen mit Nodered, fasse sie zusammen und sende sie per MQTT zur Openwb. Klappt super und Openwb "sieht" nur eine PV Anlage angebunden per MQTT.
rouddae
Beiträge: 11
Registriert: Mo Okt 19, 2020 1:04 pm

Re: PV Modul mehr als ein WR

Beitrag von rouddae »

Hallo und danke für die Anregungen,

ich versuche mich gerade daran meinen 2. WR (Kostal Piko alt) per Node-Red auszulesen und die Werte an die opwnWB weiterzuleiten. Habe mir dazu so einiges zusammengesucht und bekomme auch Daten in Node-Red.
Was mir nicht gelingt ist es diese an die openWB weiterzugeben, hat jemand eine Idee?
Diese Daten erhalte ich über parse http
msg.payload : string[246]
"{"acPowerCurrent":0,"totalEnergy":44446,"dailyEnergy":0.95,"status":"Aus","string1voltage":0,"string1current":0,"string2voltage":0,"string2current":0,"line1voltage":0,"line1power":0,"line2voltage":0,"line2power":0,"line3voltage":0,"line3power":0}"


Beste Grüße!
Dateianhänge
pv2.JPG
flow piko.txt
(4.11 KiB) 173-mal heruntergeladen
doppeldecker1678
Beiträge: 29
Registriert: Mi Mai 06, 2020 11:30 am

Re: PV Modul mehr als ein WR

Beitrag von doppeldecker1678 »

Moin,

habe mir deinen flow angesehen... sieht eigentlich gut aus. Was liefert der Debugger am JSON-Konverter? Ich denke, was Du gepostet hast, ist der String, oder?
rouddae
Beiträge: 11
Registriert: Mo Okt 19, 2020 1:04 pm

Re: PV Modul mehr als ein WR

Beitrag von rouddae »

Hallo und danke fürs Feedback,

genau es kommen aber sowohl string als auch object Daten. Anbei die Debug Ausgabe am JSON Konverter
28/01/2021, 12:52:19node: 631e7f66.99167
msg.payload : Object
{ acPowerCurrent: 153, totalEnergy: 44446, dailyEnergy: 0.33, status: "Einspeisen(MPP)", string1voltage: 348 … }
28/01/2021, 12:52:20node: 631e7f66.99167
msg.payload : string[277]
"{"acPowerCurrent":153,"totalEnergy":44446,"dailyEnergy":0.33,"status":"Einspeisen(MPP)","string1voltage":348,"string1current":0.2,"string2voltage":536,"string2current":0.21,"line1voltage":232,"line1power":0,"line2voltage":231,"line2power":0,"line3voltage":231,"line3power":153}"
Zusätzlich bekomme ich noch eine Debug Meldung:
28/01/2021, 13:00:23node: openwb
msg : string[18]
"No response object"
diese bezieht sich wohl auf den http request node, muss dieser konfiguriert werden?

Ich bin mir tatsächlich unsicher ob die openWB die Daten mit meiner config an der openWB so auslesen kann. Muss ich die entsprechende URL (http://192.168.178.37:1880/piko) erst erstellen oder generiert die sich automatisch durch nodeRed?
rouddae
Beiträge: 11
Registriert: Mo Okt 19, 2020 1:04 pm

Re: PV Modul mehr als ein WR

Beitrag von rouddae »

Update 2:
Natürlich gehört in die config des ersten WR kein 2. WR rein, es sieht jetzt tatsächlich danach aus als liefe es.

anbei noch einmal der aktuelle Flow für Interessierte:

Code: Alles auswählen

[{"id":"fbdcd5ed.f2fab8","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"a9031dbf.3e3aa","type":"function","z":"fbdcd5ed.f2fab8","name":"parse http","func":"acPowerCurrent = parseInt(msg.payload[14].replace(/([^a-z0-9]+)/gi, ''));\ntotalEnergy = parseInt(msg.payload[17].replace(/([^A-Z0-9]+)/gi, ''));\ndailyEnergy = parseInt(msg.payload[26].replace(/([^a-z0-9]+)/gi, ''))/100;\nstring1voltage = parseInt(msg.payload[56].replace(/([^a-z0-9]+)/gi, ''));\nstring1current = parseInt(msg.payload[65].replace(/([^a-z0-9]+)/gi, ''))/100;\nstring2voltage = parseInt(msg.payload[82].replace(/([^a-z0-9]+)/gi, ''));\nstring2current = parseInt(msg.payload[91].replace(/([^a-z0-9]+)/gi, ''))/100;\nline1voltage = parseInt(msg.payload[59].replace(/([^a-z0-9]+)/gi, ''));\nline1power = parseInt(msg.payload[68].replace(/([^a-z0-9]+)/gi, ''));\nline2voltage = parseInt(msg.payload[85].replace(/([^a-z0-9]+)/gi, ''));\nline2power = parseInt(msg.payload[94].replace(/([^a-z0-9]+)/gi, ''));\nline3voltage = parseInt(msg.payload[111].replace(/([^a-z0-9]+)/gi, ''));\nline3power = parseInt(msg.payload[120].replace(/([^a-z0-9]+)/gi, ''));\nstatus = msg.payload[32].replace(/\\r?\\n|\\r/g, '').replace(/\\s/g, \"\");\n\n\nif (Number.isNaN(acPowerCurrent) === true){\n    acPowerCurrent = 0;\n}\nif (Number.isNaN(totalEnergy) === true){\n    totalEnergy = -1;\n}\nif (Number.isNaN(dailyEnergy) === true){\n    dailyEnergy = 0;\n}\nif (Number.isNaN(string1voltage) === true){\n    string1voltage = 0;\n}\nif (Number.isNaN(string1current) === true){\n    string1current = 0;\n}\nif (Number.isNaN(string2voltage) === true){\n    string2voltage = 0;\n}\nif (Number.isNaN(string2current) === true){\n    string2current = 0;\n}\nif (Number.isNaN(line1voltage) === true){\n    line1voltage = 0;\n}\nif (Number.isNaN(line1power) === true){\n    line1power = 0;\n}\nif (Number.isNaN(line2voltage) === true){\n    line2voltage = 0;\n}\nif (Number.isNaN(line2power) === true){\n    line2power = 0;\n}\nif (Number.isNaN(line3voltage) === true){\n    line3voltage = 0;\n}\nif (Number.isNaN(line3power) === true){\n    line3power = 0;\n}\n\nmsg.payload = {\n    \"acPowerCurrent\" : acPowerCurrent,\n    \"totalEnergy\" : totalEnergy,\n    \"dailyEnergy\" : dailyEnergy,\n    \"status\" : status,\n    \"string1voltage\" : string1voltage,\n    \"string1current\" : string1current,\n    \"string2voltage\" : string2voltage,\n    \"string2current\" : string2current,\n    \"line1voltage\" : line1voltage,\n    \"line1power\" : line1power,\n    \"line2voltage\" : line2voltage,\n    \"line2power\" : line2power,\n    \"line3voltage\" : line3voltage,\n    \"line3power\" : line3power\n}\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;","outputs":1,"noerr":0,"x":1150,"y":140,"wires":[["6c8eca8c.3914e4"]]},{"id":"a9c16f25.f6396","type":"http request","z":"fbdcd5ed.f2fab8","name":"kostal","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.178.81/index.fhtml","tls":"","persist":false,"proxy":"","authType":"basic","x":790,"y":140,"wires":[["598908b3.3d6bb8"]]},{"id":"598908b3.3d6bb8","type":"html","z":"fbdcd5ed.f2fab8","name":"","property":"payload","outproperty":"payload","tag":"td","ret":"text","as":"single","x":950,"y":140,"wires":[["a9031dbf.3e3aa"]]},{"id":"828a50e6.02143","type":"inject","z":"fbdcd5ed.f2fab8","name":"5 sec","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":580,"y":120,"wires":[["a9c16f25.f6396"]]},{"id":"631e7f66.99167","type":"debug","z":"fbdcd5ed.f2fab8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1600,"y":360,"wires":[]},{"id":"6c8eca8c.3914e4","type":"json","z":"fbdcd5ed.f2fab8","name":"","property":"payload","action":"","pretty":false,"x":1430,"y":220,"wires":[["631e7f66.99167"]]},{"id":"edf7d527.a93928","type":"http in","z":"fbdcd5ed.f2fab8","name":"","url":"/piko","method":"get","upload":false,"swaggerDoc":"","x":570,"y":180,"wires":[["a9c16f25.f6396"]]}]




Update:

Es kommen nun Daten an, aber in der openWB Web Darstellung werden sie nicht mit dem 1. WR aufsummiert, übersehe ich etwas?
Anbei ein Screenshot, ab 12.57 habe ich den 2. WR mit JSON Abfrage hinzugefügt, seitdem stimmt die Leistung des 2. WR überein (153W) der Tagesertrag stammt wiederrum vom 1. WR (Plenticore) und die dort angeschlossene Batterie wird ebenfalls nicht mehr ausgelesen.
Dateianhänge
Module.JPG
openWB.JPG
doppeldecker1678
Beiträge: 29
Registriert: Mi Mai 06, 2020 11:30 am

Re: PV Modul mehr als ein WR

Beitrag von doppeldecker1678 »

Es scheint nun, als ob du den Piko zweimal abfragst, im 1. und 2. P-Modul.
Lass mal im ersten PV-Modul die xxx.xxx.xxx.37 komplett raus.
rouddae
Beiträge: 11
Registriert: Mo Okt 19, 2020 1:04 pm

Re: PV Modul mehr als ein WR

Beitrag von rouddae »

Habe ich gemacht und es läuft tatsächlich jetzt, vielen Dank Doppeldecker!
Nächste Kuriosität, ich habe dauerhaft 153W zu viel und bin mal wieder auf der Suche ...

Open WB log sagt folgendes:
loadvars.sh: Zeile 1116: ((: == 1 : Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \"== 1 \").
pv1watt 0 pv2watt -153 pvwatt -153 ladeleistung 0 llalt 16 nachtladen 1 nachtladen 0 minimalA 6 maximalA 16
[...]
modules/wr2_json/main.sh: Zeile 6: ((: > 5 : Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \"> 5 \").
In Node Red wird korrekterweise 0W angezeigt
"{"acPowerCurrent":0,"totalEnergy":44447,"dailyEnergy":1.45,"status":"Aus","string1voltage":0,"string1current":0,"string2voltage":0,"string2current":0,"line1voltage":0,"line1power":0,"line2voltage":0,"line2power":0,"line3voltage":0,"line3power":0}"
doppeldecker1678
Beiträge: 29
Registriert: Mi Mai 06, 2020 11:30 am

Re: PV Modul mehr als ein WR

Beitrag von doppeldecker1678 »

beim openWB-Log bin ich raus, aber die Ursache scheint beim WR1 zu liegen, nicht beim piko via Node-Red. Warte mal ab, was morgen passiert, war ja schon duster als du das in den Griff bekommen hast.

Aber für den Log da gibt es ja absolute Experten hier.

Gruß
Sascha
Antworten