NEWS
Status vom Kostal Wechselrichter auslesen?
-
Ich lerne ja auch noch und habe das jetzt mal zum Anlass genommen zu versuchen die Klartextumwandlung des Status' mit in das Skript zu übernehemn. Das war/ist fast mein erster Versuch mit nativem JS - ohne Blockly.
Leider geht es nicht ganz so wie ich wollte - den letzten Fehler bekomme ich nicht weg.
Jetzt benötige ich auch Hilfe. Vielleicht liest @paul53 hier "zufällig" mit.
In Zeile 174 kommt Komma erwartet - das übersteigt meine Kenntnisse und ist der Grund warum ich mit Blockly arbeite, da gibt es keine Kommata und SemikolaZur Erklärung:
Ich wollte nach dem parsen des json das 20. Ergebnis im Array (müsste der Status als Ziffer sein) abfangen in Text wandeln, in eine Variable schreiben und den Wert dann in den Datenpunkt schreiben. -
Hab's gefunden, da war noch eine geschweifte Klammer und ein Semikolon zu viel.
Dann gab es noch den ein oder anderen kleinen Fehler.
Habe jetzt alles korrigiert. Bei mir läuft es jetzt so:PS auch bei mir lief ein Skript noch, das gar nicht mehr existierte.
restart der js-Instanz hat geholfen -
@Homoran
wow was für ein Aufand.... Gerade zurück vom Spielplatz....
versuche das später in einer ruhigen Minute alles zu verstehen und zu testen....
Habe demnächst Termin mit unserer Solarfirma... Meine Anforderungen sind identisch.... Ich gebe dann laut wenn ich da mehr weis.
Bis Später
Grüße Gernot -
@Homoran
Bei mir klappts noch nicht...
```
javascript.0 2020-08-13 20:53:18.021 info (5941) script.js.Piko_Neu: registered 0 subscriptions and 1 schedule
javascript.0 2020-08-13 20:53:17.945 info (5941) Start javascript script.js.Piko_Neu
javascript.0 2020-08-13 20:53:17.426 info (5941) received all states
javascript.0 2020-08-13 20:53:17.302 info (5941) received all objects
javascript.0 2020-08-13 20:53:16.534 info (5941) requesting all objects
javascript.0 2020-08-13 20:53:16.531 info (5941) requesting all states
javascript.0 2020-08-13 20:53:16.448 info (5941) starting. Version 4.6.17 in /opt/iobroker/node_modules/iobroker.javascript, node: v10.22.0, js-controller: 3.1.6
javascript.0 2020-08-13 20:53:09.962 info (2592) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
javascript.0 2020-08-13 20:53:09.960 info (2592) terminating
javascript.0 2020-08-13 20:53:09.958 info (2592) Stop script script.js.Piko_Neu
javascript.0 2020-08-13 20:53:09.957 info (2592) Got terminate signal TERMINATE_YOURSELF
javascript.0 2020-08-13 20:50:26.259 info (2592) script.js.Piko_Neu: registered 0 subscriptions and 1 schedule
javascript.0 2020-08-13 20:50:26.243 info (2592) Start javascript script.js.Piko_Neu
javascript.0 2020-08-13 20:50:20.612 info (2592) Stop script script.js.Piko_Neu
javascript.0 2020-08-13 20:46:40.994 info (2592) Stop script script.js.Skript_1
javascript.0 2020-08-13 20:46:38.134 info (2592) Stop script script.js.Skript_1
javascript.0 2020-08-13 20:46:37.474 info (2592) script.js.Skript_1: registered 0 subscriptions and 1 schedule
javascript.0 2020-08-13 20:46:37.334 info (2592) Start javascript script.js.Skript_1Habe das Skript 1 gelöscht.... Dann das Piko Neu erstellt..ip eingefügt....instanz neu gestartet....Momentanwerte kommen nicht...weil dunkel?
-
@scout1978
Da ist was aufgetaucht -
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
Momentanwerte kommen nicht...weil dunkel?
Natürlich! Momentan wird nichts erzeugt.
Ist das alles was nicht funktioniert?
Dann musst du ein paar Solarmodule gegen Lunarmodule tauschen. -
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
Da ist was aufgetaucht
Code 0 sollte "aus" heißen.
Da ist noch ein FehlerDa muss statt
function (error, response, body) { if(!error && response.statusCode ==200) { if(logging) log(body); var result = JSON.parse(body).dxsEntries; var Zustand = 'aus'; if (result[20].val == 0) { Zustand = 'aus'; } else if (result[20].value== 1) { Zustand = 'Leerlauf'; } else if (result[20].value == 2) { Zustand = 'Anfahren'; } else if (result[20].value == 3) { Zustand = 'Einspeisen MPP'; } else if (result[20].value == 4) { Zustand = 'Einspeisen abgeregelt'; } else if (result[20].value == 7) { Zustand = 'Isolationsmessung'; } else { Zustand = (String('Code ') + String('' + result[20].value)); }
In der Zeile mit
result[20].val == 0
richtig heißenresult[20].value == 0
, so wie in den anderen Zeilen danach -
@Homoran
Wow
Es klappt alles!!!! Vielen Dank!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -
Hallo zusammen,
ich nutze auch seit gut 6 Monaten das Javascript zum Auslesen der Werte.
Hat schon mal jemand die Events aus dem Piko BA ausgelesen? Mir dauert die Alarmierung aus dem Support-Portal von Kostal eindeutig zu lange.http://<IP>/#/info/events
Viele Grüße,
Kay -
@kaybau sagte in Status vom Kostal Wechselrichter auslesen?:
Hat schon mal jemand die Events aus dem Piko BA ausgelesen? Mir dauert die Alarmierung aus dem Support-Portal von Kostal eindeutig zu lange.
http://<IP>/#/info/eventsfür welche Version soll das gelten?
sieht für mich nicht aus wieAusleseskript Wechselrichter Kostal Piko ab Firmware v05.31
-
Piko BA 8 mit FW 2.32 UI 06.41
-
@kaybau dann gehört das hier nicht in den Thread.
Mach bitte einen neuen auf mit deutlichem Hinweis auf die alte FW -
Hi @Homoran , Ich nutze das skript "// Ausleseskript Wechselrichter Kostal Piko ab Firmware v05.31 (12.10.2015)" aus dem Anfang von diesem Thread.
Und es ist die neueste FW , die für den Piko 8 BA verfügbar ist.
Wie liest Du bei deiner FW die Events aus?
VG,
Kay -
@kaybau sagte in Status vom Kostal Wechselrichter auslesen?:
Wie liest Du bei deiner FW die Events aus?
gar nicht
Das ist unheimlich komplex, da du in der api erstmal sämtliche IDs der Events identifizieren musst und dann abfragen.
-
@kaybau
wäre das etwas für dich?Ich hatte mal einen ganz fiesen Störfall, da hat mir jemand (ich muss zu meiner Schande gestehen, dass ich nicht mehr weiß wer ) ein Skript zum auslesen der events geschrieben.
Habe das eben noch ein wenig optimiert um es in dem json-table widget darstellen zu können -
@Homoran : Das sieht so aus, als ist es mehr als nur einen Test wert
-
@kaybau sagte in Status vom Kostal Wechselrichter auslesen?:
@Homoran : Das sieht so aus, als ist es mehr als nur einen Test wert
Dann mach mal
Dieses
liest minütlich die Fehlermeldungen aus dem Piko (FW > v05.31) aus und schreibt sie in Datenpunkte.
Diese müssen noch selber angelegt werden:
Ich selber kann nicht so toll Skripten, habe nur das JSON noch etwas umformatiert.
Der aktuellste Event liegt unter Info0 ältere werden immer weiter nach hinten geschoben.
Wenn ich es könnte würde ich alles in ein großes json packen, damit im widget gescrollt werden kann. Im Moment bekommt man in der "Tabelle" nur eine Zeile:
Man muss also im Prinzip mehrere Widgets untereinander setzen, damit man auch noch ältere events sieht
Um auf irgendwelche events zu reagieren, könnte man jetzt ein Skript/Blockly schreiben, dass bei Änderung von Info0 die entsprechenden Informationen aus dem json extrahiert und als Meldung (eMail/Telegram), Sprachansage oder großes rotes blinkendes Widget in VIS ausgibt
-
Hi @Homoran ,
ich hab Dein skript bezgl des Eventauslesens übernommen. Was soll ich sagen?? Es läuft und liefert die letzten Werte.
Jetzt hab ich noch ne Telegram-Alerting draufgesetzt. Alles gut!
Danke,
Kay -
@Homoran said in Status vom Kostal Wechselrichter auslesen?:
Zum Kostal Wechselrichter gibt es hier schon Threads.
Entscheidend ist die Firmwareversion deines Piko.
Im MOment bekomme ich es so hin:
Gruß
Rainer
Hallo Rainer
Ich lese schon seit Stunden das Forum hoch und runter, finde aber mein Problem nirgends beschrieben.
Wollte Kostal WR Picco auslesen um eine ähnlich schöne Ansicht zu basten wie Du. Da der Adapter bei mir nicht funktioniert wollte ich mit Parser arbeiten, den ich bei iobroker jedoch noch nicht benutzt habe.Ich schaffe es, die Webseite mit Login und Passwort als Aufruf im parser anzulegen. Wenn ich im Parser in die Bleistift Edit Funktion einsteige, bekomme ich den richtigen Seitenquelltext des Picco angezeigt.
Ich schaffe es im Regex mit dem Seitenquellcode die richtigen Stellen per Anker usw. zu detektieren. Wenn ich die korrekte Regex Zeile dann im Parser einsetze kommen nie Ergebnisse, egal welches Beispiel ich bisher so probiert habe.
Jetzt habe ich noch was von minified js gelesen. Wollte mein Seitenquellcode minimieren, aber auf allen Minimierseiten bekomme ich Fehlermeldungen, wenn ich den Seitenquelltext 1:1 rein kopiere.
Nachdem ich jetzt schon 6 Stunden verbrannt habe hoffe ich auf einen klein Tipp von Dir.
Anbei die Adaptereinstellung:
und hier die funktionierende Regex Variante:
und hier noch der Quellcode...
code_text <!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 4.2 <br><font size="+1"> Namenlos (92) </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"> 146</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"> 13.91</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> </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"> </td> <td width="70" align="right" bgcolor="#EAF7F7"> </td> <td width="140">  </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"> </td> <td width="70" align="right" bgcolor="#EAF7F7"> </td> <td width="140">  </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="92" 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="330"> <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif"> <a href="LogDaten.dat">Historie</a>       <a href="Info.fhtml">Infoseite</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>
Danke Euch vorab.
Ich muss jetzt aufhören, sonst werde ich noch kirre...Gruss
Atlantis
-
@Atlantis sagte in Status vom Kostal Wechselrichter auslesen?:
Da der Adapter bei mir nicht funktioniert
Warum nicht?
Was kommt im Debug log?