NEWS
Wechselrichter auslesen
-
Hab es ja nicht mal hinbekommen die payload in ein textfile zu schreiben
Im debug Fenster (siehe Screenshot) wird ed anscheinend direkt zerlegt.
Heute abend probier ich es nochmal. Ggf. bekomme ich die HTML-Ausgabe
Danke
Rainer
Gesendet von meinem Cynus T7 mit Tapatalk
-
Hallo,
ich meinte es anders: Kannst du mir die Ausgabe des Nodes "Wechselrichter auslesen" mal auf debug legen. Das was da rauskommt, hätte ich gern (Copy Paste).
Gruß
Pix
-
Ok, hier das cut and paste:
! ````
22.4.2015, 18:33:47[26486bcb.d9b794]
[msg.payload] : (string)
<title>PV Webserver</title>
! <form method="post" action="">
!
| |
| | PIKO 5.5
Helios (255) | |
! /tmp/power-inverter1.values
PHOTOVOLTAICS_DC1U=$( cat /tmp/power-inverter1.values | grep Spannung | head -1 | cut -f2 -d" " )
PHOTOVOLTAICS_DC2U=$( cat /tmp/power-inverter1.values | grep Spannung | head -2 | tail -1 | cut -f2 -d" " )
PHOTOVOLTAICS_DC1I=$( cat /tmp/power-inverter1.values | grep Strom | head -1 | cut -f2 -d" " | awk '{printf "%d\n",$11000}' )
PHOTOVOLTAICS_DC2I=$( cat /tmp/power-inverter1.values | grep Strom | head -2 | tail -1 | cut -f2 -d" " | awk '{printf "%d\n",$11000}' )
PHOTOVOLTAICS_DC1P=$(( $PHOTOVOLTAICS_DC1U * $PHOTOVOLTAICS_DC1I / 1000 ))
PHOTOVOLTAICS_DC2P=$(( $PHOTOVOLTAICS_DC2U * $PHOTOVOLTAICS_DC2I / 1000 ))
! PHOTOVOLTAICS_ACCURP=$( cat /tmp/power-inverter1.values | grep aktuell | cut -f2 -d" " )
PHOTOVOLTAICS_ACTOTP=$( cat /tmp/power-inverter1.values | grep Gesamtenergie | cut -f5 -d" " )
PHOTOVOLTAICS_DAILYP=$( cat /tmp/power-inverter1.values | grep Tagesenergie | cut -f2 -d" " )
:update the system variables in the HomeMatic
wget $COMMONWGETARGS "http://192.168.1.999/addons/db/state.cgi?item=PV.DC1&value=$PHOTOVOLTAICS_DC1P"
wget $COMMONWGETARGS "http://192.168.1.999/addons/db/state.cgi?item=PV.DC2&value=$PHOTOVOLTAICS_DC2P"
wget $COMMONWGETARGS "http://192.168.1.999/addons/db/state.cgi?item=PV.DAILYP&value=$PHOTOVOLTAICS_DAILYP"
wget $COMMONWGETARGS "http://192.168.1.999/addons/db/state.cgi?item=PV.AC&value=$PHOTOVOLTAICS_ACCURP"notwendiges Paket: html2text
sudo apt-get install html2text
! Das hab ich mir aber auch nur geklaut und modifiziert.
! jetzt heisst es:
@Homoran:
! > ich will jetzt mal selber etwas basteln `
! Gruß
! Rainer | </form>
! ```` -
Ich fürchte ich bin damit doch (noch) überfordert.
Die ausgabe in Datei habe ich jetzt hinbekommen.
einmal als html:
! ````
! <title>PV Webserver</title>
! <form method="post" action="">
! | |
! | |PIKO 5.5
! Helios (255)
|
|
! |! * * *
! |
! | |
! |AC-Leistung |
|Energie |
! | |
! |aktuell |
4217 |
W |Gesamtenergie |
13106 |
kWh |
|! | |
! ||
|
|Tagesenergie |
18.31 |
kWh |
|! | |
! |Status |
Einspeisen MPP |
|! | |
! |
! |! * * *
! |
! | |
! |
! |PV-Generator |
|Ausgangsleistung |
|
|! | |
! |<u>String 1</u> |
|
|<u>L1</u> |
|
|
|! |
Spannung |
284 |
V |Spannung |
232 |
V |
|! | |
! |Strom |
7.57 |
A |Leistung |
1402 |
W |
|! | |
! |<u>String 2</u> |
|
|<u>L2</u> |
|
|
|! |
Spannung |
313 |
V |Spannung |
234 |
V |
|! | |
! |Strom |
7.65 |
A |Leistung |
1417 |
W |
|! | |
! |<u>String 3</u> |
|
|<u>L3</u> |
|
|
|! |
Spannung |
0 |
V |
Spannung |
231 |
V |
|! | |
! |Strom |
0.00 |
A |
Leistung |
1398 |
W |
|! | |
! |
! | |! * * *
! |
! | |
! |
! | |
RS485 Kommunikation |
! | |
! | |
Wechselrichter |
| |
! * * *
! | |
! | |Einstellungen ! </form>
! ````und einmal die Ausgabe nach der Umwandlung in text:
! ````
Einstellungen
n
n
! Infoseite
e
e
! Einstellungen
!
kWh! W
! Gesamtenergie
! 13106
kWh!
!! Tagesenergie
! 18.10
kWh! Status
! Einspeisen MPP!
! ie
! 18.10
kWh! Status
! Einspeisen MPP! PV-Generator
! Ausgangsleistung
! String 1
! L1
! Spannung
! 287
V
! Spannung
! 232
V!
! Strom
! 7.62
A
! Leistung
! 1428
W! String 2
! L2
! Spannung
! 316
V
! Spannung
! 234
V!
! Strom
! 7.69
A
! Leistung
! 1432
W! String 3
! L3
! Spannung
! 0V
! Spannung
! 232
V!
! Strom
! 0.00A
! Leistung
! 1421
W! RS485 Kommunikation
! Wechselrichter
! HistorieInfoseite
! Einstellungen
! Einstellungen
! ````
Mit dem Zerschneiden und Auslesen komme ich nicht weiter.Ich habe mit den Filtern im html node rumgespielt und [bgcolor="#FFFFFF"] eingegeben, dann bekomme ich alle Werte in Feldern mit weißem Hintergrund als csv Datei, aber das reicht leider nicht.
vielleicht kann mir das doch mal jemand zeigen. :?
Danke Rainer
-
Man kann mit regex rausholen:
[{"id":"f07e3f63.0f81c","type":"function","name":"Extract values","func":"// remove all \"new line\" und spaces\nvar text = msg.payload.replace(/\\r\\n/g, '').replace(/\\s/g, '');\n\nmsg.payload = '';\n// Klone original message um timestamp zu behalten\nvar msg1 = JSON.parse(JSON.stringify(msg));\nvar msg2 = JSON.parse(JSON.stringify(msg));\nvar msg3 = JSON.parse(JSON.stringify(msg));\nvar msg4 = JSON.parse(JSON.stringify(msg));\n\n// extract \"aktuell\"\nvar r = text.match(/aktuell<\\/td><[\\w\\d#=\"]*>([0-9.]*)<\\/td>/);\nmsg1.payload = r ? r[1] : '';\n\n// extract \"Gesamtenergie\"\nr = text.match(/Gesamtenergie<\\/td><[\\w\\d#=\"]*>([0-9.]*)<\\/td>/);\nmsg2.payload = r ? r[1] : '';\n\n// extract \"Tagesenergie\"\nr = text.match(/Tagesenergie<\\/td><[\\w\\d#=\"]*>([0-9.]*)<\\/td>/);\nmsg3.payload = r ? r[1] : '';\n\n// extract \"Spannung\" als Array.\nr = text.match(/Spannung<\\/td><[\\w\\d#=\"]*>([0-9.]*)<\\/td>/g);\n\n// Ich bin zu faul um jetzt 6 outputs zu machen, deswegen schiebe ich die alle in array\nmsg4.payload = [];\nif (r) {\n for (var i = 0; i < r.length; i++) {\n msg4.payload.push(r[i].match(/<\\/td><[\\w\\d#=\"]*>([0-9.]*)<\\/td>/)[1]);\n }\n}\nmsg4.payload = JSON.stringify(msg4.payload);\n\n\nreturn [msg1, msg2, msg3, msg4];","outputs":"4","valid":true,"x":644,"y":169,"z":"13d62bc7.ec29d4","wires":[["3c7bba4c.c38446"],["3c7bba4c.c38446"],["3c7bba4c.c38446"],["3c7bba4c.c38446"]]},{"id":"3c7bba4c.c38446","type":"debug","name":"","active":true,"console":"false","complete":"false","x":866,"y":162,"z":"13d62bc7.ec29d4","wires":[]}]
Output:
4217 13106 18.31 ["284","232","313","234","0","231"]
-
Ich hab was ähnliches gebaut um einen Piko 5.5 auszulesen:
http://flows.nodered.org/flow/7424deb5bb78f48945e7
Funktioniert ohne externe Skripte. Allerdings kommt man nur an die Leistungswerte ran. Die Spannung- und Stromwerte kann man nicht auslesen, das die HTML Datei vom Wechselrichter nicht valide ist. Dafür bräuchte man einen HTMLTidy Node für NodeRed.
-
Hallo MehrCurry,
war so frei deinen Flow zu kopieren, doch komme ich nicht ganz klar wie ich den einrichten muss.
Muss ja IP anpassen und wohl auch das Kennwort irgendwo eintragen.
Denke mal die IP muss ich im Feld http request anpassen im Feld URL
Muss ich in HM# und PIKO# auch was anpassen?
-
Hallo HKF8770,
folgende Einstellungen musst Du anpassen, um den Flow nutzen zu können:
Voraussetzung ist ein laufender MQTT Broker. Diesen kannst Du in ioBroker einrichten. Die Daten gibts Du später in der Config von node-red ein.
- http request
URL > auf die IP Deines Wechselrichters einstellen Use basic authentication ? > Haken setzen Username > User des Wechselrichters (Standard beim PIKO ist pvserver) Password > Passwort (Standard ist pvwr)
-
MQTT Config
Doppelklick auf einen der MQTT-Nodes
es öffnet sich ein Fenster zur Konfiguration (gilt für alle 5 Nodes)
Du kannst den bestehenden Eintrag mit dem Stift bearbeiten
Trage hier die Werte des MQTT Brokers ein. Bei der Installation auf dem selben Server bei Broker "localhost" eintragen und ggf. Authentifizierung.
-
Optional: Json deaktivieren und Zahlen verwenden
Ich fand die Einbindung von Json wenig hilfreich und habe daher die drei Funktionen durch folgende ersetzt, um daraus Zahlenwerte zu bekommen.
msg.payload = parseInt(msg.payload); return msg;
-
Danke für die supper Erklärung…da blick selbst ich es. Dann liegt es wohl am MQTT Broker, den hab ich nicht.
Dann mal schauen ob ich klar komme.
-
Guten morgen. Hat das zufällig schon mal jemand für eine SMA Webbox gemacht?