NEWS
Script zur Ermittlung stündlicher/täglicher Stromaufnahme funktioniert nicht
-
Hallo zusammen.
Dies ist mein erster Post im Forum. Bitte verzeiht wenn meine Frage unangebracht erscheint, aber ich komme einfach nicht weiter.
Das folgende Script soll einfach nur einmal pro Stunde bzw. einmal am Tag die Differenz des Stromzählers zum vorherigen Aufruf in eine Variable speichern. Die Werte sollen in einer SQL-Datenbank geloggt und in einem FLOT-Diagramm visualisiert werden. Für Diagnose-Zwecke habe ich auch noch eine Variable mit einem Zeitstempel angelegt und augenscheinlich werden die beiden definierten Funktionen auch zum gewünschten Zeitpunkt ausgeführt (Zeitstempel wie im schedule-Job vorgegeben, siehe Screenshot unten)
Leider werden keine Werte aus der Berechnung aufgezeichnet. Die einzelnen Peaks sind nur beim Testen und neustarten des Scripts entstanden).Hat jemand eine Idee?

So sieht mein Script aus:
createState('Strom.Stunde.Aktuell', 0, {name: 'Stromverbrauch Stunde', unit: 'kWh', desc: 'Stromverbrauch letzte Stunde', type: 'number'}); createState('Strom.Stunde.Gespeichert', 0, {name: 'Stromzählerwert Stunde', unit: 'Wh', desc: 'Stromzählerwert absolut letzte Stunde', type: 'number'}); createState('Strom.Stunde.Zeitstempel', 0, {name: 'Zeitstempel Stunde', desc: 'Zeitstempel letzte Aktualisierung stündliche Stromaufnahme', type: 'string'}); createState('Strom.Tag.Aktuell', 0, {name: 'Stromverbrauch Tag', unit: 'kWh', desc: 'Stromverbrauch letzter Tag', type: 'number'}); createState('Strom.Tag.Gespeichert', 0, {name: 'Stromzählerwert Tag', unit: 'Wh', desc: 'Stromzählerwert absolut letzter Tag', type: 'number'}); createState('Strom.Tag.Zeitstempel', 0, {name: 'Zeitstempel Tag', desc: 'Zeitstempel letzte Aktualisierung tägliche Stromaufnahme', type: 'string'}); var instanz = 'javascript.0.'; var idStrom_Stunde_Aktuell = instanz + 'Strom.Stunde.Aktuell'; var idStrom_Stunde_Gespeichert = instanz + 'Strom.Stunde.Gespeichert'; var idStrom_Stunde_Zeitstempel = instanz + 'Strom.Stunde.Zeitstempel'; var idStrom_Tag_Aktuell = instanz + 'Strom.Tag.Aktuell'; var idStrom_Tag_Gespeichert = instanz + 'Strom.Tag.Gespeichert'; var idStrom_Tag_Zeitstempel = instanz + 'Strom.Tag.Zeitstempel'; var Stromzähler_Aktuell = getState("hm-rpc.0.PEQ0544375.1.ENERGY_COUNTER").val; if (getState(idStrom_Stunde_Gespeichert).val == 0) {setState(idStrom_Stunde_Gespeichert, Stromzähler_Aktuell, true)}; if (getState(idStrom_Tag_Gespeichert).val == 0) {setState(idStrom_Tag_Gespeichert, Stromzähler_Aktuell, true)}; function fStromStunde(Obj) { setState(idStrom_Stunde_Aktuell, (Stromzähler_Aktuell - getState(idStrom_Stunde_Gespeichert).val) / 1000, true); setState(idStrom_Stunde_Gespeichert, Stromzähler_Aktuell, true); setState(idStrom_Stunde_Zeitstempel, formatDate(new Date(), "TT.MM.JJJJ SS:mm:ss"), true); }; function fStromTag(Obj) { setState(idStrom_Tag_Aktuell, (Stromzähler_Aktuell - getState(idStrom_Tag_Gespeichert).val) / 1000, true); setState(idStrom_Tag_Gespeichert, Stromzähler_Aktuell, true); setState(idStrom_Tag_Zeitstempel, formatDate(new Date(), "TT.MM.JJJJ SS:mm:ss"), true); }; schedule("0 * * * *", fStromStunde); schedule("0 0 * * *", fStromTag); -
Hallo zusammen.
Dies ist mein erster Post im Forum. Bitte verzeiht wenn meine Frage unangebracht erscheint, aber ich komme einfach nicht weiter.
Das folgende Script soll einfach nur einmal pro Stunde bzw. einmal am Tag die Differenz des Stromzählers zum vorherigen Aufruf in eine Variable speichern. Die Werte sollen in einer SQL-Datenbank geloggt und in einem FLOT-Diagramm visualisiert werden. Für Diagnose-Zwecke habe ich auch noch eine Variable mit einem Zeitstempel angelegt und augenscheinlich werden die beiden definierten Funktionen auch zum gewünschten Zeitpunkt ausgeführt (Zeitstempel wie im schedule-Job vorgegeben, siehe Screenshot unten)
Leider werden keine Werte aus der Berechnung aufgezeichnet. Die einzelnen Peaks sind nur beim Testen und neustarten des Scripts entstanden).Hat jemand eine Idee?

