NEWS
UNSOLVED update javascript -> photovoltaik script läuft auch nicht mehr !!!
-
Also für mich ist der Adapter nicht stable.
Jetzt läuft auch das photovoltaik script nicht mehr:
anbei 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 = 'SN-Login'; // Nutzername der Photovoltaik-Anlage var PassAnlage = 'xxxx'; // Password der Photovoltaik-Anlage var IPAnlage = '192.168.xxx.xx'; // IP der Photovoltaik-Anlage var logging = true; function Piko() { var cheerio = require('cheerio'); var request = require('request'); if (logging) log("Piko 5.5 auslesen"); //http://SN-Login:WGrZMkb@192.168.243.75 request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) { $ = cheerio.load(body); var d = $("td"); var pwr = parseFloat(d.eq(14).text().trim()); // Energie aktuell in W var day = parseFloat(d.eq(26).text().trim()); // Tagesenergie in kWh var all = parseFloat(d.eq(17).text().trim()); // Gesamtenergie in kWh var v1 = d.eq(56).text().trim(); // PV Generator Nr. 1 - Spannung in V var i1 = d.eq(65).text().trim(); // PV Generator Nr. 1 - Strom in A var p1 = parseInt(v1 * i1); var v2 = d.eq(82).text().trim(); // PV Generator Nr. 1 - Spannung in V var i2 = d.eq(91).text().trim(); // PV Generator Nr. 1 - Strom in A var p2 = parseInt(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("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.Status.Photovoltaik.Tagesleistung', 0); });
Und die Fehlermeldung (javascript stürzt auch komplett ab)
Wie heute schon mehrmals erwähnt:
Es läuft seit Monaten und dann : Nach update läuft nix mehr rund.Ich betrachte den adapter in keinster Weise als stable !
-
@bahnuhr
Seltsam.ich habe den Adapter heute morgen auch upgedatet - das Piko Skript läuft einwandfrei
Für das schlechte Wetter kann der Adapter nichts
Was hast du denn noch upgedatet, bzw. welche Versionen hast du bei
- admin
- js-controller (Hosts)
- node
- npm
-
Rainer,
Danke für die Info.upgadatet: admin und javascript
Kannst du mir mal dein script senden?
Hast du das gleiche? -
Sorry - Habe nochmal verglichen, habe ein anderes.
Welche Firmware hast du auf deinem PIKO, mein Skript ist für die neue Version mit Java -
Ne, ich hab die alte Version.
-
@bahnuhr
Im MOment sind es ja auch "nur" Fehler, die der Controller noch abfängt.Du solltest aber trotzdem mal nachsehen, warum er "d.eq" anmeckert
Da sollte auch noch mehr Infos im log stehen, wo sich der Übeltäter im Skript versteckt.
-
Ne, mehr Infos gibt es nicht.
hab ich oben alle eingehängt.
@Homoran sagte in update javascript -> photovoltaik script läuft auch nicht mehr !!!:
Im MOment sind es ja auch "nur" Fehler, die der Controller noch abfängt.
Und richtig abfangen tut der Controller nicht; javascript stürzt komplett ab und startet neu.
-
Nur mal was mir auffällt - kann aber sein dass mir da nur gewisse Spezialitäten von Javascript noch unbekannt sind und ich mich blamiere;-)
$ = cheerio.load(body); var d = $("td");
Kann man "$" wirklich als Variablenname verwenden?
-
Das Script stammt aus dem Homematic Forum; was ich dann in 01/2017 auf ioB umgeschrieben habe.
Seit dem lief dies einwandfrei.
Und seit heute nun nicht mehr.
-
So, ich teste, habe aber bisher keine Lösung gefunden.
eq ist seit dem update wohl nicht mehr möglich.
Ich weiß, dass mehere hier das Script in Benutz haben.
Falls jemand eine Lösung hat bitte hier teilen.
Danke.
-
Meine Vermutung ist, dass nicht "eq" das Problem ist, sondern dass die Variable "d" leer bzw. Nothing ist. Kannst deren Wert ja zur Kontrolle mal ins Log schreiben lassen...
-
$ = cheerio.load(body); log (cheerio.load(body)); var d = $("td"); log ("d= " + d);
-
if(d) log ("d= " + JSON.stringify(d));
-
@paul53 sagte in update javascript -> photovoltaik script läuft auch nicht mehr !!!:
if(d) log ("d= " + JSON.stringify(d));
-
OK. Dann vergiss mein ganzes Geschreibsel. Dann war meine Vermutung komplett ein Holzweg und ich habe ein Wissensloch
Vielleicht kann mich ja gelegentlich jemand mal aufklären was die Zeile:
$ = cheerio.load(body);
eigentlich tut...?
-
@bahnuhr Das Objekt enthält offenbar nur {length:0};. Dann kann der Rest des Skriptes nicht funktionieren.
-
Das sehe ich jetzt auch so.
Aber warum ist das so?
Lief ja monate lang ohne Probleme.
-
@bahnuhr sagte in update javascript -> photovoltaik script läuft auch nicht mehr !!!:
upgadatet: admin und javascript
Welche Versionen?
-
admin: 3.6.0
javascript: 4.1.12 -
@Homoran sagte in update javascript -> photovoltaik script läuft auch nicht mehr !!!:
bzw. welche Versionen hast du bei
- admin
- js-controller (Hosts)
- node
- npm
Bitte von allem, damit wir es einkreisen können