NEWS
Status vom Kostal Wechselrichter auslesen?
-
Erst mal mein Beileid:
Damit ging bei mir das Problem los.
Bei der Erstuntersuchung hat der Solarteur dann den Kostall gehimmelt und bis heute (nach etwa 2 1/2 Monaten) besteht der Fehler immer noch und alle Panels müssen vom Dach
BTT:
Hast du das im Parser richtig eingegeben?
Gruß
Rainer
-
Hi würde mich mal gerne einklinken.
Ich habe einen neuen Kostal mit der aktuellen Oberfläche beutzte im Moment den VZ zum darstellen meines Verbrauchs.
Ich lese den Kostal mittels PHP aus gibt es eine Möglichkeit das in iobrokerzubekommen.
Gruß Nils
-
Hallo NIls,
zum Auslesen des aktuellen Kostal gibt es hier im Forum ein Skript.
ich habe es noch ein wenig an meine Bedürfnisse angepasst (da ist aber noch viel Luft drin). Leider kommt man an die Fehlermelduungen nicht ran.
Die müsste man über ModBus auslesen. Die dazu notwendigen Informationen würde Kostal auf Anfrage gegen Unterschrift unter ein NDA herausgeben.
Hier "mein" Script:
! ````
// Ausleseskript Wechselrichter Kostal Piko ab Firmware v05.31 (12.10.2015)
! //Variablen
! //Leistungswerte
ID_DCEingangGesamt = 33556736; // in W
ID_Ausgangsleistung = 67109120; // in W
ID_Eigenverbrauch = 83888128; // in W
//Status
ID_Status = 16780032; // 0:Off
//Statistik - Tag
ID_Ertrag_d = 251658754; // in Wh
ID_Hausverbrauch_d = 251659010; // in Wh
ID_Eigenverbrauch_d = 251659266; // in Wh
ID_Eigenverbrauchsquote_d = 251659278; // in %
ID_Autarkiegrad_d = 251659279; // in %
//Statistik - Gesamt
ID_Ertrag_G = 251658753; // in kWh
ID_Hausverbrauch_G = 251659009; // in kWh
ID_Eigenverbrauch_G = 251659265; // in kWh
ID_Eigenverbrauchsquote_G = 251659280; // in %
ID_Autarkiegrad_G = 251659281; // in %
ID_Betriebszeit = 251658496; // in h
//Momentanwerte - PV Genertor
ID_DC1Spannung = 33555202; // in V
ID_DC1Strom = 33555201; // in A
ID_DC1Leistung = 33555203; // in W
ID_DC2Spannung = 33555458; // in V
ID_DC2Strom = 33555457; // in A
ID_DC2Leistung = 33555459; // in W
//Momentanwerte Haus
ID_HausverbrauchSolar = 83886336; // in W
ID_HausverbrauchBatterie = 83886592; // in W
ID_HausverbrauchNetz = 83886848; // in W
ID_HausverbrauchPhase1 = 83887106; // in W
ID_HausverbrauchPhase2 = 83887362; // in W
ID_HausverbrauchPhase3 = 83887618; // in W
//Netz Netzparameter
ID_NetzAusgangLeistung = 67109120; // in W
ID_NetzFrequenz = 67110400; // in Hz
ID_NetzCosPhi = 67110656;
//Netz Phase 1
ID_P1Spannung = 67109378; // in V
ID_P1Strom = 67109377; // in A
ID_P1Leistung = 67109379; // in W
//Netz Phase 2
ID_P2Spannung = 67109634; // in V
ID_P2Strom = 67109633; // in A
ID_P2Leistung = 67109635; // in W
//Netz Phase 3
ID_P3Spannung = 67109890; // in V
ID_P3Strom = 67109889; // in A
ID_P3Leistung = 67109891; // in W
!
var IPAnlage = '192.168.xxx.yyy/api/dxs.json'; // IP der Photovoltaik-Anlage
! createState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_AC_aktuell', 0);
createState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_d',0);
createState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_G',0);
createState('Messwerte.0.Solaranlage.Summenwerte.Betriebszeit',0);
createState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell',0);
createState('Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauch',0);
createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_d');
createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_G', 0);
createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_d', 0);
createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_G', 0);
createState('Messwerte.0.Solaranlage.Summenwerte.Tagesertrag', 0);
createState('Messwerte.0.Solaranlage.Summenwerte.Gesamtertrag', 0);
createState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_d', 0);
createState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_G', 0);
createState('Messwerte.0.Solaranlage.Momentanwerte.P1Spannung');
createState('Messwerte.0.Solaranlage.Momentanwerte.P2Spannung');
createState('Messwerte.0.Solaranlage.Momentanwerte.P1Strom');
createState('Messwerte.0.Solaranlage.Momentanwerte.P2Strom');
createState('Messwerte.0.Solaranlage.Momentanwerte.P1Leistung');
createState('Messwerte.0.Solaranlage.Momentanwerte.P2Leistung');
! var logging = false;
var request = require('request');
! function Piko() {
if (logging) log("Piko 5.5 auslesen");
request('http://' + IPAnlage +
'?dxsEntries=' + ID_DCEingangGesamt +
'&dxsEntries=' + ID_Ausgangsleistung +
'&dxsEntries=' + ID_Eigenverbrauch +
'&dxsEntries=' + ID_Eigenverbrauch_d +
'&dxsEntries=' + ID_Eigenverbrauch_G +
'&dxsEntries=' + ID_Eigenverbrauchsquote_d +
'&dxsEntries=' + ID_Eigenverbrauchsquote_G +
'&dxsEntries=' + ID_Ertrag_d +
'&dxsEntries=' + ID_Ertrag_G +
'&dxsEntries=' + ID_Hausverbrauch_d +
'&dxsEntries=' + ID_Hausverbrauch_G +
'&dxsEntries=' + ID_Autarkiegrad_G +
'&dxsEntries=' + ID_Autarkiegrad_d +
'&dxsEntries=' + ID_Betriebszeit +
'&dxsEntries=' + ID_P1Spannung +
'&dxsEntries=' + ID_P2Spannung +
'&dxsEntries=' + ID_P1Strom +
'&dxsEntries=' + ID_P2Strom +
'&dxsEntries=' + ID_P1Leistung +
'&dxsEntries=' + ID_P2Leistung +
'&dxsEntries=' + ID_Status +
'&dxsEntries=' + ID_DC1Leistung +
'&dxsEntries=' + ID_DC2Leistung,function (error, response, body) { if(!error && response.statusCode ==200) { if(logging) log(body); var result = JSON.parse(body).dxsEntries; setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell', result[0].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_AC_aktuell', result[1].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauch', result[2].value); setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_d', result[3].value); setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_G', result[4].value); setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_d', result[5].value); setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_G', result[6].value); setState('Messwerte.0.Solaranlage.Summenwerte.Tagesertrag', result[7].value, true); setState('Messwerte.0.Solaranlage.Summenwerte.Gesamtertrag', result[8].value, true); setState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_d', result[9].value); setState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_G', result[10].value); setState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_G', result[11].value); setState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_d', result[12].value); setState('Messwerte.0.Solaranlage.Summenwerte.Betriebszeit', result[13].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.P1Spannung', result[14].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.P2Spannung', result[15].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.P1Strom', result[16].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.P2Strom', result[17].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.P1Leistung', result[18].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.P2Leistung', result[19].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.Status', result[20].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_String1', result[21].value, true); setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_String2', result[22].value, true); } else { log("Fehler: " + error + " bei Abfrage von: " + url, "warn"); } });
}
! schedule("*/10 * 5-23 * * *", Piko);
Nur noch die IP deiner Anlage eingeben und ggf. den cron ändern. Der liest im Moment alle 10 Sekunden aus. Gruß Rainer
-
Der Isolationsfehler lässt darauf schließen das ein Stecker abgesoffen ist. Ist zwar übel aber lösbar.
Ich bin mir sicher das ich es richtig eingegeben habe. Hatte es aber nochmal neu eingeben und muss jetzt abwarten.
-
Hallo zusammen.
Ich habe auch einen Kostal Piko 4.2 mit der alten Oberfläche und einen Raspi 3 mit IO Broker.
Kann ich den Parser Adapter auch nutzen um die aktuelle AC Ausgangsleistung des WR in der VIS zu visualisieren?
Wie wäre dann die RegEx?
Danke
Gruß
Käpten Karacho
-
Lässt sich die Firmware des Kostals (bei mir 10.1) eigentlich updaten auf die neue Oberfläche?
Gesendet von meinem Nexus 5X mit Tapatalk
-
Nur durch austausch des Kommunikationsboards
Gruß
Rainer
-
Könntest du mir auf die Sprünge helfen die Werte vom PIKO mit Parser auszulesen?
Ich komme mit den regex noch nicht wirklich klar. Ausgangsleistung zb? Den Status habe ich mit Hilfe von dem anderen Thread hinbekommen, leider hängt es an den Werten.
-
Gerne,
bin im Moment unterwegs, und zu Hause habe ich einen neuen kostal, so dass ich nicht weiß, ob ich die alten regex noch habe.
Kannst du bitte in der Zwischenzeit das webui öffnen und den Quelltext dazu hier in code und spoiler tags posten,?
Alternativ mal im Forum suchen , da könnten die regex auch irgendwo stehen.
Gruß
Rainer
-
Klar. Bitte
! <title>PV Webserver</title>
! <form method="post" action="">
! | |
| |
! PIKO 5.5
! S_Power (220)
! | |
! | |
! * * *! ! ! AC-Leistung ! Energie ! aktuell ! 1392 W ! Gesamtenergie ! 33695 kWh ! ! ! Tagesenergie ! 2.06 kWh ! Status ! Einspeisen MPP ! ! * * *
! ! ! PV-Generator ! Ausgangsleistung ! <u>String 1</u> ! <u>L1</u> ! Spannung ! 649 V ! Spannung ! 232 V ! Strom ! 1.17 A ! Leistung ! 467 W ! <u>String 2</u> ! <u>L2</u> ! Spannung ! 613 V ! Spannung ! 232 V ! Strom ! 1.14 A ! Leistung ! 461 W ! <u>String 3</u> ! <u>L3</u> ! Spannung ! 0 ! V ! Spannung ! 232 V ! Strom ! 0.00 ! A ! Leistung ! 464 W ! ! * * *
! |
| |
! |
! | | RS485 Kommunikation |
| |
| | Wechselrichter |
| |
! * * *
! | |
| |
! Historie
!
! Infoseite |
! Einstellungen | |
! </form> -
Welche Werte willst du denn haben?
Status:
Status.*\n.*\n(.+)<\/td>\n
Leistung aktuell
aktuell.*\n.*\n(\d*)
Gesamtenergie:
Gesamtenergie.*\n.*\n(\d*)
Tagesenergie:
Tagesenergie.*\n.*\n(\d*\.\d*)
Alles nur mit den Werten in aus dem Quelltext getestet!
Viele Werte erhältst du auch mit:
#FFFFFF">\n(\d*)<
Du musst dann nur im Parser über die Änderung des Wertes bei "Num" das xte Ergebnis ausgeben lassen. (Achtung 0=1.Ergebnis)
Gruß
Rainer
-
Vielen Dank für deine schnelle Anwort, nur leider kommen dort keine Werte bei mir raus.
Die ip ist korrekt, da ich den Status korrekt angezeigt bekomme…
Status aber mit :
(?:\s+([a-zA-Z äöüÄÖÜ]+))
-
Ich kann es leider nicht mehr testen.
Gruß
Rainer
-
Kleines Update:
Die Werte werden nun ausgelesen- aber nicht in die dazugehörigen Objekte geschrieben. Im Parser Adapter werden die richtigen Werte angezeigt, wenn ich auf den „Schraubenschlüssel“ drücke. Also unten im Ergebnis steht alles korrekt. Die Objekte bleiben aber leer- sprich Parser schreibt das Ergebnis nicht in die dazugehörigen Objekte, die Parser selbst erstellt.
Woran liegt’s?
-
Bitte Screenshot von der Konfiguration der abfragen
im Parser adapter
Gruß
Rainer
-
Ich klinke mich hier auch mal ein.
Bekomme mittlerweile auch die Werte im Schraubenschlüssel Symbol, aber leider nicht in den Objekten.
Auch unter regex101 wird das Ergebnis angezeigt.
Sollte eigendlich nur mit einer iOBroker Einstellung zu tun haben oder?
Rollen und Typ hab ich alle Kombinationen durchprobiert. Keine Anzeige.
Ich denke es liegt evtl. noch an den Leerzeichen vor dem jeweiligen Wert? (Bild)
Angezeigt wird's im Schraubenschlüssel Symbol und unter regex101 wenn ich das eingebe:
#FFFFFF">\n(..\d*)
Aber wie gesagt in den Objekten nicht. Kann mir hier jemand beim Code helfen so das es auch iOBroker kapiert?
6001_ohne_titel2.jpeg
6001_3.jpeg -
-
habs nun selber geschafft…
-
Hallo
Ich habe es auch soweit hinbekommen, jedoch - wie schon bekannt - werden keine Werte im Objekt angezeigt bzw. abgefüllt!?
Jemand eine Lösung hierzu? Denn wenn ich keine Werte im Objekt habe, kann ich diese auch nicht für die Visualisierung nutzen.
Danke und Gruss
Vazi
-
Hallo
Ich habe es auch soweit hinbekommen, jedoch - wie schon bekannt - werden keine Werte im Objekt angezeigt bzw. abgefüllt!?
Jemand eine Lösung hierzu? Denn wenn ich keine Werte im Objekt habe, kann ich diese auch nicht für die Visualisierung nutzen.
Danke und Gruss
Vazi `
Habe den "Fehler" gefunden…!!
Die Werte sind ja unter javascirpt.0 aufgeführt! Von dort kann ich die Werte nun ja für alles mögliche holen.