NEWS
Status vom Kostal Wechselrichter auslesen?
-
@MatthiasUlrich sagte in Status vom Kostal Wechselrichter auslesen?:
Ich hab das dann wohl falsch verstanden, ich dachte der Script ist für die neue Software.
Ich hab den Piko 10.1, ich hoffe das funktioniert trotzdem.wenn du noch die gute alte "DOS-Oberfläche" hast, dann klappt das
-
Hallo,
du hattest mich um meine Einstellungen im Parser Adapter gefragt.
Ich sende es hier, da ich nicht weiß wie man ein Bild als Nachricht versendet.Denke kann auch für andere interessant sein.
Glaub das das RegEx nicht perfekt ist, ist mehr Try&Error von mir.
Funktioniert aber schon seit langem ohne Probleme bei mir.Gruß
Gesamt: (\s\s\d\d\d\d\d)
Aktuell: aktuell\D*\d\d\D*\s\s(\d*)
Status: <td colspan="4">(?:\s+([a-zA-Z äöüÄÖÜ]+))Hier mal Exemplarich einer meiner drei Wechselrichter:
-
Hallo, Ich danke dir, Das hat gut funktioniert.
geht also doch ohne Skript
Mit dem Input hab ich auch die Tagesenergie noch rausbekommen:
Tagesenergie\D*\d\d\D*\s\s(\d*\D\d*)
Danke !!!
-
Dein Skript lief bei mir mit einem 5.5er Kostal auch immer einwandfrei bis irgendwann dieser Fehler auftrat:
script.js.Energie.Kostal_auslesen: TypeError: d.eq is not a function
Seitdem geht leider nix mehr.
Kannst du mir da vielleicht bei weiterhelfen?VG
Stefan -
@PRozAC sagte in Status vom Kostal Wechselrichter auslesen?:
Dein Skript lief bei mir mit einem 5.5er Kostal auch immer einwandfrei bis irgendwann dieser Fehler auftrat:
script.js.Energie.Kostal_auslesen: TypeError: d.eq is not a function
Seitdem geht leider nix mehr.
Kannst du mir da vielleicht bei weiterhelfen?VG
Stefanzeige mal dein Script
-
/* Photovoltaik: Piko 5.5 Anlage Diese Script stammt aus dem Homematic Forum. Von wem weiß ich nicht mehr. Lief bei mir als ccu.io.Script einwandfrei. Dieses Script habe ich nun auf iobroker umgeschrieben. @bahnuhr 02.01.2017 Dieter Müller */ //Variaben var idaktuell = 'javascript.0.Status.Photovoltaik.Leistung_aktuell'; var idTag = 'javascript.0.Status.Photovoltaik.Tagesleistung'; var idall = 'javascript.0.Status.Photovoltaik.Leistung_gesamt'; var idP1 = 'javascript.0.Status.Photovoltaik.Leistung_Strang1'; var idP2 = 'javascript.0.Status.Photovoltaik.Leistung_Strang2'; var NameAnlage = 'pvserver'; // Nutzername der Photovoltaik-Anlage var PassAnlage = 'mocken'; // Password der Photovoltaik-Anlage var IPAnlage = '192.168.0.40'; // IP der Photovoltaik-Anlage var logging = true; // Ab hier nix mehr ändern createState(idaktuell, { type: 'number', name: 'Leistung aktuell', min: 0, def: 0, role: 'value' }); createState(idTag, { type: 'number', name: 'Tagesleistung', min: 0, def: 0, role: 'value' }); createState(idall, { type: 'number', name: 'Leistung gesamt', min: 0, def: 0, role: 'value' }); createState(idP1, { type: 'number', name: 'Leistung Strang 1', min: 0, def: 0, role: 'value' }); createState(idP2, { type: 'number', name: 'Leistung Strang 2', min: 0, def: 0, role: 'value' }); function Piko() { var cheerio = require('cheerio'); var request = require('request'); if (logging) log("Piko 5.5 auslesen"); request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) { $ = cheerio.load(body); var d = $("td"); var pwr = parseFloat(d.eq(14).text().trim()); var day = parseFloat(d.eq(26).text().trim()); var all = parseFloat(d.eq(17).text().trim()); var v1 = d.eq(56).text().trim(); var i1 = d.eq(65).text().trim(); var p1 = v1 * i1; var v2 = d.eq(82).text().trim(); var i2 = d.eq(91).text().trim(); var p2 = v2 * i2; if (isNaN(pwr)) pwr = 0; if (isNaN(p1)) p1 = 0; if (isNaN(p2)) p2 = 0; if (logging) log("Leistung aktuell= " + pwr); if (logging) log("Tagesleistung= " + day); if (logging) log("Leistung gesamt= " + all); if (logging) log("Leistung Strang 1= " + p1); if (logging) log("Leistung Strang 2= " + p2); setState(idaktuell, pwr); setState(idTag, day); setState(idall, all); setState(idP1, p1); setState(idP2, p2); }); } schedule("* * * * *", function () { log ("Auslöser: Schedule"); Piko(); });
Vielen Dank für deine Hilfe!
Hab gerade scheinbar dein aktuelles? Script von 03/2019 gefunden. Das alte ging wohl nicht mehr wegen cheerio.
Teste gleich mal das „neue“ Skript. -
@PRozAC sagte in Status vom Kostal Wechselrichter auslesen?:
/* Photovoltaik: Piko 5.5 Anlage Diese Script stammt aus dem Homematic Forum. Von wem weiß ich nicht mehr. Lief bei mir als ccu.io.Script einwandfrei. Dieses Script habe ich nun auf iobroker umgeschrieben. @bahnuhr 02.01.2017 Dieter Müller */ //Variaben var idaktuell = 'javascript.0.Status.Photovoltaik.Leistung_aktuell'; var idTag = 'javascript.0.Status.Photovoltaik.Tagesleistung'; var idall = 'javascript.0.Status.Photovoltaik.Leistung_gesamt'; var idP1 = 'javascript.0.Status.Photovoltaik.Leistung_Strang1'; var idP2 = 'javascript.0.Status.Photovoltaik.Leistung_Strang2'; var NameAnlage = 'pvserver'; // Nutzername der Photovoltaik-Anlage var PassAnlage = 'mocken'; // Password der Photovoltaik-Anlage var IPAnlage = '192.168.0.40'; // IP der Photovoltaik-Anlage var logging = true; // Ab hier nix mehr ändern createState(idaktuell, { type: 'number', name: 'Leistung aktuell', min: 0, def: 0, role: 'value' }); createState(idTag, { type: 'number', name: 'Tagesleistung', min: 0, def: 0, role: 'value' }); createState(idall, { type: 'number', name: 'Leistung gesamt', min: 0, def: 0, role: 'value' }); createState(idP1, { type: 'number', name: 'Leistung Strang 1', min: 0, def: 0, role: 'value' }); createState(idP2, { type: 'number', name: 'Leistung Strang 2', min: 0, def: 0, role: 'value' }); function Piko() { var cheerio = require('cheerio'); var request = require('request'); if (logging) log("Piko 5.5 auslesen"); request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) { $ = cheerio.load(body); var d = $("td"); var pwr = parseFloat(d.eq(14).text().trim()); var day = parseFloat(d.eq(26).text().trim()); var all = parseFloat(d.eq(17).text().trim()); var v1 = d.eq(56).text().trim(); var i1 = d.eq(65).text().trim(); var p1 = v1 * i1; var v2 = d.eq(82).text().trim(); var i2 = d.eq(91).text().trim(); var p2 = v2 * i2; if (isNaN(pwr)) pwr = 0; if (isNaN(p1)) p1 = 0; if (isNaN(p2)) p2 = 0; if (logging) log("Leistung aktuell= " + pwr); if (logging) log("Tagesleistung= " + day); if (logging) log("Leistung gesamt= " + all); if (logging) log("Leistung Strang 1= " + p1); if (logging) log("Leistung Strang 2= " + p2); setState(idaktuell, pwr); setState(idTag, day); setState(idall, all); setState(idP1, p1); setState(idP2, p2); }); } schedule("* * * * *", function () { log ("Auslöser: Schedule"); Piko(); });
Vielen Dank für deine Hilfe!
Hab gerade scheinbar dein aktuelles? Script von 03/2019 gefunden. Das alte ging wohl nicht mehr wegen cheerio.
Teste gleich mal das „neue“ Skript.richtig, cheerio ging bei mir nicht mehr.
Teste mal das neue.
Auch hier, kannst du dieses mal reinhängen.
Ich schaue es mir dann an. -
Das ist das aktuellste, welches ich von dir finden konnte
// 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.Status.Photovoltaik.Leistung_aktuell'; var idTag = 'javascript.0.Status.Photovoltaik.Tagesleistung'; var idall = 'javascript.0.Status.Photovoltaik.Leistung_gesamt'; var idP1 = 'javascript.0.Status.Photovoltaik.Leistung_Strang1'; var idP2 = 'javascript.0.Status.Photovoltaik.Leistung_Strang2'; var NameAnlage = 'pvserver'; // Nutzername der Photovoltaik-Anlage var PassAnlage = 'mocken'; // Password der Photovoltaik-Anlage var IPAnlage = '192.168.0.40'; // IP der Photovoltaik-Anlage var logging = false; var request = require('request'); function Piko() { log("Piko 5.5 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); } 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("*/10 * * * * *", function () { // Variablen löschen um 00:03 Uhr setState('javascript.0.Status.Photovoltaik.Tagesleistung', 0); });
Bislang kommen Werte in den Datenpunkten an. Soweit so gut
-
Ja, das nehme ich auch.
Bei mir läuft es. -
@blackplanet333
Danke sehr für diesen Beitrag, ich spiele schon seit Tagen mit der Regex und bekomm es nicht hin.
Heute beim suchen bin ich über Deinen Beitrag gestolpert und sieheda, alles funktioniert beim ersten mal.
SUPER DANKE -
Hallo zusammen,
das Ganze müsste doch auch bei einem Piko 7.0 funktionieren, oder?!
auf meinem läuft die FW 5.5, für welche das Skript ja gedacht ist.
Bei mir kommen hinten aber keine Werte raus, hat hier jemand eine Idee woran es liegen kann?
Bei den Objekten bleiben Nullen stehen
Beste Grüße
Los_Fritzos -
@Los_Fritzos sagte in Status vom Kostal Wechselrichter auslesen?:
hat hier jemand eine Idee woran es liegen kann?
hier nicht, aber vielleicht das log
-
@Homoran im log steht folgendes:
-
@bahnuhr
Hallo ich habe eine Piko 3.0 mit der Firmware 6.02
Ich habe nun die beiden Skripte und den Parser versucht und komme nicht weiter.
Beim aktuellsten Skript bekomme ich nur 0 angzeigt.
Versuche mich nun seit 4 wochen in Iokroker einzuarbeiten aber das übersteigt meine Fähigkeiten.
Grüße Gernot -
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
Hallo ich habe eine Piko 3.0 mit der Firmware 6.02
also größer 5.31 und damit nicht mehr die alte "DOS-Oberfläche"
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
Ich habe nun ... den Parser versucht und komme nicht weiter.
Der kann dann auch nicht mehr funktionieren
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
Ich habe nun die beiden Skripte
welche beiden?
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
Beim aktuellsten Skript bekomme ich nur 0 angzeigt.
wo kommt die 0?
welches "aktuelle" Skript?
-
@Homoran
Ich hab mal bilder gemacht
Ich bekomme keine Werte bei den Objekten -
@scout1978 Das ist für die alte Firmware - genau wie die regex
steht ja oben auch im Skript drin -
-
@Homoran
Ip und Benutzer habe ich eingefügt...
Gibt es denn eine möglichkeit für die neue Firmware?
Ich finde weit und breit nichts.... Aber das schwächste Glied sitz ja bekanntlich an der Tastatur....;) -
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
Ip und Benutzer habe ich eingefügt...
Wo?
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
Gibt es denn eine möglichkeit für die neue Firmware?
habe ich dir doch gerade gepostet!
@scout1978 sagte in Status vom Kostal Wechselrichter auslesen?:
das schwächste Glied sitz ja bekanntlich an der Tastatur
sieht so aus!
mach doch mal den Spoiler auf