NEWS
Shelly 1 pm, Influx und Grafana Logging Unterbrechung
-
@rebel85 dann muss auch der Rest funktionieren,
da deine daten ja eh nicht stimmen,
stoppe doch mal das Script, lösche die Datenpunkte und starte das Script neu und beobachte. -
@rebel85 dann muss auch der Rest funktionieren,
da deine daten ja eh nicht stimmen,
stoppe doch mal das Script, lösche die Datenpunkte und starte das Script neu und beobachte. -
/* * @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: 21. April 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 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(id, "heute", verbrauch); // Wochenverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "diese_woche", verbrauch); // Monatsverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "dieser_monat", verbrauch); // Jahresverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "dieses_jahr", verbrauch); // Gesamten Vebrauch aktualisieren aktualisiere_vebrauch_objekt(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(id, "heute", verbrauch); // Wochenverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "diese_woche", verbrauch); // Monatsverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "dieser_monat", verbrauch); // Jahresverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "dieses_jahr", verbrauch); // Gesamten Vebrauch aktualisieren aktualisiere_vebrauch_objekt(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(id, "heute", verbrauch); // Wochenverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "diese_woche", verbrauch); // Monatsverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "dieser_monat", verbrauch); // Jahresverbrauch aktualisieren aktualisiere_vebrauch_objekt(id, "dieses_jahr", verbrauch); // Gesamten Vebrauch aktualisieren aktualisiere_vebrauch_objekt(id, "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(shelly_DP(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(shelly_DP(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" }); } }); // 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)); 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: "" }); }); } function shelly_DP(dp) { dp = dp.split("."); dp = datenpunkt + dp[2] + "." + dp[3] + "."; 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); -
@crunchip
In deinem gepostetem Script fehlt unten eine Zeile mit dem Cronjob für den täglichen, wöchentlichen und monatlichen Übertrag. Wenn der TE das so benutzt kann’s nicht funktionieren. -
-
Dank der Suche hier auf den Thread gestoßen. Wunderbar, dass hat mich auch richtig verzweifeln lassen, dass es wieder mit 0 beginnt, sobald einmal der Saft weg ist/war.
Ich hab die Shellys bislang mit dem Shelly-Adapter verbunden. Das ganze über MQTT.
Ich hätte hierzu noch ein paar Fragen:
-
Gibt es mittlerweile eine Alternative, als ein Skript hierzu?
-
Ich habe testweise vor zwei Tagen mit den Plug S´s angefangen. Nach Stromlos fängt es bei 0 an. In Grafana ist das für die eigentlich fortlaufende Gesamtverbrauchsmessung in den Diagrammen natürlich komisch. Außer einer kompletten Neuinstallation von InfluxDB, gibt es eine Möglichkeit, gewisse Shellys, jene (Plug S, 1 PM) die die Messfunktion inne haben, aber bei 0 nach Stromlosigkeit wieder die Energy (Gesamtverbrauch) messen, in InfluxDB das Ganze nochmals frisch anfangen zu lassen?
-
Wenn es mit dem Skript die beste Lösung ist, habe es noch nicht versucht, da ich ehrlicherweise auf dem Schlauch (ja ich war auch schon auf der kreyenborg-Webseite) steh, wo genau ich das Skript einfügen muss?, dann wäre es wohl besser, InfluxDB nochmals frisch aufzusetzen.
-
Mit Tasmota habe ich mich noch nicht richtig befasst, habe aber in anderen Foren und Beiträgen herauslesen können, das hier die Möglichkeit besteht, sobald man eben diese Firmware auf dem Shelly hat, dort man den Gesamtverbrauchswert manuell nachträglich (noch/wieder) eintragen kann. Wäre ansonsten Tasmota eine Alternative, wenn der Strom mal weg war, oder sollte die shellyeigene Firmware doch drauf bleiben?
-
Eine Frage, die nicht ganz in den Thread passen wird: Ehemalige (z. B. defekte und somit nie wieder im Einsatz) Shellys im Shelly ioBroker-Adapter, wie entfernen? Manuell einfach hinten am Ordner auf das Papierkorb-Symbol klicken, oder gibt es hier eine andere Lösung die sinnvoller ist?
Herzlichen Dank!
-
-
Dank der Suche hier auf den Thread gestoßen. Wunderbar, dass hat mich auch richtig verzweifeln lassen, dass es wieder mit 0 beginnt, sobald einmal der Saft weg ist/war.
Ich hab die Shellys bislang mit dem Shelly-Adapter verbunden. Das ganze über MQTT.
Ich hätte hierzu noch ein paar Fragen:
-
Gibt es mittlerweile eine Alternative, als ein Skript hierzu?
-
Ich habe testweise vor zwei Tagen mit den Plug S´s angefangen. Nach Stromlos fängt es bei 0 an. In Grafana ist das für die eigentlich fortlaufende Gesamtverbrauchsmessung in den Diagrammen natürlich komisch. Außer einer kompletten Neuinstallation von InfluxDB, gibt es eine Möglichkeit, gewisse Shellys, jene (Plug S, 1 PM) die die Messfunktion inne haben, aber bei 0 nach Stromlosigkeit wieder die Energy (Gesamtverbrauch) messen, in InfluxDB das Ganze nochmals frisch anfangen zu lassen?
-
Wenn es mit dem Skript die beste Lösung ist, habe es noch nicht versucht, da ich ehrlicherweise auf dem Schlauch (ja ich war auch schon auf der kreyenborg-Webseite) steh, wo genau ich das Skript einfügen muss?, dann wäre es wohl besser, InfluxDB nochmals frisch aufzusetzen.
-
Mit Tasmota habe ich mich noch nicht richtig befasst, habe aber in anderen Foren und Beiträgen herauslesen können, das hier die Möglichkeit besteht, sobald man eben diese Firmware auf dem Shelly hat, dort man den Gesamtverbrauchswert manuell nachträglich (noch/wieder) eintragen kann. Wäre ansonsten Tasmota eine Alternative, wenn der Strom mal weg war, oder sollte die shellyeigene Firmware doch drauf bleiben?
-
Eine Frage, die nicht ganz in den Thread passen wird: Ehemalige (z. B. defekte und somit nie wieder im Einsatz) Shellys im Shelly ioBroker-Adapter, wie entfernen? Manuell einfach hinten am Ordner auf das Papierkorb-Symbol klicken, oder gibt es hier eine andere Lösung die sinnvoller ist?
Herzlichen Dank!
@rene benutze doch einfach das Script. Wenn das schon nicht für einfach hältst sind deine anderen Möglichkeiten für dich kaum umsetzbar.
Einfach unter Scripte ein neues erstellen und den Code in dies einfügen. Abspeichern und starten.
Zu.3 ja einfach raus löschen. -
-
Dank der Suche hier auf den Thread gestoßen. Wunderbar, dass hat mich auch richtig verzweifeln lassen, dass es wieder mit 0 beginnt, sobald einmal der Saft weg ist/war.
Ich hab die Shellys bislang mit dem Shelly-Adapter verbunden. Das ganze über MQTT.
Ich hätte hierzu noch ein paar Fragen:
-
Gibt es mittlerweile eine Alternative, als ein Skript hierzu?
-
Ich habe testweise vor zwei Tagen mit den Plug S´s angefangen. Nach Stromlos fängt es bei 0 an. In Grafana ist das für die eigentlich fortlaufende Gesamtverbrauchsmessung in den Diagrammen natürlich komisch. Außer einer kompletten Neuinstallation von InfluxDB, gibt es eine Möglichkeit, gewisse Shellys, jene (Plug S, 1 PM) die die Messfunktion inne haben, aber bei 0 nach Stromlosigkeit wieder die Energy (Gesamtverbrauch) messen, in InfluxDB das Ganze nochmals frisch anfangen zu lassen?
-
Wenn es mit dem Skript die beste Lösung ist, habe es noch nicht versucht, da ich ehrlicherweise auf dem Schlauch (ja ich war auch schon auf der kreyenborg-Webseite) steh, wo genau ich das Skript einfügen muss?, dann wäre es wohl besser, InfluxDB nochmals frisch aufzusetzen.
-
Mit Tasmota habe ich mich noch nicht richtig befasst, habe aber in anderen Foren und Beiträgen herauslesen können, das hier die Möglichkeit besteht, sobald man eben diese Firmware auf dem Shelly hat, dort man den Gesamtverbrauchswert manuell nachträglich (noch/wieder) eintragen kann. Wäre ansonsten Tasmota eine Alternative, wenn der Strom mal weg war, oder sollte die shellyeigene Firmware doch drauf bleiben?
-
Eine Frage, die nicht ganz in den Thread passen wird: Ehemalige (z. B. defekte und somit nie wieder im Einsatz) Shellys im Shelly ioBroker-Adapter, wie entfernen? Manuell einfach hinten am Ordner auf das Papierkorb-Symbol klicken, oder gibt es hier eine andere Lösung die sinnvoller ist?
Herzlichen Dank!
@rene sagte in Shelly 1 pm, Influx und Grafana Logging Unterbrechung:
wo genau ich das Skript einfügen muss
hast du denn generell schon Scripte laufen?
wenn ja, >Neues JavaScript erstellen und da einfügen -
-
@rene sagte in Shelly 1 pm, Influx und Grafana Logging Unterbrechung:
wo genau ich das Skript einfügen muss
hast du denn generell schon Scripte laufen?
wenn ja, >Neues JavaScript erstellen und da einfügen -
@rene benutze doch einfach das Script. Wenn das schon nicht für einfach hältst sind deine anderen Möglichkeiten für dich kaum umsetzbar.
Einfach unter Scripte ein neues erstellen und den Code in dies einfügen. Abspeichern und starten.
Zu.3 ja einfach raus löschen. -
@crunchip @SpacerX Ich habe das Script im Adapter Skripte eingefügt und gestartet. Es fand die 19 Shellys, die die Messungen vornehmen. Anschließend einen Test ausgeführt und einen Shelly kurz stromlos gezogen und wieder eingesteckt. Der Wert fing wie zu erwarten im Shelly-Adapter bei Energy (Versuchs-Shelly) mit 0 wieder an. Ebenso in Grafana die Kurve nach/ab 0 zu sehen. Erst dachte ich, schade, geht nicht.

Minuten Später jedoch im Log 19 Mal die identische Fehlermeldung gesehen. Glücklicherweise wird diese Fehlermeldung auf der kreyenborg-Webseite angegeben, erwähnt. Fehler somit kurzerhand behebbar gewesen. Musste im JavaScript-Adapter den Haken bei "Kommando "setObject" erlauben" setzen. Seither kein Fehler mehr im Log. Hurra.
Die Werte konnte ich jetzt in den Objekten finden, die das Skript zieht/erstellt.

Hier noch die abschließende Frage. Muss ich in InfluxDB den Weg abändern (hin zu den Objekten mit den Werten die das Skript erstellt), wo die Messwerte gezogen/erstellt werden sollen, oder schreibt eben dieses Skript in Intervallen X die/den Wert(e) an den Shelly X in Energy zurück, wenn dieser aus welchen Gründen, erneut durch die Stromlosigkeit bei 0 anfängt?
Bis jetzt hatte ich es die Tage so, dass ich beim jeweiligen Shelly bei "Energy" und "Power" in den "Benutzerdefinierte Einstellungen" InfluxDB manuell aktiviert habe und dadurch die Aufzeichnung und Grafik im ioBroker-Objekt somit zu sehen war und in InfluxDB protokolliert wurde, etc. pp. von dort zu Grafana.
Ungeachtet davon, dass durch das Skript viel mehr Werte zur Verfügung stehen, wäre es im generellen Umkehrschluss richtig, die Werte die durch das Skript aufgezeichnet und gespeichert werden, hier im jeweiligen Objekt "Benutzerdefinierte Einstellungen" InfluxDB manuell zu aktiveren? Das ich nicht aus dem Shelly-Adapter, Shelly X, Energy und Power ziehe, sondern aus dem oben genannten (und dem Screenshot)?
Verzeiht mir die Fragerei. Ich muss noch viel lernen und Frage deswegen vielleicht auch mehr als üblich.
Danke.
-
@crunchip @SpacerX Ich habe das Script im Adapter Skripte eingefügt und gestartet. Es fand die 19 Shellys, die die Messungen vornehmen. Anschließend einen Test ausgeführt und einen Shelly kurz stromlos gezogen und wieder eingesteckt. Der Wert fing wie zu erwarten im Shelly-Adapter bei Energy (Versuchs-Shelly) mit 0 wieder an. Ebenso in Grafana die Kurve nach/ab 0 zu sehen. Erst dachte ich, schade, geht nicht.

Minuten Später jedoch im Log 19 Mal die identische Fehlermeldung gesehen. Glücklicherweise wird diese Fehlermeldung auf der kreyenborg-Webseite angegeben, erwähnt. Fehler somit kurzerhand behebbar gewesen. Musste im JavaScript-Adapter den Haken bei "Kommando "setObject" erlauben" setzen. Seither kein Fehler mehr im Log. Hurra.
Die Werte konnte ich jetzt in den Objekten finden, die das Skript zieht/erstellt.

Hier noch die abschließende Frage. Muss ich in InfluxDB den Weg abändern (hin zu den Objekten mit den Werten die das Skript erstellt), wo die Messwerte gezogen/erstellt werden sollen, oder schreibt eben dieses Skript in Intervallen X die/den Wert(e) an den Shelly X in Energy zurück, wenn dieser aus welchen Gründen, erneut durch die Stromlosigkeit bei 0 anfängt?
Bis jetzt hatte ich es die Tage so, dass ich beim jeweiligen Shelly bei "Energy" und "Power" in den "Benutzerdefinierte Einstellungen" InfluxDB manuell aktiviert habe und dadurch die Aufzeichnung und Grafik im ioBroker-Objekt somit zu sehen war und in InfluxDB protokolliert wurde, etc. pp. von dort zu Grafana.
Ungeachtet davon, dass durch das Skript viel mehr Werte zur Verfügung stehen, wäre es im generellen Umkehrschluss richtig, die Werte die durch das Skript aufgezeichnet und gespeichert werden, hier im jeweiligen Objekt "Benutzerdefinierte Einstellungen" InfluxDB manuell zu aktiveren? Das ich nicht aus dem Shelly-Adapter, Shelly X, Energy und Power ziehe, sondern aus dem oben genannten (und dem Screenshot)?
Verzeiht mir die Fragerei. Ich muss noch viel lernen und Frage deswegen vielleicht auch mehr als üblich.
Danke.
@rene sagte in Shelly 1 pm, Influx und Grafana Logging Unterbrechung:
Hier noch die abschließende Frage. Muss ich in InfluxDB den Weg abändern (hin zu den Objekten mit den Werten die das Skript erstellt), wo die Messwerte gezogen/erstellt werden sollen, oder schreibt eben dieses Skript in Intervallen X die/den Wert(e) an den Shelly X in Energy zurück, wenn dieser aus welchen Gründen, erneut durch die Stromlosigkeit bei 0 anfängt?
nein, die neu entstandenen Datenpunkte durch das Script musst du jetzt dazu hernehmen in Influx zu loggen, ist ja Sinn des Scripts.
Ausser die momentan Werte wie Volt Ampere, Watt und Temperatur, falls benötigt weiterhin vom shelly loggen(diese haben mit dem Script ja nichts zu tun. -
@rene sagte in Shelly 1 pm, Influx und Grafana Logging Unterbrechung:
Hier noch die abschließende Frage. Muss ich in InfluxDB den Weg abändern (hin zu den Objekten mit den Werten die das Skript erstellt), wo die Messwerte gezogen/erstellt werden sollen, oder schreibt eben dieses Skript in Intervallen X die/den Wert(e) an den Shelly X in Energy zurück, wenn dieser aus welchen Gründen, erneut durch die Stromlosigkeit bei 0 anfängt?
nein, die neu entstandenen Datenpunkte durch das Script musst du jetzt dazu hernehmen in Influx zu loggen, ist ja Sinn des Scripts.
Ausser die momentan Werte wie Volt Ampere, Watt und Temperatur, falls benötigt weiterhin vom shelly loggen(diese haben mit dem Script ja nichts zu tun.@crunchip Vielen vielen Dank!
Somit weis ich jetzt, was letzten Endes der richtige Weg ist, damit alles nach Wunsch läuft.
Damit ich komplett bei 0 mit allen Shellys und dessen Werten anfange, wäre dieser einmalige Vorgang richtig?
- Alle Mess-Shelly einmal komplett stromlos machen
- Das besagte Skript nochmals löschen
- InfluxDB über die Instanz-Einstellung „Alle Daten in Datenbank löschen“ betätigen
- Bei allen 19 Shellys, je bei „Energy“ und „Power“ die zuvor gesetzte "Benutzerdefinierte Einstellungen" „InfluxDB aktivieren“, Haken wieder herausnehmen
- Das besagte Skript erneut erstellen, Starten
- 5 Minuten warten
- Alle Shellys wieder mit Strom versorgen
- Die Werte „Power“ und „Energy“ (und sofern die weiteren Werte gewollt sind) aus den Skript-Aufzeichnungen mit den "Benutzerdefinierte Einstellungen", „Influx DB aktivieren“ anhaken
- In Grafana eben nochmals die neuen Verweise auf die InfluxDB zu Shelly X, Y, Z einpflegen
- Sollte künftig der Strom, der Shelly dadurch wieder bei 0 im Gesamtverbrauch anfangen, keine Sorgen mehr, da alles aus der Skript-Aufzeichnung entnommen und weiterprotokolliert wird
Ich hoffe, die Beschreibung ist nicht zu Umständlich gedacht. Und auch zu guter Letzt, nochmals dickes Danke für eure Unterstützung beim Erlernen.
-
@crunchip Vielen vielen Dank!
Somit weis ich jetzt, was letzten Endes der richtige Weg ist, damit alles nach Wunsch läuft.
Damit ich komplett bei 0 mit allen Shellys und dessen Werten anfange, wäre dieser einmalige Vorgang richtig?
- Alle Mess-Shelly einmal komplett stromlos machen
- Das besagte Skript nochmals löschen
- InfluxDB über die Instanz-Einstellung „Alle Daten in Datenbank löschen“ betätigen
- Bei allen 19 Shellys, je bei „Energy“ und „Power“ die zuvor gesetzte "Benutzerdefinierte Einstellungen" „InfluxDB aktivieren“, Haken wieder herausnehmen
- Das besagte Skript erneut erstellen, Starten
- 5 Minuten warten
- Alle Shellys wieder mit Strom versorgen
- Die Werte „Power“ und „Energy“ (und sofern die weiteren Werte gewollt sind) aus den Skript-Aufzeichnungen mit den "Benutzerdefinierte Einstellungen", „Influx DB aktivieren“ anhaken
- In Grafana eben nochmals die neuen Verweise auf die InfluxDB zu Shelly X, Y, Z einpflegen
- Sollte künftig der Strom, der Shelly dadurch wieder bei 0 im Gesamtverbrauch anfangen, keine Sorgen mehr, da alles aus der Skript-Aufzeichnung entnommen und weiterprotokolliert wird
Ich hoffe, die Beschreibung ist nicht zu Umständlich gedacht. Und auch zu guter Letzt, nochmals dickes Danke für eure Unterstützung beim Erlernen.
@rene sagte in Shelly 1 pm, Influx und Grafana Logging Unterbrechung:
Damit ich komplett bei 0 mit allen Shellys und dessen Werten anfange, wäre dieser einmalige Vorgang richtig?
nein
willst du bei 0 beginnen musst du nicht ALLES neu einrichten. es spielt auch keine Rolle welchen Wert ein shelly aktuell anzeigt, also musst du diese nicht stromlos machen, denn das Script, zählt ab Aktivierung.
damit du nicht alles neu machen musst(Grafana) bzw das loggen der Influx lässt du Influxdb aktiv, du musst lediglich die Instanz auschalten, damit vorübergehend nicht geloggt wird und kannst so die Datenbank leeren
Reihenfolge-
Script stoppen
-
Objektbaum den das script angelegt hat komplett löschen(dadurch ist das loggen für Influx sowieso weg und muss neu eingerichtet werden)
das loggen der original Datenpunkte wie power...besteht weiter(sind ja andere Datenpfade) und musss nicht neu eingerichtet werden -
Influx Instanz stoppen, bzw dort gibt es den Button, alle Daten in Datenbank löschen( dann ist allerdings ALLES weg) auch anderweitige geloggte Datenpunkte und werden bei anschließendem starten der Influx Instanz neu geschrieben. Ansonsten musst du nicht gewünschte Datenpunkte manuell aus der InfluxDB löschen, bei gestoppter Instanz.
-
Script wieder starten, Daten werden neu angelegt und kannst bei den jeweiligen Datenpunkte das loggen wieder aktivieren, nachdem die Influxdb Instanz wieder aktiv ist.
-
in Grafana musst du nichts neu machen, da die Datenpunkte die selbe Bezeichnung bekommen(sofern du beim loggen in der Influx Instanz keinen Aliasnamen verwendet hast, sondern die original Datenpunkte)
-
eine weitere Möglichkeit wäre, zum üben/basteln, sich eine zweite Influxdb Instanz/Datenbank zu installieren, dort kann man nach belieben Daten loggen und wenn nicht mehr benötigt, diese einfach wieder leeren. Somit hat man eine zweite Instanz und die andere, für die Langzeit.Aufzeichnung und wichtigen Sachen, bleibt davon unberührt.
-
@rene sagte in Shelly 1 pm, Influx und Grafana Logging Unterbrechung:
Damit ich komplett bei 0 mit allen Shellys und dessen Werten anfange, wäre dieser einmalige Vorgang richtig?
nein
willst du bei 0 beginnen musst du nicht ALLES neu einrichten. es spielt auch keine Rolle welchen Wert ein shelly aktuell anzeigt, also musst du diese nicht stromlos machen, denn das Script, zählt ab Aktivierung.
damit du nicht alles neu machen musst(Grafana) bzw das loggen der Influx lässt du Influxdb aktiv, du musst lediglich die Instanz auschalten, damit vorübergehend nicht geloggt wird und kannst so die Datenbank leeren
Reihenfolge-
Script stoppen
-
Objektbaum den das script angelegt hat komplett löschen(dadurch ist das loggen für Influx sowieso weg und muss neu eingerichtet werden)
das loggen der original Datenpunkte wie power...besteht weiter(sind ja andere Datenpfade) und musss nicht neu eingerichtet werden -
Influx Instanz stoppen, bzw dort gibt es den Button, alle Daten in Datenbank löschen( dann ist allerdings ALLES weg) auch anderweitige geloggte Datenpunkte und werden bei anschließendem starten der Influx Instanz neu geschrieben. Ansonsten musst du nicht gewünschte Datenpunkte manuell aus der InfluxDB löschen, bei gestoppter Instanz.
-
Script wieder starten, Daten werden neu angelegt und kannst bei den jeweiligen Datenpunkte das loggen wieder aktivieren, nachdem die Influxdb Instanz wieder aktiv ist.
-
in Grafana musst du nichts neu machen, da die Datenpunkte die selbe Bezeichnung bekommen(sofern du beim loggen in der Influx Instanz keinen Aliasnamen verwendet hast, sondern die original Datenpunkte)
-
eine weitere Möglichkeit wäre, zum üben/basteln, sich eine zweite Influxdb Instanz/Datenbank zu installieren, dort kann man nach belieben Daten loggen und wenn nicht mehr benötigt, diese einfach wieder leeren. Somit hat man eine zweite Instanz und die andere, für die Langzeit.Aufzeichnung und wichtigen Sachen, bleibt davon unberührt.
@crunchip Alles klar. Das hört sich um vieles besser an, als ich dachte. Ich werde das heute Abend so umsetzen und berichte danach, ob alles reibungslos verlief.
Eine letzte Frage noch zur Thematik. Ich glaube, ich habe damit dann alle Fragen innerlich abgehakt.

Wenn ich das Ganze nachher einmalig so umsetzte um eben schön mit 0 zu beginnen, wie verhält es sich, wenn ich nachträglich weitere Shelly-Messgeräte (Plug S, 1 Pm, etc.) z. B. einbinde? Muss ich nach jedem neu angemeldeten Shelly-Gerät in dem Shelly-Adapter, dass Skript Neustarten, oder findet dies automatisch die neuen Geräte und erstellt hierfür die Ordner mit den künftigen Werten?
-
-
@crunchip Alles klar. Das hört sich um vieles besser an, als ich dachte. Ich werde das heute Abend so umsetzen und berichte danach, ob alles reibungslos verlief.
Eine letzte Frage noch zur Thematik. Ich glaube, ich habe damit dann alle Fragen innerlich abgehakt.

Wenn ich das Ganze nachher einmalig so umsetzte um eben schön mit 0 zu beginnen, wie verhält es sich, wenn ich nachträglich weitere Shelly-Messgeräte (Plug S, 1 Pm, etc.) z. B. einbinde? Muss ich nach jedem neu angemeldeten Shelly-Gerät in dem Shelly-Adapter, dass Skript Neustarten, oder findet dies automatisch die neuen Geräte und erstellt hierfür die Ordner mit den künftigen Werten?
@rene sagte in Shelly 1 pm, Influx und Grafana Logging Unterbrechung:
Muss ich nach jedem neu angemeldeten Shelly-Gerät in dem Shelly-Adapter, dass Skript Neustarten
ja, einmal neu starten damit die neuen Geräte eingelesen werden
-
@crunchip Alles klar. Das hört sich um vieles besser an, als ich dachte. Ich werde das heute Abend so umsetzen und berichte danach, ob alles reibungslos verlief.
Eine letzte Frage noch zur Thematik. Ich glaube, ich habe damit dann alle Fragen innerlich abgehakt.

Wenn ich das Ganze nachher einmalig so umsetzte um eben schön mit 0 zu beginnen, wie verhält es sich, wenn ich nachträglich weitere Shelly-Messgeräte (Plug S, 1 Pm, etc.) z. B. einbinde? Muss ich nach jedem neu angemeldeten Shelly-Gerät in dem Shelly-Adapter, dass Skript Neustarten, oder findet dies automatisch die neuen Geräte und erstellt hierfür die Ordner mit den künftigen Werten?
-
@rene sagte in Shelly 1 pm, Influx und Grafana Logging Unterbrechung:
Muss ich nach jedem neu angemeldeten Shelly-Gerät in dem Shelly-Adapter, dass Skript Neustarten
ja, einmal neu starten damit die neuen Geräte eingelesen werden