NEWS
[Frage] Piko Wechslerichter 5.5 (Firmware 5.31) auslesen
-
Hallo,
Danke für die schnellen Antworten.
@Rainer: Wir hatte schon mal an anderer Stelle (Homematic-Forum?) festgestellt, dass wir unterschiedliche Firmware-Versionen haben. Ich fürchte, das wird bei mir so nicht laufen. Denke aber mit der neuen Version muss es einfacher gehen. Es geht doch "nur" darum, einen String auf bestimmte Werte hin zu untersuchen.
@paul23: Habe deinen Code mal eingefügt. Er läuft zwar ohne Fehler durch, aber es werden keine Werte eingefügt. Gibt es eine Möglichkeit zu prüfen, ob der http-Befehl überhaupt den gewünschten String wiedergibt? Oder anders, kann ich mir irgendwie ansehen, ob in 'body' überhaupt was drin steht?
Strizz
-
-
kann ich mir irgendwie ansehen, ob in 'body' überhaupt was drin steht? `
Wenn````
var logging = true; -
Hallo paul53,
gaaanz herzlichen Dank. Es funktioniert! Ich bin happy!
Ich möchte deine Hilfe ja nicht überstrapazieren. Aber hast du noch einen Tip für mich? Jetzt läuft das Programm ja alle 5 Minuten Tag und Nacht. Wie kann ich das Programm morgens mit Sonnenaufgang starten, dann tagsüber alle 5 Minuten ausführen und mit Sonnenuntergang beenden? Geht das?
Strizz
-
Er läuft zwar ohne Fehler durch, aber es werden keine Werte eingefügt. `
@Strizz:Es funktioniert! Ich bin happy! `
Wo lag der Fehler ?
@Strizz:Wie kann ich das Programm morgens mit Sonnenaufgang starten, dann tagsüber alle 5 Minuten ausführen und mit Sonnenuntergang beenden? `
Das sollte so funktionieren (nicht getestet):... var timer = null; schedule({astro: "sunrise"}, function () { timer = schedule("3,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () { log ("Auslöser: Schedule"); Piko(); }); }); schedule({astro: "sunset"}, function () { if(timer) clearSchedule(timer); });
-
Hallo paul53,
danke für die schnelle Antwort. Allerdings scheint etwas nicht zu stimmen:
Wenn ich den Code so reinkopiere , wie er ist, bekomme ich die Fehlermeldung:
SyntaxError: Unexpected token )
Wenn ich in der letzten Zeile dann noch eine geschweifte Klammer einfüge, verschwindet Syntax-Error Meldung. Statt dessen erfolgt jedoch die Meldung
schedule callback missing
Da stehe ich dann wieder auf dem Schlauch.
Kannst du noch mal helfen?
Strizz
-
Sorry, es fehlt die geschweifte Klammer (zu) hinter "sunset". Habe es korrigiert.
-
Super! Danke für die schnelle Hilfe.
Strizz
-
Damit die Erfassung nicht erst ab nächsten Morgen funktioniert, sollte das Skript ergänzt werden:
... // Script start if(isAstroDay()) { timer = schedule("3,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () { log ("Auslöser: Schedule"); Piko(); }); }
oder Du vereinfachst das Skript:
... schedule("3,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () { if(isAstroday()) { log ("Auslöser: Schedule"); Piko(); } });
-
Hallo paul53,
die Sonne scheint bei uns zwar nicht mehr, so dass eh erst morgen weiter aufgezeichnet wird. Ich habe das Script aber geändert.
Werde das Script jetzt mal einige Zeit testen und dann hier insgesamt veröffentlichen. Vielleicht hat der eine oder andere ja denselben Wechselrichter.
Nochmal besten Dank.
Strizz
-
OH, war wohl zu schnell. Erhalte jetzt die Fehlermeldung
javascript.0 ReferenceError: isAstroday is not defined at Object. (script.js.common.Piko_auslesen:131:8) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1500:34) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:175:10) at null._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:479:11) at Timer.listOnTimeout (timers.js:92:15)
Wo steckt denn da der Wurm?
-
Habe mal diese Zeile geändert
if(isAstroDay ()) {
Großes 'D' und ein Leerzeichen eingefügt. Jetzt kommen keine Fehlermeldungen mehr.
-
Sorry, mein Fehler: Mit großem 'D' wie in dem Skript im gleichen Beitrag darüber.
-
Hallo, ich bin hier im Forum auf dieses Script für den Piko Wechselrichter gestoßen und wollte er gerne Ausprobieren.
Das Script läuft auch ohne fehler durch, nur stehen die werte alle auf 0. Weis jemand was ich falsch mache?? :?: :?:
-
Hallo und Willkommen im Forum!
Wie sieht denn dein Webinterface aus?
Es gibt da verschiedene Versionen.
Mehr nach Win10 oder nach DOS?
Gruß
Rainer
-
mehr nach Win 10
-
Dann ist das hier das richtige Skript.
Du hast aber schon die Änderungen, die im Laufe des Threads kamen eingepflegt?
-
und die IP angepasst?
-
und ggf. Password und User?
Gruß
Rainer
-
-
Ja, die IP adresse habe ich geändert. Passwort und User habe ich nicht gesehen das ich es eingeben muss.
Die Änderungen habe ich nicht angepasst, da ich nicht weiß wo :?
-
Hallo danielwester,
da ich nicht weiß, ob du dein Problem inzwischen lösen konntest, schicke ich dir mal das endgültige Script, so wie es bei mir seit einigen Monaten läuft. Anpassen musst du nur die IP-Nummer sonst nichts. Der erste Teil des Scripts enthält alle auslesbaren Werte. Mich interessiert derzeit allerdings nur ein Teil davon. Nur wenn du mehr willst, muss du das Script anpassen.
// Ausleseskript Wechselrichter Kostal Piko ab Firmware v05.31 (12.10.2015) //Variaben //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.178.50/api/dxs.json'; // IP der Photovoltaik-Anlage createState('Piko.Ausgangsleistung', 0); createState('Piko.Autarkiegrad_d',0); createState('Piko.Autarkiegrad_G',0); createState('Piko.Betriebszeit',0); createState('Piko.DCEingangGesamt',0); createState('Piko.Eigenverbrauch',0); createState('Piko.Eigenverbrauch_d'); createState('Piko.Eigenverbrauch_G', 0); createState('Piko.Eigenverbrauchsquote_d', 0); createState('Piko.Eigenverbrauchsquote_G', 0); createState('Piko.Ertrag_d', 0); createState('Piko.Ertrag_G', 0); createState('Piko.Hausverbrauch_d', 0); createState('Piko.Hausverbrauch_G', 0); createState('Piko.P1Spannung'); createState('Piko.P2Spannung'); createState('Piko.P1Strom'); createState('Piko.P2Strom'); createState('Piko.P1Leistung'); createState('Piko.P2Leistung'); var logging = true; 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, function (error, response, body) { if(!error && response.statusCode ==200) { if(logging) log(body); var result = JSON.parse(body).dxsEntries; setState('Piko.DCEingangGesamt', result[0].value); setState('Piko.Ausgangsleistung', result[1].value); setState('Piko.Eigenverbrauch', result[2].value); setState('Piko.Eigenverbrauch_d', result[3].value); setState('Piko.Eigenverbrauch_G', result[4].value); setState('Piko.Eigenverbrauchsquote_d', result[5].value); setState('Piko.Eigenverbrauchsquote_G', result[6].value); setState('Piko.Ertrag_d', result[7].value); setState('Piko.Ertrag_G', result[8].value); setState('Piko.Hausverbrauch_d', result[9].value); setState('Piko.Hausverbrauch_G', result[10].value); setState('Piko.Autarkiegrad_G', result[11].value); setState('Piko.Autarkiegrad_d', result[12].value); setState('Piko.Betriebszeit', result[13].value); setState('Piko.P1Spannung', result[14].value); setState('Piko.P2Spannung', result[15].value); setState('Piko.P1Strom', result[16].value); setState('Piko.P2Strom', result[17].value); setState('Piko.P1Leistung', result[18].value); setState('Piko.P2Leistung', result[19].value); } else { log("Fehler: " + error + " bei Abfrage von: " + url, "warn"); } }); } schedule("3,12,22,32,42,52,59 * * * *", function () { if(isAstroDay ()) { log ("Auslöser: Schedule"); Piko(); } });
Hoffe, das hilft dir weiter.
Strizz
-
Hallo zusammen.
kann mir jemand von euch sagen wo ihr diese Nummern (ID_DCEingangGesamt = 33556736) herhabt?
Habe einen Kostal Piko mit FW 6.3.
Das Script an sich funktioniert bei mir schon wunderbar nur habe ich noch einen Batteriespeicher bei dem ich auch gerne noch die Daten haben würde.
Das müssten ja auch nur weitere Felder sein die ich mit der URL(JSON) abfragen kann oder?
Gruß Sascha