NEWS
[gelöst] kwh berechnen und fortlaufend speichern
-
Hallo Gemeinde,
heute kamen meine https://www.amazon.de/Steckdose-Gosund-Stromverbrauch-Fernsteurung-Kompatibel/dp/B07FVR7PG7/ref=sr_1_1?ie=UTF8&qid=1545071319&sr=8-1&keywords=gosund. Ohne Probleme konnte ich diese über den https://forum.iobroker.net/viewtopic.php?f=36&t=18029&hilit=tuya in ioBroker einbinden. Mich interessieren vor allem die Verbrauchswerte der eingesteckten Verbraucher.
Der Adpater liefert auch die aktuellen Werte mit einem Polling von 60 zurück. Ich möchte aber den Verbrauch in kwh aufzeichnen, und zwar aufsteigend. In der App funktioniert dass. Der Wert soll kontinuierlich hochgezählt werden.
Hier muss ich dass dann wohl per Script machen, und den Wert dann in eine Variable speichern. Ich nutze auch den MYSQL Adapter.
Wie kann ich das denn per Script (Blockly oder JS) realisieren?
-
hat das teil keinen wert fuer gesammt ?
also das du anhand des gesammt standes de verbrauch/kosten berechnen kannst, wen ja hab ich in kuerze nen adapter fuer dich
-
hat das teil keinen wert fuer gesammt ? `
Hallo Dutschman,in der Android App werden die Werte berechnet, aber nicht in den Adapter übernommen (siehe Screenshots)
also das du anhand des gesammt standes de verbrauch/kosten berechnen kannst, wen ja hab ich in kuerze nen adapter fuer dich `
Na dann bin ich gespannt
4249_gosund-steckdose-002.jpg
4249_gosund-steckdose-001.jpg -
Wenn man nur die Leistung zur Verfügung hat, muß man integrieren.
const idPower = '...5'; // cur_power const idEnergy = 'Waschmaschine.Energieverbrauch'; // kWh // Energie-Datenpunkt erzeugen createState(idEnergy, 1.11, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen ! var energy = 1000 * getState(idEnergy).val; // Wh, erzeugt beim ersten Skripstart Fehler on({id: idPower}, function(dp) { energy = energy + dp.oldState.val * (dp.state.ts - dp.oldState.ts) / 3600000; // Wh setState(idEnergy, Math.round(energy) / 1000, true); // kWh mit 3 Nachkommastellen });
EDIT: Korrigiert state.val –> oldState.val
-
Bei mir sieht das genauso aus wie bei dir.
Habe diese Steckdosen: https://www.amazon.de/gp/product/B0776P … UTF8&psc=1
Hätte wenn möglich gerne eine Aufzeichnung über Tagesverbrauch, Monatsverbrauch, Jahresverbrauch
Vielleicht kann ja jemand der sich damit auskennt ein Script hier einstellen.
-
Wenn man nur die Leistung zur Verfügung hat, muß man integrieren.
const idPower = '...5'; // cur_power const idEnergy = 'Waschmaschine.Energieverbrauch'; // kWh // Energie-Datenpunkt erzeugen createState(idEnergy, 1.11, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen ! var energy = 1000 * getState(idEnergy).val; // Wh, erzeugt beim ersten Skripstart Fehler on({id: idPower}, function(dp) { energy = energy + dp.state.val * (dp.state.ts - dp.oldState.ts) / 3600000; // Wh setState(idEnergy, Math.round(energy) / 1000, true); // kWh mit 3 Nachkommastellen }); ```` `
Hi,
danke, das ist schon mal ein Anfang. Der Datenpunkt wird auch erstellt, aber ja noch nicht live gefüllt. Muss ich hier
const idPower = '...5'; // cur_power
den Datenpunkt eintragen von cur_power (den es ja gibt, wie Du im Screenshot gesehen hast)?
-
Muss ich hier
const idPower = '...5'; // cur_power
den Datenpunkt eintragen von cur_power `
Ja, natürlich. Da gehört die ID des Datenpunktes mit dem Namen cur_power rein. -
Ja, natürlich. Da gehört die ID des Datenpunktes mit dem Namen cur_power rein. `
Danke Dir, dann habe ich es ja verstanden, sorry, habe von JS keine Ahnung…
-
Und nun komme ich an meine Grenzen bei JS, sorry.
Die Zweite Steckdose hat bisher 0,29 kwh verbraucht (laut App). Ich habe das Script entsprechend an diese Doese angepasst. Aber errechnen tut das Script einen Wert von 1,333 kwh
Im Script ist der Anfangswert auf 0.29 gesetzt
// Energie-Datenpunkt erzeugen createState(idEnergy, 0.29, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen !
Was mache ich falsch?
-
Die beiden IDs (oberste zwei Zeilen im Skript) hast Du vor Start des 2. Skripts angepasst ?
-
Die beiden IDs (oberste zwei Zeilen im Skript) hast Du vor Start des 2. Skripts angepasst ? `
Ja, die hatte ich angepasst. Ich habe es gerade nochmal doppelt überprüft. Nachdem ich die Datenpunkte gelöscht hatte, und die Scripte neu gestartet habe, funktioniert es, sehr cool.
Vielen Dank für die schnelle Hilfe!!
-
funktioniert es, `
Dann markiere bitte das Thema im Betreff des ersten Beitags als [gelöst]. -
funktioniert es,
Dann markiere bitte das Thema im Betreff des ersten Beitags als [gelöst].
Erledigt, vielen Dank nochmal.
-
Könntest du bitte dein fertiges Script zur Verfügung stellen?
Hätte auch Interesse daran.
-
Das wäre echt klasse wenn du dein fertiges Script mit uns teilen könntest.
Vielen dank
-
Das fertige Script findet Ihr hier im Beitrag, das hatte paul53 hier gepostet
viewtopic.php?f=21&t=19643&p=205738#p205253
Das ist alles, was benötigt wird. Bei mir läuft es ohne Probleme. Klein und fein.
-
Danke dir,
kannst du mir vielleicht noch erklären wo ich das Script einbaue?
edit:
Ich habe bei Node-Red eine Funktion erstellt und da das JS reinkopiert… siehe Screen
-
Irgendwo stimmt was nicht. Er zeigt immer 0 kwh an.
Wer kann mir weiter helfen?
https://www.bilder-upload.eu/bild-019d55-1545227517.jpg.html
https://www.bilder-upload.eu/bild-a3b592-1545227545.jpg.htmlUnd kann man die Zeile in den Objekten auch zur passenden Steckdose schieben? -
Irgendwo stimmt was nicht. Er zeigt immer 0 kwh an. `
Leerzeichen in der ID sind keine gute Idee ! Schau mal unter javascript.0 nach, welche ID der Energie-Datenpunkt hat und passe die ID im Skript entsprechend an (wahrscheinlich muss das Leerzeichen durch einen Unterstrich ersetzt werden). -
wo ich das Script einbaue? `
Als neues Skript im Javascript-Adapter.