NEWS
[Vorlage] Stromverbrauch protokollieren - (etwas optimiert)
-
Moing,
ich versuche nun schon geraume Zeit dieses Script zum Laufen zu bekommen, aber irgendwie will das nicht klappen.
Offensichtlich wurden / werden nicht alle Datenpunkte für die entsprechenden Geräte angelegt.
Wie ich es verstanden habe werden die HM-Geräte automatisch gefunden/angelegt und die bspw. Zigbee Geräte müssen unter eigene Datenpunkte eingetragen werden oder?
Dennoch bekomme ich immer folgende Fehlermeldung weil nicht alle Objekte angelegt wurden:
! ````
javascript.0 2018-12-09 00:00:00.307 warn Object "javascript.0.Verbrauchszaehler.Spuelmaschine.Kosten._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.305 warn Object "javascript.0.Verbrauchszaehler.Spuelmaschine.Verbrauch._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.305 warn at script.js.Wandtablet.Stromverbrauch_neu:157:9
javascript.0 2018-12-09 00:00:00.305 warn at schreibeZaehlerstand (script.js.Wandtablet.Stromverbrauch_neu:495:9)
javascript.0 2018-12-09 00:00:00.304 warn State "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Zaehlerstand.Tag" not found
javascript.0 2018-12-09 00:00:00.304 warn at script.js.Wandtablet.Stromverbrauch_neu:157:9
javascript.0 2018-12-09 00:00:00.304 warn at schreibeZaehlerstand (script.js.Wandtablet.Stromverbrauch_neu:495:47)
javascript.0 2018-12-09 00:00:00.303 warn getState "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Zaehlerstand.kumuliert" not found (3)
javascript.0 2018-12-09 00:00:00.303 warn at script.js.Wandtablet.Stromverbrauch_neu:155:9
javascript.0 2018-12-09 00:00:00.303 warn at resetVerbrauchUndKosten (script.js.Wandtablet.Stromverbrauch_neu:546:5)
javascript.0 2018-12-09 00:00:00.303 warn State "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch.Tag" not found
javascript.0 2018-12-09 00:00:00.302 warn at script.js.Wandtablet.Stromverbrauch_neu:155:9
javascript.0 2018-12-09 00:00:00.302 warn at resetVerbrauchUndKosten (script.js.Wandtablet.Stromverbrauch_neu:545:5)
javascript.0 2018-12-09 00:00:00.301 warn State "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten.Tag" not found
javascript.0 2018-12-09 00:00:00.301 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten._Tag.Tag_1" does not exist
javascript.0 2018-12-09 00:00:00.301 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten._Tag.Tag_2" does not exist
javascript.0 2018-12-09 00:00:00.301 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten._Tag.Tag_3" does not exist
javascript.0 2018-12-09 00:00:00.301 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten._Tag.Tag_4" does not exist
javascript.0 2018-12-09 00:00:00.301 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten._Tag.Tag_5" does not exist
javascript.0 2018-12-09 00:00:00.301 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten._Tag.Tag_6" does not exist
javascript.0 2018-12-09 00:00:00.301 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten._Tag.Tag_7" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Kosten._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch._Tag.Tag_1" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch._Tag.Tag_2" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch._Tag.Tag_3" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch._Tag.Tag_4" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch._Tag.Tag_5" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch._Tag.Tag_6" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch._Tag.Tag_7" does not exist
javascript.0 2018-12-09 00:00:00.300 warn Object "javascript.0.Verbrauchszaehler.Pumpe.Aussen.Gartenpool.OEQ.Verbrauch._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.298 warn Object "javascript.0.Verbrauchszaehler.Schaltaktor.Heizungsanlage.OEQ.Kosten._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.297 warn Object "javascript.0.Verbrauchszaehler.Schaltaktor.Heizungsanlage.OEQ.Verbrauch._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.295 warn Object "javascript.0.Verbrauchszaehler.Steckdose.HWR.Trockner.LEQ.Kosten._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.294 warn Object "javascript.0.Verbrauchszaehler.Steckdose.HWR.Trockner.LEQ.Verbrauch._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.292 warn Object "javascript.0.Verbrauchszaehler.Steckdose.HWR.Waschmaschine.LEQ0.Kosten._Tag.Tag_8" does not exist
javascript.0 2018-12-09 00:00:00.289 warn Object "javascript.0.Verbrauchszaehler.Steckdose.HWR.Waschmaschine.LEQ0.Verbrauch._Tag.Tag_8" does not existVielleicht kann mir ja jemand mal auf die Sprünge helfen was ich falsch mache
-
Offensichtlich wurden / werden nicht alle Datenpunkte für die entsprechenden Geräte angelegt. `
Datenpunkte werden erst angelegt wenn sich die erste Änderung des Zählerwertes ergeben hat!
> Wie ich es verstanden habe werden die HM-Geräte automatisch gefunden/angelegt und die bspw. Zigbee Geräte müssen unter eigene Datenpunkte eingetragen werden oder?
Da wird nichts automatisch angelegt, deine auszuwertenden Geräte musst du selbst im Config Bereich anlegen
Zeig uns doch mal deine Config?
Hier mal meine Einstellungen zum Vergleich.
// +++++++++ USER ANPASSUNGEN ++++++++++++++++++++++++ // debug logging var logging = true; // Aktivieren der History Instanz var enable_history = false; // history Instanz var instance_history = 'history.0'; // Geräte können unterschiedliche Preise haben var enable_unterschiedlichePreise = true; // Speichern der Werte in zusätzlichen Objekten. // Wenn 0, dann deaktiviert var Tag_Anzahl_Werte_in_der_Vergangenheit = 7; var Woche_Anzahl_Werte_in_der_Vergangenheit = 4; var Monat_Anzahl_Werte_in_der_Vergangenheit = 12; var Quartal_Anzahl_Werte_in_der_Vergangenheit = 4; var Jahr_Anzahl_Werte_in_der_Vergangenheit = 2; // Grundpreis einberechnen var enable_Grundpreis_einberechnen = true; var instance = '0'; var instanz = 'javascript.' + instance + '.'; // Pfad innerhalb der Instanz var pfad = 'Verbrauchszaehler.'; var default_unit = 'Wh'; var default_unit_kilo = 'kWh'; // Diese Teile werden aus den Gerätenamen entfernt var blacklist = [':1', ':2', ':3', ':4', ':5', ':6', ':7', ':8']; var AnzahlKommastellenKosten = 3; var AnzahlKommastellenVerbrauch = 3; var AnzahlKommastellenZaehlerstand = 2; var KumulierterWertIstBereitsInKilo = true; var eigeneDatenpunkte = [ // Beispiel: // ['Datenpunkt', 'Aliasname', 'Einheit kumulierter Wert', 'Einheit berechnete Werte (kilo/1000)' ], [ 'smartmeter.0.1_8_0.value'/*1 8 0 value*/, 'Bezug Haus', 'kWh', 'kWh' ], [ 'smartmeter.0.2_8_0.value'/*2 8 0 value*/, 'Einspeisung Dachs', 'kWh', 'kWh' ], [ 'smartmeter.1.1_8_0.value'/*1 8 0 value*/, 'Bezug PV', 'kWh', 'kWh' ], [ 'smartmeter.1.2_8_0.value'/*2 8 0 value*/, 'Einspeisung PV', 'kWh', 'kWh' ], [ "javascript.0.Gaszaehler.Wert"/*Gaszaehler.Wert*/, 'Gaszaehler', 'm3', 'm3' ], ];
Damit laufen seit 3 Tagen 2 "2-Richtungs E-Zähler" und der "Gaszähler" sauber drüber.
-
Ist das so richtig ? Oder stimmt da etwas nicht ?
Der Wert verändert sich nur beim Neustart von dem Skript, sonst nicht.
-
Ist das so richtig ? Oder stimmt da etwas nicht ?
Der Wert verändert sich nur beim Neustart von dem Skript, sonst nicht. `
Am Anfang muss man etwas Geduld haben, da passiert den ersten Tag nicht wirklich viel.
Am besten sieht man im Log ob was passiert. Immer wenn sich ein Zählerwert erhöht muss es in etwa so aussehen:
17:17:51.085 [info] javascript.0 script.js.common.Zählerauswertung: -------- Strommesser --------- 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: RegExp-Funktion ausgelöst 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: id: smartmeter.0.1_8_0.value 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: Name: 1_8_0.value 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: channel ID: smartmeter.0.1_8_0 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: channel Name: 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: device ID: null 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: device name: null 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: neuer Wert: 51185.1 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: alter Wert: 51185 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: vor der Aufbereitung: 1_8_0.value 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: entferneDatenpunkt - rueckgabe1:1_8_0.value 17:17:51.086 [info] javascript.0 script.js.common.Zählerauswertung: entferneDatenpunkt - rueckgabe2:1_8_0.value 17:17:51.087 [info] javascript.0 script.js.common.Zählerauswertung: entferneDatenpunkt - rueckgabe3:1_8_0.value 17:17:51.087 [info] javascript.0 script.js.common.Zählerauswertung: entferneDatenpunkt - rueckgabe4:1_8_0.value 17:17:51.087 [info] javascript.0 script.js.common.Zählerauswertung: Es wird der Aliasname gesetzt:Bezug Haus 17:17:51.087 [info] javascript.0 script.js.common.Zählerauswertung: Nach der Aufbereitung: Bezug Haus 17:17:51.087 [info] javascript.0 script.js.common.Zählerauswertung: States in der Instanz javascript.0.Verbrauchszaehler. erstellt 17:17:51.087 [info] javascript.0 script.js.common.Zählerauswertung: Das Gerät:Bezug Haus hat eigenen Strompreis: 0.2349 17:17:51.087 [info] javascript.0 script.js.common.Zählerauswertung: Das Gerät:Bezug Haus hat eigenen Grundpreis: 6.82 17:17:51.088 [info] javascript.0 script.js.common.Zählerauswertung: Stromkosten (Bezug Haus) aktualisiert 17:17:51.088 [info] javascript.0 script.js.common.Zählerauswertung: Stromverbrauch (Bezug Haus) aktualisiert 17:17:51.088 [info] javascript.0 script.js.common.Zählerauswertung: ------------ ENDE ------------
Hier kannst du eigentlich deutlich sehen das die Daten erfasst und verarbeitet werden.
Und spätestens den 2.Tag solltest du auch Einträge in deinen Datenpunkten finden!
-
Ok super, dann warte ich mal.
Wie liest du deinen 2 Richtungszähler denn aus ?
-
Ok super, dann warte ich mal.
Wie liest du deinen 2 Richtungszähler denn aus ? `
Leseköpfe von Volkszähler https://wiki.volkszaehler.org/hardware/ … sb-ausgang
und dann je eine Instanz des Smartmeter Moduls auf einem Raspi im Multihost Modus.
-
Script für PulseCounter von StallBiz anpassen?!?
Hallo zusammen,
ich protokollieren mein Strom und Gasverbrauch mit dem PulseCounter von Stallbiz.
Hat jemand das Script dafür angepasst?
Irgendwie kommt bei mir nichts in den Objekten an.
Ich habe den Datenpunkt, in dem mein Zählerstand steht eingetragen.
var eigeneDatenpunkte = [
// Beispiel:
// ['Datenpunkt', 'Aliasname', 'Einheit kumulierter Wert', 'Einheit berechnete Werte (kilo/1000)' ],
[ 'javascript.0.PUSLCOUNTER.w_counter_1', 'Gas.MeinGaszaehler1', 'kWh', 'kWh' ],
];
-
Da frage ich doch mal ganz vorsichtig:
Was steht im Log?
Gas in kw/h ist richtig?
Werte schon entsprechend umgerechnet?
-
Ich habe mich ein wenig mit dem Script beschäftigt und bekomme die ersten Daten, jedoch noch nicht so wie ich es will.
Aktuell habe ich einen Strom und Wasserzähler über ein NodeMCU mittels ESPEasy angeschlossen. Über den MQTT Adapter bekomme
ich die Impulse angezeigt. Beim Wasserzähler ist ein Impuls = 1 Liter, jedoch beim Stromzähler ist ein Impuls 1/400 kWh.
Wo muss ich den Faktor 1/400 eintragen ?
Die Datenpunkte habe ich wie folgt eingetragen
var eigeneDatenpunkte = [
[ 'mqtt.0.S0_Sensor.StromCounter.Count', 'Strom.Hauptzähler', 'Wh', 'kWh' ],
[ 'mqtt.0.S0_Sensor.Wasser.Count', 'Wasser.Hauptuhr', 'm3', 'm3' ],
];
Weiterhin habe ich den Strompreis eingetragen. Wo bzw. wie trage ich den Preis vom Wasserzähler ein ??
Den folgen Abschnitt habe ich noch nicht verstanden. Was muss ich hier ändern ?
// Einlesen der aktuellen Daten vom Zähler
function run(obj, alias, unit, unit_kilo) {
if (logging) {
log('–------ Strommesser ---------');
log('RegExp-Funktion ausgelöst');
log('id: ' + obj.id);
log('Name: ' + obj.common.name); // Waschmaschine Küche:2.ENERGY_COUNTER
log('channel ID: ' + obj.channelId); // hm-rpc.0.MEQ0170864.2
log('channel Name: ' + obj.channelName); // Waschmaschine Küche:2
log('device ID: ' + obj.deviceId); // hm-rpc.0.MEQ0170864
log('device name: ' + obj.deviceName); // Küche Waschmaschine
log('neuer Wert: ' + obj.newState.val); // 16499.699982
log('alter Wert: ' + obj.oldState.val); // 16499.699982
}
oder macht es Sinn für Strom , Wasser und zukünftig Gas ein eigenes Script laufen zu lassen ?
Wie gebe ich den aktuellen Wert vom realen Zähler im Script händisch ein, damit beide Zähler die gleichen Werte haben ?
Danke
-
Ich habe mich ein wenig mit dem Script beschäftigt und bekomme die ersten Daten, jedoch noch nicht so wie ich es will.
Aktuell habe ich einen Strom und Wasserzähler über ein NodeMCU mittels ESPEasy angeschlossen. Über den MQTT Adapter bekomme
ich die Impulse angezeigt. Beim Wasserzähler ist ein Impuls = 1 Liter, jedoch beim Stromzähler ist ein Impuls 1/400 kWh.
Wo muss ich den Faktor 1/400 eintragen ? `
Hi,
Das Script kann nur mit "echten" Zählerwerten arbeiten!
Du musst also erst eine Möglichkeit finden deine Impulse zu zählen und in Zählerstände umzusetzen.
Ich denke da sollten sich Ansätze hier im Forum finden.
zB. https://forum.iobroker.net/viewtopic.php?f=21&t=14962&p=156350&hilit=impulse+z%C3%A4hlen#p156368
-
Weiterhin habe ich den Strompreis eingetragen. Wo bzw. wie trage ich den Preis vom Wasserzähler ein ??
…
oder macht es Sinn für Strom , Wasser und zukünftig Gas ein eigenes Script laufen zu lassen ?
Wie gebe ich den aktuellen Wert vom realen Zähler im Script händisch ein, damit beide Zähler die gleichen Werte haben ?
Danke `
Nein, du brauchst keine extra Skripte für Wasser, Gas oder Strom.
Die Preise kannst du jeweils auch pro Gerät eingeben, ebenso den aktuellen Zählerstand.
filename="Verbrauchszähler.JPG" index="0">~~ -
Wo gebe ich den aktuellen Zählerstand ein?
-
@ringdingringding:Wo gebe ich den aktuellen Zählerstand ein? `
https://github.com/hdering/homematic_verbrauchszaehler
TODO Zaehlerstand_letzte_Ablesung und Zaehlerstand_jetzt angeben können
Also…. Geht "noch" nicht!
-
@ringdingringding:Wo gebe ich den aktuellen Zählerstand ein? `
https://github.com/hdering/homematic_verbrauchszaehler
TODO Zaehlerstand_letzte_Ablesung und Zaehlerstand_jetzt angeben können
Also…. Geht "noch" nicht! `
Na dann hoffen wir mal weiter, da der Skript-Ersteller schon seit April nichts mehr am Skript angepasst oder geändert hat.
Ich hoffe auch, dass diese Änderung mit dem Zählerstand mal implementiert wird. Leider habe ich mit JavaScript gar nichts am Hut, deshalb kann da leider immer nur auf fertige Skripte zurückgreifen.
-
…
Den folgen Abschnitt habe ich noch nicht verstanden. Was muss ich hier ändern ?
// Einlesen der aktuellen Daten vom Zähler
function run(obj, alias, unit, unit_kilo) {
if (logging) {
log('-------- Strommesser ---------');
log('RegExp-Funktion ausgelöst');
log('id: ' + obj.id);
log('Name: ' + obj.common.name); // Waschmaschine Küche:2.ENERGY_COUNTER
log('channel ID: ' + obj.channelId); // hm-rpc.0.MEQ0170864.2
log('channel Name: ' + obj.channelName); // Waschmaschine Küche:2
log('device ID: ' + obj.deviceId); // hm-rpc.0.MEQ0170864
log('device name: ' + obj.deviceName); // Küche Waschmaschine
log('neuer Wert: ' + obj.newState.val); // 16499.699982
log('alter Wert: ' + obj.oldState.val); // 16499.699982
}
... `
In dem Abschnitt musst du gar nichts ändern. Das sind nur Ausgaben im Log, wenn das Logging im Skript oben auf "true" steht.
// +++++++++ USER ANPASSUNGEN ++++++++++++++++++++++++ // debug logging var logging = false;
Gerade zu Anfang, wenn das Skript eingesetzt wird, sind solche Logging Ausgaben sehr hilfreich, um die Funktionsweise zu überprüfen.
Ich habe dieses schon seit langen wieder auf "false", da alle Werte plausibel sind.
-
Na dann hoffen wir mal weiter, da der Skript-Ersteller schon seit April nichts mehr am Skript angepasst oder geändert hat.
Ich hoffe auch, dass diese Änderung mit dem Zählerstand mal implementiert wird. Leider habe ich mit JavaScript gar nichts am Hut, deshalb kann da leider immer nur auf fertige Skripte zurückgreifen. `
Na ich denke ja das der Autor des Scriptes hier mitliest.
@hdering
Erst einmal vielen Dank für Deine tolles Script und deine Arbeit!
Eventuell kannst Du ja mal ein Statement abgeben ob und wie es weitergeht?
Die Zeit des großen Zählerablesens geht ja demnächst los! :roll:
-
Zur Info und Vorankündigung, ich baue gerade an einen Adapter der die Funktionen dieses Scripts übernehmen wird (super Vorlage!!!!!).
Darin wird es möglich sein sowohl jetzigen Zählerstand als auch der Vergangenheit zu ändern.
Erste Beta dieses Wochenende auf github
Sent from my iPhone using Tapatalk
-
Na da bin ich aber gespannt.
Super, melde mich schon als Tester.
Gruß Andreas
-
Zur Info und Vorankündigung, ich baue gerade an einen Adapter der die Funktionen dieses Scripts übernehmen wird (super Vorlage!!!!!).
Darin wird es möglich sein sowohl jetzigen Zählerstand als auch der Vergangenheit zu ändern.
Erste Beta dieses Wochenende auf github
Sent from my iPhone using Tapatalk ` Bin beim testen gerne wieder dabei
-
Zur Info und Vorankündigung, ich baue gerade an einen Adapter der die Funktionen dieses Scripts übernehmen wird (super Vorlage!!!!!).
Darin wird es möglich sein sowohl jetzigen Zählerstand als auch der Vergangenheit zu ändern.
Erste Beta dieses Wochenende auf github
Sent from my iPhone using Tapatalk ` Klasse hört sich schon mal gut an.Danke Dutchman.
Gesendet von meinem MHA-L29 mit Tapatalk