Hinweis: für dieses Skript steht ein Update zur Verfügung!
Es wird nun auch der Shelly 3EM unterstützt.
Was ist aber, wenn man diese Daten auch gerne Offline zur weiteren Verarbeitung speichern möchte?
Hier stößt man leider schnell auf ein Problem, das der Verbrauch des Shelly zwar abgelesen werden kann – jedoch nur der Verbrauch seit dem letzten Neustart.
Somit würde sich der Verbrauch immer verändern, wenn der Shelly aufgrund von Stromausfall oder Software-Update neugestartet wurde.
Hierzu habe ich mir lange Gedanken gemacht und ein Skript entwickelt, welches die Werte aus den einzelnen Shelly in einer einstellbaren Zeit abfragt und in eigene Datenpunkte speichert. Auch ist eine Korrektur von Reboot Werten vorhanden. Somit werden die Zähler der temporären Berechnung genullt, sobald festgestellt wurde, das der Shelly neu gestartet wurde. Dies hat keinen Einfluss auf die gesamte Berechnung des Verbrauchs – im Gegenteil: Die Berechnung des Verbrauchs wird genauer!
Übersicht der Funktionen
Folgende Verbrauchswerte stehen in der Historie für jeden der Shelly zur Verfügung:
Funktion | Beschreibung |
---|---|
Verbrauch heute | abgefragter Verbrauch heute |
Verbrauch gestern | abgefragter Verbrauch gestern |
Verbrauch diese Woche | abgefragter Verbrauch für die gesamte Woche |
Verbrauch letzte Woche | abgefragter Verbrauch für die gesamte letzte Woche |
Verbrauch dieser Monat | abgefragter Verbrauch für den gesamten Monat |
Verbrauch letzter Monat | abgefragter Verbrauch für den gesamten letzten Monat |
Verbrauch dieses Jahr | abgefragter Verbrauch für das gesamte Jahr |
Verbrauch letztes Jahr | abgefragter Verbrauch für das gesamte letzte Jahr |
Verbrauch Gesamt | abgefragter Verbrauch gesamt |
Name | Zugewiesener Name des Shelly zum einfachen Wiederfinden |
Screenshot der verfügbaren Variablen
Installation des Shelly Adapter
Nach kurzer Zeit stehen die Datenpunkte aller gefundenen Shellys unter shelly.0
zur Verfügung.
Skript
/* * @copyright 2021 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * @author 2021 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Shelly Geräte. * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung * und Performance entwickelt. * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind. * * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf * https://www.kreyenborg.koeln * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der, * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht! * * Ansprüche gegenüber Dritten bestehen nicht. * * Skript Name: Shelly-Verbrauch * Skript Version: 1.60 * Erstell-Datum: 08. Oktober 2021 | Update: 20. Juli 2022 * */ // Datenpunkte neu erstellen var ueberschreiben = false; // Hauptdatenpunkt unterhalb javascript var datenpunkt = "ShellyVerbrauch."; // Abschließender Punkt !!! WICHTIG !!! // Verbrauchs Objekte der einzelnen Shelly var objekt = ["gesamt", "dieses_jahr", "letztes_jahr", "letzter_monat", "dieser_monat", "letzte_woche", "diese_woche", "gestern", "heute", "alter_wert", "aktueller_wert" ]; // Beschreibung der Objekte var beschreibung = ["Gesamter Vebrauch des Shelly", "Verbrauch aktuelles Jahr", "Verbrauch letztes Jahr", "Verbrauch letzten Monat", "Verbrauch aktueller Monat", "Verbrauch letzte Woche", "Verbrauch diese Woche", "Verbrauch gestern", "Verbrauch heute", "Messwert alt", "Messwert neu" ]; // Datenpunkt der Shelly (Standard: shelly.0) var shelly_dp = "shelly.0"; // Datenpunkte der Shelly (!!! Bitte nicht ändern !!!) var shellyDps = $('state[id=' + shelly_dp + '.*.*.Energy]'); // Datenpunkte der Shelly 3EM DP var shelly3EMDps = $('state[id=' + shelly_dp + '.*.*.Total]'); // Datenpunkte der Shelly 3EM DP - Total var shelly3EMTotalDps = $('state[id=' + shelly_dp + '.*.*.ConsumedPower]'); // Datenpunkte der Shelly 3EM DP - Total var shelly3EMTotalReturned = $('state[id=' + shelly_dp + '.*.*.Total_Returned]'); // Datenpunkte der Shelly Namen (!!! Bitte nicht ändern !!!) var shellyDpsName = $('state[id=' + shelly_dp + '.*.name]'); // Shelly Verbrauch aktualisieren - nachts um 00:00 Uhr function shelly_vebrauch_tag() { // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden shelly_verbrauch_update(); // Datumsvariable var heute = new Date(); // Heute zu Gestern verschieben. Täglich um 00:00 Uhr verschiebe_verbrauch_objekt("heute", "gestern"); log("Shelly Verbrauch: Werte für gestern und heute aktualisiert!"); // aktuelle Woche in letzte Woche verschieben. Am Montag um 00:00 Uhr if (heute.getDay() === 1) { verschiebe_verbrauch_objekt("diese_woche", "letzte_woche"); log("Shelly Verbrauch: Werte für diese und letzte Woche aktualisiert!"); } // aktueller Monat in letzten Monat verschieben. Am 1. des Monats um 00:00 Uhr if (heute.getDate() === 1) { verschiebe_verbrauch_objekt("dieser_monat", "letzter_monat"); log("Shelly Verbrauch: Werte für diesen und letzten Monat aktualisiert!"); } // aktuelles Jahr in letztes Jahr verschieben. Am 1. des Monats am 1. Monat um 00:00 Uhr if (heute.getDate() === 1 && heute.getMonth() === 0) { verschiebe_verbrauch_objekt("dieses_jahr", "letztes_jahr"); log("Shelly Verbrauch: Werte für dieses und letztes Jahr aktualisiert!"); } } // Tagesverbrauch alle 15 Min von der Original Variable des Shelly in eigene Variable kopieren function shelly_verbrauch_update() { var anzahl_updates = 0; var anzahl_reboots = 0; var anzahl_gleich = 0; shellyDps.each(function (id, i) { var shelly_verbrauch = getState(id).val; // Einige Shelly haben keine Verbrauchswerte (noch nicht) if (shelly_verbrauch != null) { // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val; var alter_wert = 0; // Prüfe alten und neuen Wert if (shelly_verbrauch > aktueller_wert) { // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt setState(shelly_DP(id) + "alter_wert", aktueller_wert, true); alter_wert = aktueller_wert; anzahl_updates++; } if (aktueller_wert > shelly_verbrauch) { // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt setState(shelly_DP(id) + "alter_wert", 0, true); alter_wert = 0; anzahl_reboots++; } if (shelly_verbrauch == aktueller_wert) { // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig alter_wert = aktueller_wert; anzahl_gleich++; } setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true); // Alter und neuer Wert -> aktuelle Differenz var verbrauch = parseFloat(shelly_verbrauch) - alter_wert; // Tagesverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch); // Wochenverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch); // Monatsverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch); // Jahresverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch); // Gesamten Vebrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch); } }); shelly3EMDps.each(function (id, i) { var shelly_verbrauch = getState(id).val; // Einige Shelly haben keine Verbrauchswerte (noch nicht) if (shelly_verbrauch != null) { // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val; var alter_wert = 0; // Prüfe alten und neuen Wert if (shelly_verbrauch > aktueller_wert) { // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt setState(shelly_DP(id) + "alter_wert", aktueller_wert, true); alter_wert = aktueller_wert; anzahl_updates++; } if (aktueller_wert > shelly_verbrauch) { // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt setState(shelly_DP(id) + "alter_wert", 0, true); alter_wert = 0; anzahl_reboots++; } if (shelly_verbrauch == aktueller_wert) { // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig alter_wert = aktueller_wert; anzahl_gleich++; } setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true); // Alter und neuer Wert -> aktuelle Differenz var verbrauch = parseFloat(shelly_verbrauch) - alter_wert; // Tagesverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch); // Wochenverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch); // Monatsverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch); // Jahresverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch); // Gesamten Vebrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch); } }); shelly3EMTotalDps.each(function (id, i) { var shelly_verbrauch = getState(id).val; // Einige Shelly haben keine Verbrauchswerte (noch nicht) if (shelly_verbrauch != null) { // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val; var alter_wert = 0; // Prüfe alten und neuen Wert if (shelly_verbrauch > aktueller_wert) { // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt setState(shelly_DP(id) + "alter_wert", aktueller_wert, true); alter_wert = aktueller_wert; anzahl_updates++; } if (aktueller_wert > shelly_verbrauch) { // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt setState(shelly_DP(id) + "alter_wert", 0, true); alter_wert = 0; anzahl_reboots++; } if (shelly_verbrauch == aktueller_wert) { // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig alter_wert = aktueller_wert; anzahl_gleich++; } setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true); // Alter und neuer Wert -> aktuelle Differenz var verbrauch = parseFloat(shelly_verbrauch) - alter_wert; // Tagesverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch); // Wochenverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch); // Monatsverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch); // Jahresverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch); // Gesamten Vebrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch); } }); shelly3EMTotalReturned.each(function (id, i) { var shelly_verbrauch = getState(id).val; // Einige Shelly haben keine Verbrauchswerte (noch nicht) if (shelly_verbrauch != null) { // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat var aktueller_wert = getState(shelly_DP(id, true) + "aktueller_wert").val; var alter_wert = 0; // Prüfe alten und neuen Wert if (shelly_verbrauch > aktueller_wert) { // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt setState(shelly_DP(id, true) + "alter_wert", aktueller_wert, true); alter_wert = aktueller_wert; anzahl_updates++; } if (aktueller_wert > shelly_verbrauch) { // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt setState(shelly_DP(id, true) + "alter_wert", 0, true); alter_wert = 0; anzahl_reboots++; } if (shelly_verbrauch == aktueller_wert) { // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig alter_wert = aktueller_wert; anzahl_gleich++; } setState(shelly_DP(id, true) + "aktueller_wert", shelly_verbrauch, true); // Alter und neuer Wert -> aktuelle Differenz var verbrauch = parseFloat(shelly_verbrauch) - alter_wert; // Tagesverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id, true), "heute", verbrauch); // Wochenverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id, true), "diese_woche", verbrauch); // Monatsverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id, true), "dieser_monat", verbrauch); // Jahresverbrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id, true), "dieses_jahr", verbrauch); // Gesamten Vebrauch aktualisieren aktualisiere_vebrauch_objekt(shelly_DP(id, true), "gesamt", verbrauch); } }); aktualisiere_namen(); log("Shelly Verbrauch: Verbrauchswerte aktualisiert: " + anzahl_updates + " | Reboots korrigiert: " + anzahl_reboots + " | Unveränderte Werte: " + anzahl_gleich); } // aktualisiert das jeweilige Verbrauchs-Objekt und addiert den Verbrauch dazu function aktualisiere_vebrauch_objekt(dp, objekt, wert) { // Hole alten Verbrauch let alter_verbrauch = getState(dp + objekt).val; let verbrauch = 0; // Kein Wert vorhanden - nutze den übermittelten Wert if (alter_verbrauch < 1 || alter_verbrauch == null) { verbrauch = parseFloat(wert) } else { verbrauch = parseFloat(alter_verbrauch) + parseFloat(wert); } setState(dp + objekt, parseFloat(verbrauch.toFixed(2)), true); } // Verschiebt das jeweilige Verbrauchs-Objekt und nullt den Ursprung (Tag, Woche, Monat, Jahr) function verschiebe_verbrauch_objekt(von, nach) { $('state[id=*.' + datenpunkt + '*.*.' + von + ']').each(function (id, i) { // Temporärer Gruppen-Datenpunkt var tmp_dp = id.slice(0, -(von.length)); var verbrauch = getState(id).val; if (verbrauch != null) { setState(tmp_dp + nach, verbrauch, true); } // Setze "von" zurück setState(id, 0, true); }); } // Funktion um die aktuellen Namen des Shelly abzuholen function aktualisiere_namen() { if (typeof extendObject === "function") { shellyDpsName.each(function (id, i) { if (existsState(id)) { setState(shelly_DP_Name(id), String(getState(id).val), true); extendObject("javascript.0." + shelly_DP_Name_Main(id), { common: { name: String(getState(id).val), desc: String(getState(id).val) }, type: "channel" }); } }); } } // Erstelle die benötigten Datenpunkte function datenpunkte_erstellen() { // Anzahl der gefundenen Shelly var anzahl = shellyDps.length; shellyDps.each(function (id, j) { var initial_wert = 0.0; for (var i = 0; i < objekt.length; i++) { // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen if (i > 8) { initial_wert = getState(id).val; } createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, { name: beschreibung[i], desc: beschreibung[i], type: "number", role: "value.power", unit: "Wh" }); } }); // Anzahl der gefundenen Shelly 3EM var anzahl_3em = shelly3EMDps.length; shelly3EMDps.each(function (id, j) { var initial_wert = 0.0; for (var i = 0; i < objekt.length; i++) { // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen if (i > 8) { initial_wert = getState(id).val; } createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, { name: beschreibung[i], desc: beschreibung[i], type: "number", role: "value.power", unit: "Wh" }); } }); // Anzahl der gefundenen Shelly 3EM - Total var anzahl_3em_total = shelly3EMTotalDps.length; shelly3EMTotalDps.each(function (id, j) { var initial_wert = 0.0; for (var i = 0; i < objekt.length; i++) { // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen if (i > 8) { initial_wert = getState(id).val; } createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, { name: beschreibung[i], desc: beschreibung[i], type: "number", role: "value.power", unit: "Wh" }); } }); // Anzahl der gefundenen Shelly 3EM - Total var anzahl_3em_total_returned = shelly3EMTotalReturned.length; shelly3EMTotalReturned.each(function (id, j) { var initial_wert = 0.0; for (var i = 0; i < objekt.length; i++) { // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen if (i > 8) { initial_wert = getState(id).val; } createState(shelly_DP(id, true) + objekt[i], initial_wert, ueberschreiben, { name: beschreibung[i], desc: beschreibung[i], type: "number", role: "value.power", unit: "Wh" }); } }); // Alle Datenpunkte erstellt. Frage ersten Verbrauch ab! log("Shelly Verbrauch: Datenpunkte erstellt! Erster Verbrauch steht nach 30 Sekunden zur Verfügung! Anzahl gefundener Shelly Datenpunkte: " + (anzahl_3em + anzahl + anzahl_3em_total + anzahl_3em_total_returned)); setTimeout(shelly_verbrauch_update, 30000); // Datenpunkte für die Namen der Shelly erstellen shellyDpsName.each(function (id, j) { createState(shelly_DP_Name(id), "", ueberschreiben, { name: "Name des Shelly", desc: "Name des Shelly", type: "string", role: "value", unit: "" }); }); } /** * Wenn 3EM DP, dann anderen Wert zurückgeben * @param {any} dp * @param {boolean} extended */ function shelly_DP(dp, extended = false) { dp = dp.split("."); dp = datenpunkt + dp[2] + "." + dp[3]; if (extended) { dp = dp + "_Returned."; } else { dp = dp + "."; } return dp; } function shelly_DP_Name(dp) { dp = dp.split("."); dp = datenpunkt + dp[2] + "." + dp[3]; return dp; } function shelly_DP_Name_Main(dp) { dp = dp.split("."); dp = datenpunkt + dp[2]; return dp; } function shelly_verbrauch_erster_start() { log("Shelly Verbrauch: Erster Start des Skriptes! Datenpunkte werden erstellt!"); // Datenpunkte werden erstellt datenpunkte_erstellen(); } // Erster Start und Initialisierung shelly_verbrauch_erster_start(); // Alle 15 Minuten das Skript für den Tagesverbrauch ausführen schedule('*/15 * * * *', shelly_verbrauch_update); // Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen schedule('0 0 * * *', shelly_vebrauch_tag);
Datenpunkte
Nachdem das Skript angelaufen ist und regelmäßig die Verbräuche der Shelly abgefragt wurden, findest Du diese im Datenpunkt: javascript.0.ShellyVerbrauch
Fehlersuche
Fehlermeldung im Log
javascript.0 2022-01-25 17:41:56.234 error Function "extendObject" is not allowed. Use adapter settings to allow it.
Solltest Du diese Fehlermeldung erhalten, dann werden die Namen deiner Shelly dem Datenpunkt nicht zugewiesen. Hierzu musst Du im Javascript – Adapter die Funktion “setObject” erlauben. Dies bedeutet, das Skripte die Eigenschaften von Objekten verändern dürfen. Hier dient es dazu, dem Objekt den Namen des jeweiligen Shelly zu geben.
Neue Shelly eingebunden, das Skript liest die Daten nicht aus!
Solltest Du zur Laufzeit des Skripts neue Shelly eingebunden haben, so kannst du das Skript einmal stoppen und erneut starten. Dann werden auch die passenden Datenpunkte für die neuen Shelly gefunden und ausgelesen.
Es ist eine echt klasse Arbeit!
Umrechnung von Wh in kWh hat auch super funktioniert. Mit deinem Tip, dies gleich in VIS zu machen.
Hallo Luigi,
danke für die Rückmeldung. Freut mich, wenn das Skript bei Dir funktioniert.
Gruß,
Stephan
Hallo Stephan,
leider funktioniert das Skript bei mir nicht.
Im Fehlerprotokoll habe ichfolgende Meldungen:
javascript.0
2021-12-23 17:09:41.356 error at processImmediate (internal/timers.js:466:21)
javascript.0
2021-12-23 17:09:41.356 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1311:17)
javascript.0
2021-12-23 17:09:41.355 error at /opt/iobroker/node_modules/iobroker.javascript/main.js:1832:17
javascript.0
2021-12-23 17:09:41.355 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1731:37)
javascript.0
2021-12-23 17:09:41.354 error at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1482:28)
javascript.0
2021-12-23 17:09:41.354 error at Object.createScript (vm.js:262:10)
javascript.0
2021-12-23 17:09:41.353 error at new Script (vm.js:102:7)
javascript.0
2021-12-23 17:09:41.353 error SyntaxError: Identifier ‘objekt’ has already been declared
javascript.0
2021-12-23 17:09:41.343 error ^
javascript.0
2021-12-23 17:09:41.338 error const objekt = [“gesamt”, “dieses_jahr”, “letztes_jahr”, “letzter_monat”, “dieser_monat”, “letzte_woche”,
javascript.0
2021-12-23 17:09:41.337 error script.js.common.shelly_statistik compile failed:
at script.js.common.shelly_statistik:31
Der javascript-Adapter spuckt bei Start folgendes aus:
17:16:08.399 info javascript.0 (22009) Start javascript script.js.common.shelly_statistik
17:16:08.403 error javascript.0 (22009) script.js.common.shelly_statistik compile failed: at script.js.common.shelly_statistik:31
17:16:11.048 info javascript.0 (22009) Stop script script.js.common.shelly_statistik
Hast Du einen Tip?
Besten Dank im Voraus.
Hallo Josef,
ich habe gerade gesehen, das beim letzten Update einige Werte im Beitrag nicht richtig übernommen worden sind.
Bitte kopiere das Skript erneut und teste es einmal.
Vielen Dank & smarte Weihnachten 😉
Gruß,
Stephan
Hallo Stephan,
Fehlerbild ist leider unverändert.
javascritp.0 2021-12-24 10:11:42.536 error at processImmediate (internal/timers.js:466:21)
javascript.0 2021-12-24 10:11:42.535 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1311:17)
javascript.0 2021-12-24 10:11:42.535 error at /opt/iobroker/node_modules/iobroker.javascript/main.js:1832:17
javascript.0 2021-12-24 10:11:42.535 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1731:37)
javascript.0 2021-12-24 10:11:42.535 error at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1482:28)
javascript.0 2021-12-24 10:11:42.534 error at Object.createScript (vm.js:262:10)
javascript.0 2021-12-24 10:11:42.534 error at new Script (vm.js:102:7)
javascript.0 2021-12-24 10:11:42.534 error SyntaxError: Identifier ‘objekt’ has already been declared
javascript.0 2021-12-24 10:11:42.534 error ^
javascript.0 2021-12-24 10:11:42.533 error var objekt = [“gesamt”, “dieses_jahr”, “letztes_jahr”, “letzter_monat”, “dieser_monat”, “letzte_woche”,
javascript.0 2021-12-24 10:11:42.532 error script.js.common.shelly_statistik compile failed: at script.js.common.shelly_statistik:31
Frohes Fest,
Gruß Josef
Hallo Josef,
kann ich mir kaum vorstellen 😉
Stutzig macht mich:
javascript.0 2021-12-24 10:11:42.534 error SyntaxError: Identifier ‘objekt’ has already been declared
Das hieße, Objekt wird schon verwendet – was aber eigentlich nicht sein kann, wenn es als neues Skript angelegt wurde.
Fügst Du das Skript als ein neues Javascript ein?
Bitte mal einen Screenshot von den Log-Einträgen per Mail an Stephan@Kreyenborg.koeln.
Im Text kann man das hier leider schwer erkennen.
Dir und Deiner Familie auch schöne Weihnachten!
Gruß,
Stephan
Hallo Stephan,
auch ich möchte mich als erstes für deine tolle Arbeit und dein Engagement bedanken.
Mein Problem: Bei allen meiner 3 RGW2 Shellys wurde der Ordner lights nicht angelegt.
Erkannt wurden sie alle. Habe das Skript bereits mehrfach gestoppt, die Ordner gelöscht und dann das Skript erneut gestartet.
Leider immer ohne Erfolg.
Bin sehr gespannt, woran es liegt bzw. was ich falsch gemacht habe.
Besten Dank im Voraus!
Hallo Achim,
tut mir Leid, wenn Du mit einem meiner Skripte Probleme hast.
Die Shelly RGBW2 zeigen leider nur den aktuellen Verbrauch an – der WattStunden Verbrauch wird aktuell noch nicht protokolliert.
Hierzu fehlt der Datenpunkt “Energy”.
Gruß,
Stephan
Hallo Stephan,
du must dich doch nicht für dein Skript entschuldigen, wenn Shelly nicht die entsprechenden Daten liefert.
Werde auch weiterhin viel Freude damit haben.
Vielen Dank für deine schnelle Antwort!
Achim
Hallo Stephan,
auch ich bedanke mich für die Veröffentlichung.
Wäre es möglich noch die beiden channel-Namen der Shelly 2.5 mit zu übernehmen?
Vielen Dank und Gruß
Roland
HI Roland,
freut mich, wenn das Skript bei Dir funktioniert.
Du kannst derzeit dem 2.5 einen generellen Namen geben und beide Kanäle benennen. Das Skript liest den “generellen” Namen aus.
So kannst Du z.B. den generellen Namen in “Esszimmer/Wohnzimmer” benennen. Eine Unterscheidung der Kanäle findet aktuell nicht statt.
Ich schaue mal, ob man das Umsetzen kann.
Gruß,
Stephan
Vielen Dank! Wäre klasse 🙂
Hallo Stephan,
Shelly löschen und neu anlegen hat geholfen. Fehlermeldung weg!
Tschüss
Rolf
PS: Das Script für Sonoff/Tasmota läuft auch prima! Danke..
Prima, wenn sich solche kleinen Problemchen schnell lösen lassen 😉
Hallo Stephan,
danke für die schnelle Antwort 🙂
Meinst Du es würde helfen, den Shelly löschen und neu anlegen?
Viele Grüße und schönes Wochenende
Rolf
… das bleibt Dir überlassen.
Auf jeden Fall kommt der Fehler vom Shelly Adapter. Anscheinend gibt es ein Problem mit einem 3EM.
Hallo Stephan,
danke für das tolle Script. Es läuft soweit, auch die Daten werden soweit ich das überblicken kann ausgelesen. Nur es kommen bei jedem Abruf folgende Fehlermeldungen , die ich nicht zuordnen kann. Ich bin nicht der Programmierer, deshalb die Bitte um Hilfe. 🙂 Die angemeckerten Datenpunkte existieren nicht. Soll ich sie manuell anlegen?
Schon mal vielen Dank für Deine Hilfe
Rolf
shelly.0
2021-11-26 20:07:33.538 error Error TypeError: Cannot read property ‘val’ of null in function dp.mqtt.mqtt_publish_funct for state SHEM-3#xxxxxx#1.Total.Total_Returned for 192.168.178.30 (shellyem3 / shellyem3-xxxxxx / SHEM-3#xxxxxx#1)
shelly.0
2021-11-26 20:07:33.495 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter2.Voltage” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:33.495 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter2.Current” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:33.495 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter2.Power” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:33.495 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter1.Voltage” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:33.495 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter1.Current” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:33.495 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter1.PowerFactor” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:33.495 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter1.Power” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:33.495 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter0.Voltage” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:33.494 warn State “shelly.0.SHEM-3#xxxxxx#1.Emeter0.Power” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:29.980 warn State “shelly.0.SHEM-3#xxxxxx#1.rssi” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:29.980 warn State “shelly.0.SHEM-3#xxxxxx#1.uptime” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:24.896 warn State “shelly.0.SHEM-3#xxxxxx#1.uptime” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:19.805 warn State “shelly.0.SHEM-3#xxxxxx#1.rssi” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:19.805 warn State “shelly.0.SHEM-3#xxxxxx#1.uptime” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:19.805 warn State “shelly.0.SHEM-3#xxxxxx#1.Total.Voltage” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:19.504 warn State “shelly.0.SHEM-3#xxxxxx#1.Total.VoltageMean” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:19.504 warn State “shelly.0.SHEM-3#xxxxxx#1.Total.Current” has no existing object, this might lead to an error in future versions
shelly.0
2021-11-26 20:07:19.503 warn State “shelly.0.SHEM-3#xxxxxx#1.Total.InstantPower” has no existing object, this might lead to an error in future versions
Hallo Rolf-Dieter,
Danke für deine Nachricht.
Die Meldungen kommen nicht von meinem Skript.
Dies liegt am Shelly Adapter selbst.
Bitte dort einmal prüfen.
Gruß,
Stephan
Hallo Stephan,
Danke für das super Skript.
Leider habe ich das Problem, dass in den Feldern
heute, (auch nach mehreren Tagen) diese Woche, etc. die gleichen Werte sind.
Bitte um Info
Besten Dank im voraus
LG Bernhard
Hallo Bernhard,
tut mir Leid, wenn es mit dem Skript ein Problem gibt.
Ich würde Dich bitten, mir einmal einen Screenshot der aufgeklappten Objekt-Struktur bei
javascript.0.ShellyVerbrauch.Dein_Shelly.(lights,Relay0,Relay1,usw)
von einem Shelly per Email an Stephan@Kreyenborg.koeln zu schicken.
Dann schauen wir weiter 😉
Fehler im Log hast Du aber nicht?
Gruß,
Stephan
Hallo Stephan,
vielen Dank für das super Skript, nach sowas hatte ich schon lange gesucht.
LG
Pascal
Hallo Pascal,
freut mich, wenn es Dir geholfen hat.
Danke für deine Rückmeldung.
Gruß,
Stephan
interessantes script
leider lassen sich die datenpunkte via VIS nicht abgreifen
gruß medoc
Hallo Medoc,
aber natürlich lassen sich die Werte in VIS und allen anderen Visualisierungen darstellen.
Woran machst du Deine Erkenntnis fest?
Gruß,
Stephan
erledigt, system brauchte einen neustart
Hallo Stephan,,
vielen Dank für das Script,
habe es auch am Laufen, die Datenpunkte werden angelegt,
aber im Protokoll kommt die folgende Fehlermeldung:
javascript.0
2021-11-01 22:39:30.011 warn at Object. (script.js.shelly_verbrauch:6:4)
javascript.0
2021-11-01 22:39:30.005 warn at Object. (script.js.shelly_verbrauch:5:4)
Kenne mich mit JS leider nicht aus und kann dies daher nicht deuten.
Könntest du evtl. helfen?
Hallo Eugen,
danke für deine Nachricht.
Um weiter nach Lösungen zu suchen, würde ich dich bitten, die komplette Fehlermeldung mitzuteilen.
Gruß,
Stephan
Hallo Stephan,
viel mehr Fehlermeldungen gibt es da nicht, oder teile mir ggf. mit, wo ich noch nachschauen kann.
Gruß
Eugen
Hallo Eugen,
welche Version meines Skriptes verwendest Du?
Die hier abgebildete Version 1.5?
Kannst Du mir vielleicht einen Screenshot der Log-Ausgabe senden, wo der Fehler steht?
Bitte auch etwas von davor und danach.
E-Mail: Stephan@Kreyenborg.koeln
Danke!
Hi,
vielen Dank für das tolle Script!
Ich habe ein kleines Problem, vielleicht kannst Du es ja lösen.
Ich habe einen Shelly 3em im Einsatz
Habe dein Script gestartet, die Datenpunkte usw. werden auf den ersten Blick auch alle angelegt und die Daten scheinen auch richtig zu sein. Allerdings wird meine Log Datei im iobroker ein bisschen voll, denn im Log erscheint immer wenn das Script neu startet bzw. die Funktion ausführt folgendes:
2021-10-31 20:02:00.011 – warn: javascript.0 (87288) getState “shelly.0.SHEM-3#C45BBE6BD432#1.name” not found (3)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at script.js.common.Shelly-Verbrauchs-Script:256:37
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:819:29)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at aktualisiere_namen (script.js.common.Shelly-Verbrauchs-Script:255:15)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at Object.shelly_verbrauch_update (script.js.common.Shelly-Verbrauchs-Script:228:1)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1313:34)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:168:15)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at listOnTimeout (internal/timers.js:554:17)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at processTimers (internal/timers.js:497:7)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) getState “shelly.0.SHEM-3#C45BBE6BD432#1.name” not found (3)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at script.js.common.Shelly-Verbrauchs-Script:259:14
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:819:29)
2021-10-31 20:02:00.012 – warn: javascript.0 (87288) at aktualisiere_namen (script.js.common.Shelly-Verbrauchs-Script:255:15)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Object.shelly_verbrauch_update (script.js.common.Shelly-Verbrauchs-Script:228:1)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1313:34)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:168:15)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at listOnTimeout (internal/timers.js:554:17)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at processTimers (internal/timers.js:497:7)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) getState “shelly.0.SHEM-3#C45BBE6BD432#1.name” not found (3)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at script.js.common.Shelly-Verbrauchs-Script:260:14
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:819:29)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at aktualisiere_namen (script.js.common.Shelly-Verbrauchs-Script:255:15)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Object.shelly_verbrauch_update (script.js.common.Shelly-Verbrauchs-Script:228:1)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1313:34)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:168:15)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at listOnTimeout (internal/timers.js:554:17)
2021-10-31 20:02:00.013 – warn: javascript.0 (87288) at processTimers (internal/timers.js:497:7)
2021-10-31 20:02:00.013 – info: javascript.0 (87288) script.js.common.Shelly-Verbrauchs-Script: Shelly Verbrauch: Verbrauchswerte aktualisiert: 2 | Reboots korrigiert: 0 | Unveränderte Werte: 2
Hast Du einen Tipp für mich?
Hallo Steve,
danke für deine Rückmeldung.
Kannst Du vielleicht einmal schauen, ob der Datenpunkt: “shelly.0.SHEM-3#C45BBE6BD432#1.name” vorhanden ist?
Sieht so aus, als wäre der Datenpunkt mit dem Namen nicht vorhanden.
Dies bringt den o.g. Fehler.
Gruß,
Stephan
ist vorhanden unter
shelly > 0 > SHEM-3#C45BBE6BD432#1 > name mit dem Wert (null)
https://ibb.co/c6vBr4d < Hab mal den Sreenshot hochgeladen.
Prima, kannst du dort mal einen Namen eingeben und das Skript nochmal starten?
Bleiben die Fehlermeldungen?
Öhhhh, wie kann ich denn einen Wert da eintragen? Wenn ich den Datenpunkt editiere, habe ich da keine Option einen Wert einzutragen.
https://ibb.co/y8Tsx0v
Du gehst in deine Shelly App auf dem Telefon und gibst den 3EM einen Namen.
Bei den Einstellungen des 3EM den Haken bei Sync Name setzen 😉
ohhhh, hat sich erledigt……Hab jetzt einen Namen da eingetragen, der Fehler ist auf den ersten Blick hin, behoben.
Vielen Danke!
Danke für den Hinweis.
Ich werde das Skript noch anpassen – dieser Fehler könnte häufiger vorkommen.
Danke!
Danke, das hat geholfen. Und auch ein Offset beim Gesamtverbrauch scheint zu funktionieren. Damit müsste ich dann meinen Zählerstand somit in den Gesamt Wert einfließen lassen können
Prima. Welches “Offset” ist gemeint?
schließe mich vielen Vorrednern an, großartiges Script.
Wünsche von meiner Seite, den Namen mit in den DP aufnehmen, so dass man einfacher sieht um welchen es sich handelt.
Beim 3EM wäre die Summer der 3 Phasen noch out of the box interessant. Habe mir jetzt ein eigenes script gebastelt, dass die Werte addiert.
Das ganze jetzt in InfluxDB und Grafana zu bringen ist noch viiiiieel fleißarbeit. Ich fange mal mit der Summe des 3EM an sobald ein paar Daten vorhanden sind.
Hallo Roma,
danke für die Rückmeldung. Freut mich sehr 😉
Die Namen der Datenpunkte werden so genannt, wie Du deine Shelly benennst. Die Namen der Shelly stehen im Datenpunkt:
shelly.0.Shelly.name
Die Addition der 3EM habe ich bewusst weggelassen, da ich auch bei einem 2.5, der 2 Kreise steuern kann, nicht addieren lasse.
Gruß,
Stephan
ich muss leider einen Eintrag aufklappen damit ich ihn sehen kann.
https://ibb.co/1zpWvWq
bei den 2.5er macht das auch meiner Meinung nach total Sinn, dass nicht aufaddiert wird. Sind ja meist 2 unterschiedliche Verbraucher die dran hängen.
Aber am 3EM hängt ja normalerweise das komplette Haus bzw Wohnung, da macht die Summe über alles ja schon Sinn.
Aber trotzdem super Arbeit.
Hast du auch mal über eine Option nachgedacht wie man alte Werte, auch gerne manuell, mit einfliessen lassen könnte? bzw kann ich einfach bei Gesamt den Offset zu meinem Stromzähler hinzuaddieren?
Hallo Roman,
ja, da steht der Name auch drin. Aber in der Ordner Struktur vom ioBroker steht der Name des Shelly in der Bezeichnung des Datenpunkts.
Vielleicht hast du die Spalte “Name” bei ioBroker ausgeblendet?
Zu deinen Anfragen:
Ich baue aktuell Skripte, die in etwa 95% der User “Out-of-the-Box” nutzen können. Sollten die restlichen 5% die Skripte noch anderweitig nutzen wollen,
so steht es Ihnen ja frei, diese zu erweitern. Werte, die von anderen Verbrauchern kommen, machen in einem Skript, welches auf Shelly abzielt wenig Sinn, oder? 😉
Die Aufteilung der Phasen beim 3EM macht durchaus Sinn, da sie physikalisch getrennt sind. Klar lässt sich hier auch eine Addition vornehmen – die aber, soweit mir bekannt ist, nicht so oft gebraucht wird.
Auch sind viele User anders unterwegs und möchten die Phasen einzeln noch irgendwo weiter verwenden.
Du kannst, wenn Du andere Verbräuche protokollieren wollen würdest, den Adapter SourceAnalytic verwenden. Der kann alles protokollieren – ist aber, soweit ich weiss, nicht so genau bzw. nicht so stabil.
Gruß,
Stephan
mmh seltsam, hab extra nachgeschaut, die Spalte Name ist nicht ausgeblendet, bleibt aber bei mir auf Ordnerlevel leer.
und zum 3EM, da bietet shelly selbst ja den Datenpunkt “Total” an. Darunter heissen die Werte dann halt nicht total und energy wie bei den 3 Phasen sondern “ConsumedPower” und “InstantPower”. Wenn du die noch in dein Script aufnimmst wäre sicher noch ein paar mehr Leuten geholfen 😉
Hi Roman,
Du könntest folgendes Versuchen:
– Sicherung der Datenpunkte
– Skript stoppen
– Zeile 25 in “true” ändern
– Skript starten
– 1 Minute warten
– Skript stoppen
– Zeile 25 wieder auf false setzen
– Skript normal starten
Danach sollten die Datenpunkte die Namen der Shelly enthalten.
Gruß,
Stephan
Hallo bin da Anfänger. Was brauche ich denn genau alles um das Script laufen zu lassen ß Ich habe die Original App von Shelly und die Shelly Cloud, wo ich die Daten von meinem Solarpanel sehen kann.
Hallo Reimund,
für fast alle Dinge benötigst Du ioBroker entweder auf einem Raspberry Pi oder in einer anderen Instanz.
Dazu dann verschiedene Adapter, die Du in ioBroker installieren kannst.
Als Start:
https://www.kreyenborg.koeln/iobroker-installation-auf-einem-raspberry-pi/
Gruß,
Stephan
Hallo Stephan
ich habe das Sript komplett Kopiert und im Io broker unter Skripte common / dann neues Javaskript erstelt ,, dann eingefügt und gestartet.
nur finde ich bei mir die genanten daten punkte nicht.
Hallo Patrick,
schaust du in das Log? Siehst du irgendwelche Fehler?
Wenn nicht, dann musst du die Seite neuladen.
Dann erscheinen die Datenpunkte.
Gruß,
Stephan
Noch eine Frage:
Wie kann ich den Verbrauch der letzten Stunde irgendwie bekommen?
Könntest Du einen DP einfügen?
Gruß tobbes
Hallo Tobbes,
das Skript stellt die Grundbedürfnisse zur Verfügung.
Für genauere Ausgaben kann/sollte jeder das Skript an seine Bedürfnisse anpassen.
Für deinen Einsatzzweck würde sich das protokollieren via influxDB und Ausgabe per Grafana bestens eignen.
Hier hast du dann die Möglichkeit, alles detailliert anzeigen und ausgeben zu lassen.
Gruß,
Stephan
Hallo,
danke für das tolle Script!
Hat es jemand zur Messung der Einspeisung von Solarstrom getestet?
Ein Kommentar gab es hier, aber leider keine Rückmeldung. Würde gerne die Erzeugung an einem Balkonkraftwerk messen.
Gruß tobbes
Hallo Tobbes,
Das Skript zeigt an, was der jeweilige Shelly misst. Somit sollte dies auch mit dem Balkonkraftwerk funktionieren.
Gruß,
Stephan
Moin.
Vilen Dank für das Skript. Genau das habe ich gesucht. Fürs selber schreiben bin ich einfach zu “blöde”.
Das Skript funktioniert soweit. Allerdings habe ich Fehlermeldungen im Protokoll vom ioBroker. Kann mir die einer “übersetzen” was da falsch läuft? Kommt so ca. alle 10min.
javascript.0 2021-06-04 14:39:01.705 error Function “extendObject” is not allowed. Use adapter settings to allow it.
javascript.0 2021-06-04 14:39:01.704 error Function “extendObject” is not allowed. Use adapter settings to allow it.
javascript.0 2021-06-04 14:39:01.704 error Function “extendObject” is not allowed. Use adapter settings to allow it.
javascript.0 2021-06-04 14:39:01.704 error Function “extendObject” is not allowed. Use adapter settings to allow it.
javascript.0 2021-06-04 14:39:01.703 error Function “extendObject” is not allowed. Use adapter settings to allow it.
Hallo Jörg,
der “Fehler” besagt, das du die Einstellung “Erlaube das Kommando ‘setObject'” im JavaScript Adapter aktivieren musst.
Gruß,
Stephan
Hi Stephan.
Danke für die rasche Antwort.
Ok. Dann werde ich die Einstellung heute abend mal anpassen.
🙂
Grüße aus dem Norden…
Jörg
Hallo Stephan,
Erst Mal Danke für das coole Skript.
Wäre es möglich das du auch noch die Quartalswerte errechnen könntest?
Danke und Grüße
Andreas
Hallo Andreas,
Danke für deinen Vorschlag.
Ich schaue es mir mal an und aktualisiere das Skript ggf.
Gruß,
Stephan
Danke
Hallo Stephan
hab da nur ein Problem.
Der aktuelle Wert heute ist ok ,aber der ersten Eintrag nach der Installation war falsch.
Jetzt stimmen die anderen Wert ja nicht !!!! z,b Jahresverbrauch kann man die Werte vielleicht anpassen??
Wie oben beschrieben habe Ich es durch geführt.
( Ich würde vielleicht einfach mal hingehen und den Shelly Adapter stoppen, dann die Steckdose neustarten und dann wieder den Adapter zu starten.)
Gruß Ralf
Hallo Ralf,
Du kannst einfach das Skript nochmal stoppen, dann den kompletten Datenpunkt:
javascript.0.ShellyVerbrauch
löschen. So fängst Du einfach nochmal von Vorne an 😉Gruß,
Stephan
Hallo Stephan
habe es so gemacht. Habe wohl das gleiche Problem wie Tim.
die Werte “Energy” und “aktueller_Wert” sind identisch.
Aber in der Shelly app stimmt der Wert nicht !!!!
Gruß Ralf
Hallo Ralf,
Ich kann leider nicht ganz folgen.
Wenn das Skript läuft, sind die Werte immer identisch, da hier die Prüfung erfolgt, ob der Shelly neugestartet hat.
Die Werte, die von Bedeutung sind, sind alle außer: alter_wert und aktueller_wert. Diese sind nur für die Berechnung notwendig.
Gruß,
Stephan