So sieht mein Script aus:
createState('Strom.Stunde.Aktuell', 0, {name: 'Stromverbrauch Stunde', unit: 'kWh', desc: 'Stromverbrauch letzte Stunde', type: 'number'}); createState('Strom.Stunde.Gespeichert', 0, {name: 'Stromzählerwert Stunde', unit: 'Wh', desc: 'Stromzählerwert absolut letzte Stunde', type: 'number'}); createState('Strom.Stunde.Zeitstempel', 0, {name: 'Zeitstempel Stunde', desc: 'Zeitstempel letzte Aktualisierung stündliche Stromaufnahme', type: 'string'}); createState('Strom.Tag.Aktuell', 0, {name: 'Stromverbrauch Tag', unit: 'kWh', desc: 'Stromverbrauch letzter Tag', type: 'number'}); createState('Strom.Tag.Gespeichert', 0, {name: 'Stromzählerwert Tag', unit: 'Wh', desc: 'Stromzählerwert absolut letzter Tag', type: 'number'}); createState('Strom.Tag.Zeitstempel', 0, {name: 'Zeitstempel Tag', desc: 'Zeitstempel letzte Aktualisierung tägliche Stromaufnahme', type: 'string'}); var instanz = 'javascript.0.'; var idStrom_Stunde_Aktuell = instanz + 'Strom.Stunde.Aktuell'; var idStrom_Stunde_Gespeichert = instanz + 'Strom.Stunde.Gespeichert'; var idStrom_Stunde_Zeitstempel = instanz + 'Strom.Stunde.Zeitstempel'; var idStrom_Tag_Aktuell = instanz + 'Strom.Tag.Aktuell'; var idStrom_Tag_Gespeichert = instanz + 'Strom.Tag.Gespeichert'; var idStrom_Tag_Zeitstempel = instanz + 'Strom.Tag.Zeitstempel'; var Stromzähler_Aktuell = getState("hm-rpc.0.PEQ0544375.1.ENERGY_COUNTER").val; if (getState(idStrom_Stunde_Gespeichert).val == 0) {setState(idStrom_Stunde_Gespeichert, Stromzähler_Aktuell, true)}; if (getState(idStrom_Tag_Gespeichert).val == 0) {setState(idStrom_Tag_Gespeichert, Stromzähler_Aktuell, true)}; function fStromStunde(Obj) { setState(idStrom_Stunde_Aktuell, (Stromzähler_Aktuell - getState(idStrom_Stunde_Gespeichert).val) / 1000, true); setState(idStrom_Stunde_Gespeichert, Stromzähler_Aktuell, true); setState(idStrom_Stunde_Zeitstempel, formatDate(new Date(), "TT.MM.JJJJ SS:mm:ss"), true); }; function fStromTag(Obj) { setState(idStrom_Tag_Aktuell, (Stromzähler_Aktuell - getState(idStrom_Tag_Gespeichert).val) / 1000, true); setState(idStrom_Tag_Gespeichert, Stromzähler_Aktuell, true); setState(idStrom_Tag_Zeitstempel, formatDate(new Date(), "TT.MM.JJJJ SS:mm:ss"), true); }; schedule("0 * * * *", fStromStunde); schedule("0 0 * * *", fStromTag); -
eventuell ist SourceAnalytix fuer dich interessant ?
Bis auf die stunedliche aufnähme hat er alles da (tag, Woche, Monat usw)
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login