NEWS
E3DC Hauskraftwerk steuern
-
@ArnoD
Ich habe mein iobroker auf einen neuen Server umgezogen, dort habe ich die aktuellste Version 7.8 vom javascript-Adapter laufen mit iobroker 6.13.16.
Dieser wirft im Log mit Deinem aktuellen Script eine Fehlermeldung aus:Script script.js.common.Charge_Control is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!
Auf dem alten System mit javascript 7.16 (iobroker 6.13.16) kommt der Fehler nicht.
Kennst Du das? Eine schnelle Google-Suche zeigt mir, dass das bei einigen Scripts kommt.
Eventuell wird da jetzt das setState überwacht. Kann man da irgendwo das Limit hochsetzen?PS: Ich hab hier was gefunden. Das Limit kann man selbst in den Einstellungen der javascript-Instanz einstellen, ich hab's jetzt mal auf 2000 hochgesetzt.
Interessanterweise ist die Überwachung des setState demzufolge aber schon seit der version 6.1 enthalten, und dennoch habe ich das bei der Version 7.1.6 nicht im Log. -
@bluebean
Ich habe bei mir auch die Javascript-Adapter Version 7.8 laufen und keine Meldungen im LOG.
Die Grenze der setState Änderungen von 1000/Min sollten aber auch nicht erreicht werden. Kann es sein das bei dir, was nicht sauber beendet wurde?
Ich werde das aber mal bei mir beobachten. -
@arnod
Der Fehler kam jetzt auch mit dem Limit von 2000/min. Für mich nicht nachvollziehbar, frisch aufgesetzt und das Script 1:1 kopiert. Es läuft soweit ja auch problemlos, mit Ausnahme dann dieses Fehlers... -
@bluebean
Kommt der Fehler immer zu einer bestimmten Zeit oder kannst du andere Zusammenhänge herstellen?
Es müsste, was sein, das bei mir anscheinend nicht vorkommt.
Eine Möglichkeit wäre die Objekt ID's zu beobachten, ob einer ständig geändert wird.
Allerdings wird es schwierig, 1000 Änderungen pro Minute zu erkennen. -
@arnod
Ich bin jetzt mal auf Dein originales Script umgestiegen, mal schauen ob der Fehler dann bei mir auch kommt.
Ich hatte für mich Dein Script ja mit einem weiteren Tageszähler ergänzt, der mir die aktuell verbrauchte Energie des Hauses stellt (orientiert an Deinem LM3). Sonst keine Änderungen.
Die 1000/min entsprechen gut 16/s. Kannst Du abschätzen, wie oft Du mit dem Script pro Sekunde setState setzt? -
@bluebean
Die meisten, wenn die Prognosedaten abgerufen werden ca. 66 setState 4x am Tag
Die Ladesteuerung wird alle 3 sek. aufgerufen und es werden ca. 10 setState ausgeführt.
Alle Zähler jede Minute mit ca. 8 setState.Eigentlich dürfte es kein Problem sein.
-
@arnod
Stimmt. Könnte ich Dir das von mir mit einem Zähler ergänztes Script (1.3.1) mal zukommen lassen, ob Dir bei den Ergänzungen vllt. ein Fehler auffällt?
Bei dem originalen 1.3.1 kam bisher der Fehler nicht. -
@bluebean
Kannst du gerne machen. -
-
@bluebean
Du hast eine Endlosschleife programmiert.
In der Funktion SummePvLeistung(), Zeile 1131 schreibst du den neuen Zählerstand:await setStateAsync(`${instanz}.${PfadEbene1}.${PfadEbene2[1]}.IstTagesverbrauch_kWh`, IstTagesverbrauch_kWh);
In Zeile 2027 reagierst du auf die Änderung und rufst die Funktion SummePvLeistung() wieder auf
if (existsState(sID_Tagesverbrauch)){ on({id: sID_Tagesverbrauch,change: "ne"}, function (obj){SummePvLeistung();}); }
Das Problem ist das die Konstante sID_Tagesverbrauch auf
${instanz}.${PfadEbene1}.${PfadEbene2[1]}.IstTagesverbrauch_kWh verweist und somit auf die gleiche Objekt-ID. -
@arnod
Cool, danke - ich hab das jetzt nochmal von vorne gemacht, keine Ahnung ob man es eleganter machen kann, aber im Grunde sollte es jetzt passen, oder?
(Jedenfalls zählt der Counter fleißig und die Fehlermeldung mit dem setState ist weg ) -
@bluebean sieht doch gut aus
-
Hallo zusammen,
Bei mir funktionieren die Zählerstände leider überhaupt nicht. Hat jemand einen Ansatz, wonach ich schauen kann? -
@malei
Welche Zählerstände meinst du? -
Die aus dem zweiten Skript auf Github.
-
@malei
Wenn du willst, dass man dir hilft, musst du schon genauer werden, wo dein Problem ist.
Ich kann sonst nur raten, was du für ein Problem hast.
Was ist das zweite Script auf Github? Es gibt dort mehr als nur zwei.
Hier geht es hauptsächlich um das Script Charge-Control, mit dem du anscheinend kein Problem hast, wenn ich dich richtig verstehe.Nachtrag: Meinst du das Script "Zaehlerstaende" ?
Da benötigst du noch zusätzliche Hardware, die von deinem Stromzähler die Werte auslesen kann.
Ich verwende da z.B den HM-ES-TX-WM von Homematic. -
In deinem ersten Post gibt es doch den Link zu Github. Ich dachte das wäre dein Projekt Dort gibt es neben Charge-Control auch einen Ordner "Zaehlerstaende" mit einem Script.
Das Script habe ich importiert. Die Objekte wurden auch angelegt, werden aber nicht gefüllt.
-
@bluebean sagte in E3DC Hauskraftwerk steuern:
@arnod
Ich bin jetzt mal auf Dein originales Script umgestiegen, mal schauen ob der Fehler dann bei mir auch kommt.
Ich hatte für mich Dein Script ja mit einem weiteren Tageszähler ergänzt, der mir die aktuell verbrauchte Energie des Hauses stellt (orientiert an Deinem LM3). Sonst keine Änderungen.
Die 1000/min entsprechen gut 16/s. Kannst Du abschätzen, wie oft Du mit dem Script pro Sekunde setState setzt?Geht es bei dem/den Tageszähler/n nicht auch um das Script Zaehlerstaende?
-
Geht es bei dem/den Tageszähler/n nicht auch um das Script Zaehlerstaende?
Nein, dort geht es um die Zähler im Script Charge-Control.
Wie bereits geschrieben benötigst du für das Script "Zaehlerstaende" noch zusätzliche Hardware, um von deinem Stromzähler vom Energieversorger die Verbrauchswerte auslesen zu können.
Man kann sich natürlich auch einen Bezugszähler, Einspeisezähler und PV-Zähler in JS programmieren.
Bei dem Script wollte ich aber die Werte für das Finanzamt haben und lese deswegen die Werte von dem Zähler des Energieversorger aus. -
Guten Tag,
ich habe gestern versucht das ganze zu installieren, musste heute aber feststellen das überhaupt nichts passiert ist. Ich bin nach der Anleitung vorgegangen und habe die ganzen Werte auch eingetragen.
Beim starten des Scripts gibt es auch Fehlermeldungen aus denen ich nicht schlau werde. Würde mich über Hilfe freuen.Vielen Dank schonmal!