NEWS
Kostal Wechselrichter mit Firmware 3.71
-
Moin...
Ich nochmal.... Habe das Script jetzt komplett am laufen.
Es ist jetzt an einen Kostal Piko 10.1 mit alter Firmware ver. 5.44 angepaßt...
So ich dieses im Quelltext vermerken?SG
Timo -
Hallo allerseits.
Kann man das auf 3 Strings angepasste Script irgendwo downloaden, bzw kannst Du es hier noch posten?Ich bin neu bei ioBroker und versuche meinen 12Jahre alten Kostal Piko 10.1 mit 3 Strings
auszulesen.Vielen Dank schonmal.
-
@dbox83 sagte in Kostal Wechselrichter mit Firmware 3.71:
meinen 12Jahre alten Kostal Piko
welche Firmware?
@sirtiger sagte in Kostal Wechselrichter mit Firmware 3.71:
Firmware ver. 5.44
müstte schon die neue sein.
-
Nein, das ist noch die alte Firmware mit der "dos Oberfläche" wie im post von "bahnuhr"
am 14 Aug 2020, 09:02.Wo kann man das Script mit 3 Strings downloaden?
Bisher konnte ich es nur herauskopieren wenn es jemand direkt im post geschrieben hatte.
Danke schonmal.
-
@dbox83 was ergibt denn bei dir die Abfrage vom Kostal?
-
@homoran
Ich bekomme die Werte für 2 strings.Wo kann man das Script denn grundsätzlich downloaden???
-
@dbox83 sagte in Kostal Wechselrichter mit Firmware 3.71:
Wo kann man das Script denn grundsätzlich downloaden???
nirgends!
ich versuche es gerade für dich zu rekonstruieren.
Dazu brauche ichbaber deine Hilfe sonst wird das nichts. -
@dbox83 sagte in Kostal Wechselrichter mit Firmware 3.71:
Ich bekomme die Werte für 2 strings.
wie sieht das json/xml oder was direkt vom Kostal kommt bei dir aus?
unaufgearbeitet! -
-
Achso, ich dachte man kann irgendwo im Downloadbereich dieses Script downloaden und ich finde es nur nicht.
Ich bin ganz neu mit iobroker und auch in diesem Forum.
Aktuell nutze ich dieses Script:
// Photovoltaik: Piko 5.5 Anlage (alte Firmware) // Danke an homoran für den regex // @bahnuhr; 03/2019 Dieter Müller //Variaben var idaktuell = 'javascript.0.Photovoltaik.Leistung_aktuell'; var idTag = 'javascript.0.Photovoltaik.Tagesleistung'; var idall = 'javascript.0.Photovoltaik.Leistung_gesamt'; var idP1 = 'javascript.0.Photovoltaik.Leistung_Strang1'; var idP2 = 'javascript.0.Photovoltaik.Leistung_Strang2'; var NameAnlage = 'pvserver'; // Nutzername der Photovoltaik-Anlage var PassAnlage = 'pvwr'; // Password der Photovoltaik-Anlage var IPAnlage = '192.168.176.211'; // IP der Photovoltaik-Anlage var logging = false; var request = require('request'); function Piko() { log("Piko 10.1 auslesen"); var results = []; request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) { var d = body.toString(); if (logging) log (d); var reg = /#FFFFFF">[^\d]+([^<]+)/g var z = reg.exec(d); while(z != null) { if (isNaN(z[1])) { if (logging) log("keine Zahl= "+ z[1]); z[1] = 0; } else { if (logging) log("Zahl= "+ z[1]); parseFloat(z[1]); } results[results.length] = z[1]; z = reg.exec(d); log (z[1]); } if (logging) log("results= "+ results); // Werte zuordnen var pwr = results[0]; // Energie aktuell in W var day = results[2]; // Tagesenergie in kWh var all = results[1]; // Gesamtenergie in kWh var v1 = results[3]; // PV Generator Nr. 1 - Spannung in V var i1 = results[5]; // PV Generator Nr. 1 - Strom in A var p1 = parseInt(v1 * i1); var v2 = results[7]; // PV Generator Nr. 2 - Spannung in V var i2 = results[9]; // PV Generator Nr. 2 - Strom in A var p2 = parseInt(v2 * i2); if (logging) log("Leistung aktuell= " + pwr + " W"); if (logging) log("Tagesleistung= " + day + " kWh"); if (logging) log("Leistung gesamt= " + all + " kWh"); if (logging) log("Leistung Strang 1= " + p1 + " W"); if (logging) log("Leistung Strang 2= " + p2 + " W"); setState(idaktuell, parseFloat(pwr)); setState(idTag, parseFloat(day)); setState(idall, parseFloat(all)); setState(idP1, parseFloat(p1)); setState(idP2, parseFloat(p2)); }); } schedule("2,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () { log ("Auslöser: Schedule"); Piko(); }); schedule("3 0 * * *", function () { // Variablen löschen um 00:03 Uhr setState('javascript.0.Photovoltaik.Tagesleistung', 0); });
MOD-EDIT: Code in code-tags gesetzt!
Das sind die Ausgen:
31.8.2023, 20:12:00.005 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: Auslöser: Schedule
31.8.2023, 20:12:00.005 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: Piko 10.1 auslesen
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 69360
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 29.41
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 219
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 229
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 0.00
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 0
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 218
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 228
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 0.00
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 0
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 218
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 226
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 0.00
31.8.2023, 20:12:00.078 [info ]: javascript.0 (31437) script.js.Kostal_auslesen: 0 -
@dbox83 sagte in Kostal Wechselrichter mit Firmware 3.71:
Aktuell nutze ich dieses Script:
und das musst du aufbohren mit den Variablen für den 3. String
-
Nach dem Post von SirTiGer
am 31 Dec 2022, 14:06 hatte ich gehofft, dass er einfach nochmal seinen Code hier einstellt.....Hier der Quelltext von meinem Wechselrichter:
<!DOCtype HTML PUBLIC "-//W3C//Dtd HTML 4.0 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> <meta name="Generator" CONTENT="ChrisB"> <title>PV Webserver</title> </head> <body nof="(MB=(DefaultMasterborder, 65, 60, 150, 10), L=(HomeLayout, 700, 600))" bgcolor="#EAF7F7" text="#000000" link="#0033CC" vlink="#990099" alink="#FF0000" topmargin=0 leftmargin=0 marginwidth=0 marginheight=0> <form method="post" action=""> <table cellspacing="0" cellpadding="0" width="770" nof="ly"> <tr><td height="5"></td></tr> <tr><td width="190" height="55"></td> <td width="400"> <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif" size="+3"> PIKO 10.1 <br><font size="+1"> Friedrich (255) </font> </font> </td> <td><img alt="Logo" height="42" width="130" src="KSE.gif"></td> </tr> </table> <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif"> <table Border="0" width="100%"><tr> <td width="150"></td> <td> <hr> </td> </tr></table> <table cellspacing="0" cellpadding="0" width="770"> <tr><td></td></tr> <tr> <td width="190"></td> <td colspan="2"> <b>AC-Leistung</b></td> <td> </td> <td> <b>Energie</b></td></tr> <tr><td height="10"></td></tr> <tr> <td width="190"></td> <td width="100"> aktuell</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="140">  W</td> <td width="100"> Gesamtenergie</td> <td width="70" align="right" bgcolor="#FFFFFF"> 69360</td> <td width="50">  kWh</td> <td> </td></tr> <tr height="2"><td></td></tr> <tr> <td width="190"></td> <td width="100">  </td> <td width="70" align="right">  </td> <td width="140"> </td> <td width="100"> Tagesenergie</td> <td width="70" align="right" bgcolor="#FFFFFF"> 29.41</td> <td width="50">  kWh</td> <td> </td></tr> <tr height="5"><td></td></tr> <tr> <td width="190"></td> <td width="100"> Status</td> <td colspan="4"> Aus</td> <td> </td></tr> <tr height="8"><td></td></tr> <tr><td colspan="7"> <table align="top" width="100%"><tr> <td width="182"></td> <td><hr size="1"></font></td></tr> <tr><td height="5"></td></tr></table> </td></tr> <tr> <td width="190"></td> <td colspan="2"> <b>PV-Generator</b></td> <td width="140"> </td> <td colspan="2"> <b>Ausgangsleistung</b></td> <td width="30"> </td> <td> </td></tr> <tr><td height="10"></td></tr> <tr> <td width="190"></td> <td width="100"> <u>String 1</u></td> <td width="70"> </td> <td width="140"> </td> <td width="95"> <u>L1</u></td> <td width="70"> </td> <td width="30"> </td> <td> </td></tr> <tr> <td width="190"></td> <td width="100"> Spannung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="140">  V</td> <td width="100"> Spannung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="30">  V</td> <td> </td></tr> <tr height="2"><td></td></tr> <tr valign="top" align="left"> <td width="190"> </td> <td width="100"> Strom</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="140">  A</td> <td width="100"> Leistung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="30">  W</td> <td> </td></tr> <tr height="22"><td></td></tr> <tr> <td width="190"></td> <td width="100"> <u>String 2</u></td> <td width="70"> </td> <td width="140"> </td> <td width="100"> <u>L2</u></td> <td width="70"> </td> <td width="30"> </td> <td> </td></tr> <tr> <td width="190"></td> <td width="100"> Spannung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="140">  V</td> <td width="100"> Spannung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="30">  V</td> <td> </td></tr> <tr height="2"><td></td></tr> <tr valign="top" align="left"> <td width="190"> </td> <td width="100"> Strom</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="140">  A</td> <td width="100"> Leistung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="30">  W</td> <td> </td></tr> <tr height="22"><td></td></tr> <tr> <td width="190"></td> <td width="100"> <u>String 3</u></td> <td width="70"> </td> <td width="140"> </td> <td width="100"> <u>L3</u></td> <td width="70"> </td> <td width="30"> </td> <td> </td></tr> <tr> <td width="190"></td> <td width="100"> Spannung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="140">  V</td> <td width="95"> Spannung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="30">  V</td> <td> </td></tr> <tr height="2"><td></td></tr> <tr valign="top" align="left"> <td width="190"> </td> <td width="95"> Strom</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="140">  A</td> <td width="95"> Leistung</td> <td width="70" align="right" bgcolor="#FFFFFF"> x x x </td> <td width="30">  W</td> <td> </td></tr> <tr><td height="15"></td></tr> <tr><td colspan="7"> <table align="top" width="100%"> <tr><td width="182"></td> <td><hr size="1"></font></td> </tr><tr><td height="5"></td></tr></table> </td></tr></table> <table cellspacing="0" cellpadding="0" width="770"> <tr><td width="190"></td> <td><font face="Arial,Helvetica,Geneva,Sans-serif"> <b>RS485 Kommunikation</b></td></tr> <tr><td height="8"></td></tr> <tr><td width="190"></td> <td><font face="Arial,Helvetica,Geneva,Sans-serif"> Wechselrichter  <INPUT TYPE="Text" NAME="edWrNr" VALUE="255" SIZE="3" MAXLENGTH="3"> <input type="submit" value="Anzeigen/Aktualisieren"> </td></tr><tr><td height="10"></td></tr> </table> </td></tr></table></font> <hr> <table cellspacing="0" cellpadding="0" width="770"> <tr><td height="5"></td></tr> <tr><td width="190"></td> <td width="440"> <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif"> <a href="LogDaten.dat">Historie</a>     <a href="Info.fhtml">Infoseite</a>     <a href="BA.fhtml"></a>     <a href="igak.fhtml"></a> </font></td> <td align="right"> <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif"> <a href="Solar2.fhtml">Einstellungen</a></font></td> <td width="50"></td> </tr></table></font> </form> </body> </html>
-
Hier nochmal das bisherige Script in Code-Tags:
// Photovoltaik: Piko 5.5 Anlage (alte Firmware) // Danke an homoran für den regex // @bahnuhr; 03/2019 Dieter Müller //Variaben var idaktuell = 'javascript.0.Photovoltaik.Leistung_aktuell'; var idTag = 'javascript.0.Photovoltaik.Tagesleistung'; var idall = 'javascript.0.Photovoltaik.Leistung_gesamt'; var idP1 = 'javascript.0.Photovoltaik.Leistung_Strang1'; var idP2 = 'javascript.0.Photovoltaik.Leistung_Strang2'; var NameAnlage = 'pvserver'; // Nutzername der Photovoltaik-Anlage var PassAnlage = 'pvwr'; // Password der Photovoltaik-Anlage var IPAnlage = '192.168.176.211'; // IP der Photovoltaik-Anlage var logging = false; var request = require('request'); function Piko() { log("Piko 10.1 auslesen"); var results = []; request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) { var d = body.toString(); if (logging) log (d); var reg = /#FFFFFF">[^\d]+([^<]+)/g var z = reg.exec(d); while(z != null) { if (isNaN(z[1])) { if (logging) log("keine Zahl= "+ z[1]); z[1] = 0; } else { if (logging) log("Zahl= "+ z[1]); parseFloat(z[1]); } results[results.length] = z[1]; z = reg.exec(d); log (z[1]); } if (logging) log("results= "+ results); // Werte zuordnen var pwr = results[0]; // Energie aktuell in W var day = results[2]; // Tagesenergie in kWh var all = results[1]; // Gesamtenergie in kWh var v1 = results[3]; // PV Generator Nr. 1 - Spannung in V var i1 = results[5]; // PV Generator Nr. 1 - Strom in A var p1 = parseInt(v1 * i1); var v2 = results[7]; // PV Generator Nr. 2 - Spannung in V var i2 = results[9]; // PV Generator Nr. 2 - Strom in A var p2 = parseInt(v2 * i2); if (logging) log("Leistung aktuell= " + pwr + " W"); if (logging) log("Tagesleistung= " + day + " kWh"); if (logging) log("Leistung gesamt= " + all + " kWh"); if (logging) log("Leistung Strang 1= " + p1 + " W"); if (logging) log("Leistung Strang 2= " + p2 + " W"); setState(idaktuell, parseFloat(pwr)); setState(idTag, parseFloat(day)); setState(idall, parseFloat(all)); setState(idP1, parseFloat(p1)); setState(idP2, parseFloat(p2)); }); } schedule("2,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () { log ("Auslöser: Schedule"); Piko(); }); schedule("3 0 * * *", function () { // Variablen löschen um 00:03 Uhr setState('javascript.0.Photovoltaik.Tagesleistung', 0); });
-
-
-
Na klar, ich lese hier fleißig mit:
Im Script befindet sich folgendes:
var v1 = results[3]; // PV Generator Nr. 1 - Spannung in V var i1 = results[5]; // PV Generator Nr. 1 - Strom in A var p1 = parseInt(v1 * i1); var v2 = results[7]; // PV Generator Nr. 2 - Spannung in V var i2 = results[9]; // PV Generator Nr. 2 - Strom in A var p2 = parseInt(v2 * i2);
Wenn dies funktioniert, dann vielleicht wie folgt erweitern:
var v3 = results[11]; // PV Generator Nr. 3 - Spannung in V var i3 = results[13]; // PV Generator Nr. 3 - Strom in A var p3 = parseInt(v3 * i3);
Habs nicht getestet (weil bei mir nicht notwendig).
Und weiter unten dann logisch noch log und setstate erweitern.Bitte probieren.
-
@dbox83 im prinzip musst du die Variablen p1,p2 um p3 erweitern das Array hat bei dir weitete Einträge.
leider kann ich dir die Zahlen nicht zuordnen, da ichbzwar den quelltext, aber ichtvdie zugehörige Maske mit den Werten sehe.im prinzip sind v1, i1 das 3. und 5. Element, v2,i2 das 7. und 9. Elemrnt, dann müssten v3 und i3 das 11. und 13. Element sein.
warum @Bahnuhr rechnet obwohl W auch in der Ausgabe vorkommt, weiß ich nicht mehr. kann sein, dass es DC Werte sind undcer AC rechnet.
mein problem ist, dass unter regex101.com dauernd der Zwischenspeicher gelöscht wird, wenn ich hier schreibe
-
@bahnuhr danke, passt zu meiner Theorie
-
Ich habe jetzt mal so erweitert:
// Photovoltaik: Piko 5.5 Anlage (alte Firmware) // Danke an homoran für den regex // @bahnuhr; 03/2019 Dieter Müller //Variaben var idaktuell = 'javascript.0.Photovoltaik.Leistung_aktuell'; var idTag = 'javascript.0.Photovoltaik.Tagesleistung'; var idall = 'javascript.0.Photovoltaik.Leistung_gesamt'; var idP1 = 'javascript.0.Photovoltaik.Leistung_Strang1'; var idP2 = 'javascript.0.Photovoltaik.Leistung_Strang2'; var NameAnlage = 'pvserver'; // Nutzername der Photovoltaik-Anlage var PassAnlage = 'pvwr'; // Password der Photovoltaik-Anlage var IPAnlage = '192.168.176.211'; // IP der Photovoltaik-Anlage var logging = false; var request = require('request'); function Piko() { log("Piko 10.1 auslesen"); var results = []; request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) { var d = body.toString(); if (logging) log (d); var reg = /#FFFFFF">[^\d]+([^<]+)/g var z = reg.exec(d); while(z != null) { if (isNaN(z[1])) { if (logging) log("keine Zahl= "+ z[1]); z[1] = 0; } else { if (logging) log("Zahl= "+ z[1]); parseFloat(z[1]); } results[results.length] = z[1]; z = reg.exec(d); log (z[1]); } if (logging) log("results= "+ results); // Werte zuordnen var pwr = results[0]; // Energie aktuell in W var day = results[2]; // Tagesenergie in kWh var all = results[1]; // Gesamtenergie in kWh var v1 = results[3]; // PV Generator Nr. 1 - Spannung in V var i1 = results[5]; // PV Generator Nr. 1 - Strom in A var p1 = parseInt(v1 * i1); var v2 = results[7]; // PV Generator Nr. 2 - Spannung in V var i2 = results[9]; // PV Generator Nr. 2 - Strom in A var p2 = parseInt(v2 * i2); var v3 = results[11]; // PV Generator Nr. 3 - Spannung in V var i3 = results[12]; // PV Generator Nr. 3 - Strom in A var p3 = parseInt(v3 * i3); if (logging) log("Leistung aktuell= " + pwr + " W"); if (logging) log("Tagesleistung= " + day + " kWh"); if (logging) log("Leistung gesamt= " + all + " kWh"); if (logging) log("Leistung Strang 1= " + p1 + " W"); if (logging) log("Leistung Strang 2= " + p2 + " W"); if (logging) log("Leistung Strang 3= " + p3 + " W"); setState(idaktuell, parseFloat(pwr)); setState(idTag, parseFloat(day)); setState(idall, parseFloat(all)); setState(idP1, parseFloat(p1)); setState(idP2, parseFloat(p2)); setState(idP3, parseFloat(p3)); }); } schedule("2,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () { log ("Auslöser: Schedule"); Piko(); }); schedule("3 0 * * *", function () { // Variablen löschen um 00:03 Uhr setState('javascript.0.Photovoltaik.Tagesleistung', 0); });
-
@homoran sagte in Kostal Wechselrichter mit Firmware 3.71:
warum @Bahnuhr rechnet obwohl W auch in der Ausgabe vorkommt, weiß ich nicht mehr. kann sein, dass es DC Werte sind undcer AC rechnet.
Weil ich W haben will.
Und kostal liefern V und A.