NEWS
[Vorlage] Stromverbrauch protokollieren - (etwas optimiert)
-
Ist doch kein Adapter sondern nur ein Script.
Also aus Git laden und in Javascript als neues Script kopieren sollte gehen.
-
Ich bin ein Vollkoffer…......... :shock:
-
Guten morgen,
habe mich gewundert, warum die kW/h nur mit 2 nachkommastellen geschrieben werden, obwohl ich 3 angegeben habe.
Grund: Hab nen Fehler in Zeile 355 entdeckt und geändert. Und siehe da, jetzt sind es 3 nachkommastellen.
Aus
// aktualisiere den Verbrauch und die Kosten _zaehler = (getState(idKumuliert).val / 1000).toFixed(AnzahlKommastellenKosten); _preis = getState(idStrompreis).val;
wurde
// aktualisiere den Verbrauch und die Kosten _zaehler = (getState(idKumuliert).val / 1000).toFixed(AnzahlKommastellenZaehlerstand); _preis = getState(idStrompreis).val;
-
Guten morgen,
habe mich gewundert, warum die kW/h nur mit 2 nachkommastellen geschrieben werden, obwohl ich 3 angegeben habe.
Grund: Hab nen Fehler in Zeile 355 entdeckt und geändert. Und siehe da, jetzt sind es 3 nachkommastellen.
Aus
// aktualisiere den Verbrauch und die Kosten _zaehler = (getState(idKumuliert).val / 1000).toFixed(AnzahlKommastellenKosten); _preis = getState(idStrompreis).val;
wurde
// aktualisiere den Verbrauch und die Kosten _zaehler = (getState(idKumuliert).val / 1000).toFixed(AnzahlKommastellenZaehlerstand); _preis = getState(idStrompreis).val; ```` `
Vielen Dank für den Hinweis. Hab ich gleich in github geändert.
-
Version 1.1.3 ist nun online:
https://github.com/hdering/homematic_st … okollieren
1.1.3 (2018-03-20)
(hdering) AnzahlKommastellenZaehlerstand korrigiert
1.1.2 (2018-03-19)
(hdering) Tages-, Wochen-, Monats-.... bei eigenen Datenpunkten vergessen zu setzen
-
@ple:Wird gleich mal gemacht,
also bei mir, denke auch bei cvidal, werden nach Tag und Woche der Configwert auf true gesetzt.
Das scheint soweit zu funktionieren.
Mit welcher Nodeverion bis du unterwegs? Wir haben die 6.xxx drauf.
Deine Änderung lasse ich mal einfließen. Werde danach mal die Datenpunkte wieder löschen und den morgen abwarten.
Gruß und Danke `
Ich habe auch node 6.
Kannst du mal die log in ioBroker um 0:00 Uhr offen lassen um zu sehen, ob irgendwelche Fehler kommen?
Irgendwas muss ja kommen.
-
danke für das Update. Habe deine Änderungen bei mir rein kopiert.
Musste nur aufpassen, ab wo ich von github kopiere, da ich dein Script ziemlich oben heute früh vor der Arbeit angepasst habe.
Ich habe das Script heute früh in soweit geändert, dass es bei Tages-, Wochen-, Monats-, u.s.w. Wechsel nicht mehr "true" in die config… schreibt, sondern gleich das kopieren der Zahlen in die Tag1, Tag2, Tag3 u.s.w. durchführt und den aktuellen Tag auf 0 setzt. Und das Nachts um 0 Uhr.
Habe dann nach einbau den schedule Tag statt auf 0 0 auf 35 5 und so gestellt um zu sehen was passiert. Und siehe da, es klappte bei allen drei Versuchen.
Grund für diese Arbeit bei mir war, dass Steckdosen in diesem Log mit dabei sind, die nicht jeden Tag an sind, sondern ganz sporadisch nur ab und an. Das Problem war, dass das sogenannte "true" ja nur abgearbeitet wurde und die Daten übertragen wurden, wenn die Steckdose an ist und einen Wert schickt. Wenn die Steckdose nun aber 2 Tage nicht in Betrieb ist, dann bekomme ich den Verbrauch aber nicht nach Tag 3, wo er eigentlich hin sollte, sondern nach Tag 1 eingetragen. Aber genau das wollte ich nicht.
Wenn jemand Interesse daran hat, bitte melden.
-
@ple:Wird gleich mal gemacht,
also bei mir, denke auch bei cvidal, werden nach Tag und Woche der Configwert auf true gesetzt.
Das scheint soweit zu funktionieren.
Mit welcher Nodeverion bis du unterwegs? Wir haben die 6.xxx drauf.
Deine Änderung lasse ich mal einfließen. Werde danach mal die Datenpunkte wieder löschen und den morgen abwarten.
Gruß und Danke `
Ich habe auch node 6.
Kannst du mal die log in ioBroker um 0:00 Uhr offen lassen um zu sehen, ob irgendwelche Fehler kommen?
Irgendwas muss ja kommen. `
So, gerade noch mal alles neu gemacht mit deinem aktuellen Script und mal ein paar Minuten später die Daten schieben lassen. Ohne die WM-Bus Teilnehmer ging das schon mal.
Ich aktiviert die jetzt auch mal und sehe morgen früh mehr.
Nun scheint es zu funktionieren.
Besteht noch die Möglichkeit eventuell ein paar Features einzubauen?
Schön wäre es, wie auch beim eigenen Preis, auch die Einheit anzugeben, eventuell noch einen Teiler. Somit könnte man das Script für Wasser, Gasverbrauch nehmen.
Gruß und Danke
-
@ple:@ple:Wird gleich mal gemacht,
also bei mir, denke auch bei cvidal, werden nach Tag und Woche der Configwert auf true gesetzt.
Das scheint soweit zu funktionieren.
Mit welcher Nodeverion bis du unterwegs? Wir haben die 6.xxx drauf.
Deine Änderung lasse ich mal einfließen. Werde danach mal die Datenpunkte wieder löschen und den morgen abwarten.
Gruß und Danke `
Ich habe auch node 6.
Kannst du mal die log in ioBroker um 0:00 Uhr offen lassen um zu sehen, ob irgendwelche Fehler kommen?
Irgendwas muss ja kommen. `
So, gerade noch mal alles neu gemacht mit deinem aktuellen Script und mal ein paar Minuten später die Daten schieben lassen. Ohne die WM-Bus Teilnehmer ging das schon mal.
Ich aktiviert die jetzt auch mal und sehe morgen früh mehr.
Nun scheint es zu funktionieren.
Besteht noch die Möglichkeit eventuell ein paar Features einzubauen?
Schön wäre es, wie auch beim eigenen Preis, auch die Einheit anzugeben, eventuell noch einen Teiler. Somit könnte man das Script für Wasser, Gasverbrauch nehmen.
Gruß und Danke `
Perfekt wäre ein eigener Adapter dafür. Ich bin mich schon am einlesen wie sowas funktioniert :).
Was man natürlich machen könnte. Alle Geräte ob Homematic oder nicht Homematic über eigene Datenpunkte anlegen. So könnte man zumindest die Einheit selbst wählen.
Teiler müsste dann noch hinzugefügt werden.
-
Dein Script nähert sich diesem hier
schön das sich was in die Richtung entwickelt, leider kann ich dabei nicht unterstützen, da mir das Wissen fehlt.
Bin schon froh dass ich meine Standard Sachen in Javascript hinbekomme
-
Wie muss ich die Zeile für telegram richtig anpassen? Ich bekomme nämlich einen Fehler.
Meine Anpassung:
// Pushmeldung function send_message(text) { // Hier können die Pushmeldung über alle möglichen Wege verschickt werden. //console.log(text); sendTelegram(text); } // ++++ ENDE USER ANPASSUNGEN ++++++++++++++++++++++++
Fehler:
javascript.0 2018-03-21 14:40:46.237 info Stop script script.js.common.Stromzaehler_homematic javascript.0 2018-03-21 14:38:38.880 error at Object. (script.js.common.Stromzaehler_homematic:437:4) javascript.0 2018-03-21 14:38:38.880 error at run (script.js.common.Stromzaehler_homematic:355:30) javascript.0 2018-03-21 14:38:38.880 error at send_message (script.js.common.Stromzaehler_homematic:60:5) javascript.0 2018-03-21 14:38:38.880 error Error in callback: ReferenceError: sendTelegram is not defined javascript.0 2018-03-21 14:38:38.879 info script.js.common.Stromzaehler_homematic: Stromverbrauch und -kosten
-
Wie muss ich die Zeile für telegram richtig anpassen? Ich bekomme nämlich einen Fehler.
Meine Anpassung:
// Pushmeldung function send_message(text) { // Hier können die Pushmeldung über alle möglichen Wege verschickt werden. //console.log(text); sendTelegram(text); } // ++++ ENDE USER ANPASSUNGEN ++++++++++++++++++++++++
Fehler:
javascript.0 2018-03-21 14:40:46.237 info Stop script script.js.common.Stromzaehler_homematic javascript.0 2018-03-21 14:38:38.880 error at Object. (script.js.common.Stromzaehler_homematic:437:4) javascript.0 2018-03-21 14:38:38.880 error at run (script.js.common.Stromzaehler_homematic:355:30) javascript.0 2018-03-21 14:38:38.880 error at send_message (script.js.common.Stromzaehler_homematic:60:5) javascript.0 2018-03-21 14:38:38.880 error Error in callback: ReferenceError: sendTelegram is not defined javascript.0 2018-03-21 14:38:38.879 info script.js.common.Stromzaehler_homematic: Stromverbrauch und -kosten ```` `
Hi lobomau,
du musst Telegram installiert und konfiguriert haben. Ich habe in meinem javascript\global Ordner eine Hilfsfunktion dafür geschrieben die überall verfügbar ist.
Anstatt
> sendTelegram(text);
könntest du auch folgendes schreiben:
` > sendTo("telegram.0", {
text: text,
chatId: <deine id="">});</deine> `
-
Wie muss ich die Zeile für telegram richtig anpassen? Ich bekomme nämlich einen Fehler.
Meine Anpassung:
// Pushmeldung function send_message(text) { // Hier können die Pushmeldung über alle möglichen Wege verschickt werden. //console.log(text); sendTelegram(text); } // ++++ ENDE USER ANPASSUNGEN ++++++++++++++++++++++++
Fehler:
javascript.0 2018-03-21 14:40:46.237 info Stop script script.js.common.Stromzaehler_homematic javascript.0 2018-03-21 14:38:38.880 error at Object. (script.js.common.Stromzaehler_homematic:437:4) javascript.0 2018-03-21 14:38:38.880 error at run (script.js.common.Stromzaehler_homematic:355:30) javascript.0 2018-03-21 14:38:38.880 error at send_message (script.js.common.Stromzaehler_homematic:60:5) javascript.0 2018-03-21 14:38:38.880 error Error in callback: ReferenceError: sendTelegram is not defined javascript.0 2018-03-21 14:38:38.879 info script.js.common.Stromzaehler_homematic: Stromverbrauch und -kosten ```` `
einfach
// Pushmeldung function send_message(text) { // Hier können die Pushmeldung über alle möglichen Wege verschickt werden. //console.log(text); //sendTelegram(text); }
-
Irgendwie wird bei mir der Wert am Tageswechsel nicht auf null gesetzt. Was ist noch falsch?
Der Verbrauch war heute, bis jetzt, nur 7 kWh
4489_bildschirmfoto_2018-03-21_um_17.57.33.png
4489_bildschirmfoto_2018-03-21_um_18.02.43.png -
laut screen Loggst du die Daten ja mit. Was steht denn im Log so gegen 0 Uhr?
-
Laut Log um 00:01 17 kWh
-
Das meinte ich nicht. Ich meinte, stehen da irgendwelche Errors in Verbindung mit javascript?
-
Ah, sorry. Damit habe ich bisher wenig gemacht. Es ist allerding nur diese Stunde zu sehen, wie kann ich den Speicher abrufen, oder muß ich die Speicherung irgendwo einstellen?
! Drücke Strg+A und danach Strg+C, um den Inhalt in die Zwischenablage zu kopieren. Klicke irgendwo, um das Fenster zu schliessen.
! javascript.0 2018-03-21 20:07:54.895 info script.js.common.Messscripte.Stromzaehler: –---------- ENDE ------------
! javascript.0 2018-03-21 20:07:54.895 info script.js.common.Messscripte.Stromzaehler: Stromverbrauch und -kosten (Gesamtstrom_EK) aktualisiert
! javascript.0 2018-03-21 20:07:54.890 info script.js.common.Messscripte.Stromzaehler: States in der Instanz javascript.0.Strom. erstellt
! javascript.0 2018-03-21 20:07:54.882 info script.js.common.Messscripte.Stromzaehler: Nach der Aufbereitung: Gesamtstrom_EK
! javascript.0 2018-03-21 20:07:54.882 info script.js.common.Messscripte.Stromzaehler: Es wird der Aliasname gesetzt:Gesamtstrom_EK
! javascript.0 2018-03-21 20:07:54.882 info script.js.common.Messscripte.Stromzaehler: entferneDatenpunkt - rueckgabe4:HauptstromEKinWh:value
! javascript.0 2018-03-21 20:07:54.882 info script.js.common.Messscripte.Stromzaehler: entferneDatenpunkt - rueckgabe3:Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.881 info script.js.common.Messscripte.Stromzaehler: entferneDatenpunkt - rueckgabe2:Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.881 info script.js.common.Messscripte.Stromzaehler: entferneDatenpunkt - rueckgabe1:Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.881 info script.js.common.Messscripte.Stromzaehler: vor der Aufbereitung: Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.881 info script.js.common.Messscripte.Stromzaehler: Einheit: undefined
! javascript.0 2018-03-21 20:07:54.881 info script.js.common.Messscripte.Stromzaehler: alter Wert: 14546000
! javascript.0 2018-03-21 20:07:54.881 info script.js.common.Messscripte.Stromzaehler: neuer Wert: 14547000
! javascript.0 2018-03-21 20:07:54.880 info script.js.common.Messscripte.Stromzaehler: device name: null
! javascript.0 2018-03-21 20:07:54.880 info script.js.common.Messscripte.Stromzaehler: device ID: null
! javascript.0 2018-03-21 20:07:54.880 info script.js.common.Messscripte.Stromzaehler: channel Name: Hauptstrom EK in Wh
! javascript.0 2018-03-21 20:07:54.880 info script.js.common.Messscripte.Stromzaehler: channel ID: loxone.0.114e32fd-004f-3263-ffff403fb0c34b9e
! javascript.0 2018-03-21 20:07:54.880 info script.js.common.Messscripte.Stromzaehler: Name: Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.880 info script.js.common.Messscripte.Stromzaehler: id: loxone.0.114e32fd-004f-3263-ffff403fb0c34b9e.value
! javascript.0 2018-03-21 20:07:54.879 info script.js.common.Messscripte.Stromzaehler: Beschreibung: undefined
! javascript.0 2018-03-21 20:07:54.879 info script.js.common.Messscripte.Stromzaehler: Gewerk: undefined
! javascript.0 2018-03-21 20:07:54.879 info script.js.common.Messscripte.Stromzaehler: RegExp-Funktion ausgelöst
! javascript.0 2018-03-21 20:07:54.879 info script.js.common.Messscripte.Stromzaehler: -------- Strommesser ---------
! javascript.0 2018-03-21 20:07:54.879 info script.js.common.Messscripte.Jshint: ------------ ENDE ------------
! javascript.0 2018-03-21 20:07:54.878 info script.js.common.Messscripte.Jshint: Stromverbrauch und -kosten (Gesamtstrom EK) aktualisiert
! javascript.0 2018-03-21 20:07:54.874 info script.js.common.Messscripte.Jshint: Das Gerät:Gesamtstrom EK hat eigenen Strompreis: 0.26
! javascript.0 2018-03-21 20:07:54.871 info script.js.common.Messscripte.Jshint: States in der Instanz javascript.0.Strom. erstellt
! javascript.0 2018-03-21 20:07:54.848 info script.js.common.Messscripte.Jshint: Nach der Aufbereitung: Gesamtstrom EK
! javascript.0 2018-03-21 20:07:54.847 info script.js.common.Messscripte.Jshint: Es wird der Aliasname gesetzt:Gesamtstrom EK
! javascript.0 2018-03-21 20:07:54.847 info script.js.common.Messscripte.Jshint: entferneDatenpunkt - rueckgabe4:HauptstromEKinWh:value
! javascript.0 2018-03-21 20:07:54.846 info script.js.common.Messscripte.Jshint: entferneDatenpunkt - rueckgabe3:Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.846 info script.js.common.Messscripte.Jshint: entferneDatenpunkt - rueckgabe2:Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.845 info script.js.common.Messscripte.Jshint: entferneDatenpunkt - rueckgabe1:Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.845 info script.js.common.Messscripte.Jshint: vor der Aufbereitung: Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.844 info script.js.common.Messscripte.Jshint: Einheit: undefined
! javascript.0 2018-03-21 20:07:54.842 info script.js.common.Messscripte.Jshint: alter Wert: 14546000
! javascript.0 2018-03-21 20:07:54.842 info script.js.common.Messscripte.Jshint: neuer Wert: 14547000
! javascript.0 2018-03-21 20:07:54.841 info script.js.common.Messscripte.Jshint: device name: null
! javascript.0 2018-03-21 20:07:54.840 info script.js.common.Messscripte.Jshint: device ID: null
! javascript.0 2018-03-21 20:07:54.839 info script.js.common.Messscripte.Jshint: channel Name: Hauptstrom EK in Wh
! javascript.0 2018-03-21 20:07:54.836 info script.js.common.Messscripte.Jshint: channel ID: loxone.0.114e32fd-004f-3263-ffff403fb0c34b9e
! javascript.0 2018-03-21 20:07:54.835 info script.js.common.Messscripte.Jshint: Name: Hauptstrom EK in Wh: value
! javascript.0 2018-03-21 20:07:54.834 info script.js.common.Messscripte.Jshint: id: loxone.0.114e32fd-004f-3263-ffff403fb0c34b9e.value
! javascript.0 2018-03-21 20:07:54.834 info script.js.common.Messscripte.Jshint: Beschreibung: undefined
! javascript.0 2018-03-21 20:07:54.833 info script.js.common.Messscripte.Jshint: Gewerk: undefined
! javascript.0 2018-03-21 20:07:54.832 info script.js.common.Messscripte.Jshint: RegExp-Funktion ausgelöst
! javascript.0 2018-03-21 20:07:54.830 info script.js.common.Messscripte.Jshint: -------- Strommesser --------- -
Ich habe das Script heute früh in soweit geändert, dass es bei Tages-, Wochen-, Monats-, u.s.w. Wechsel nicht mehr "true" in die config… schreibt, sondern gleich das kopieren der Zahlen in die Tag1, Tag2, Tag3 u.s.w. durchführt und den aktuellen Tag auf 0 setzt. Und das Nachts um 0 Uhr. `
wie hast du es umgesetzt?
rotateVerbrauchUndKosten(geraetename, 'Tag', Tag_Anzahl_Werte_in_der_Vergangenheit);
resetVerbrauchUndKosten(geraetename, 'Tag');
in
setRecognizedChange(…)
verschoben?
-
Ich habe das Script heute früh in soweit geändert, dass es bei Tages-, Wochen-, Monats-, u.s.w. Wechsel nicht mehr "true" in die config… schreibt, sondern gleich das kopieren der Zahlen in die Tag1, Tag2, Tag3 u.s.w. durchführt und den aktuellen Tag auf 0 setzt. Und das Nachts um 0 Uhr. `
wie hast du es umgesetzt?
rotateVerbrauchUndKosten(geraetename, 'Tag', Tag_Anzahl_Werte_in_der_Vergangenheit);
resetVerbrauchUndKosten(geraetename, 'Tag');
in
setRecognizedChange(…)
verschoben? `
Bisschen mehr, dering
kopier es mal hier rein:
`function setRecognizedChange(type, anzahl) { cacheSelectorStateMeter.each(function (id, i) { var geraetename = parseObjects(id); //setState(pfad + geraetename + '.config.' + type, true); rotateVerbrauchUndKosten(geraetename, type, anzahl); resetVerbrauchUndKosten(geraetename, type); schreibeZaehlerstand(geraetename, type); }); cacheSelectorStateEnergyCounter.each(function (id, i) { var geraetename = parseObjects(id); //setState(pfad + geraetename + '.config.' + type, true); rotateVerbrauchUndKosten(geraetename, type, anzahl); resetVerbrauchUndKosten(geraetename, type); schreibeZaehlerstand(geraetename, type); }); if (eigeneDatenpunkte.length > 0) { for(var i = 0; i < eigeneDatenpunkte.length; i++) { var alias = eigeneDatenpunkte[i][1]; //setState(pfad + alias + '.config.' + type, true); rotateVerbrauchUndKosten(alias, type, anzahl); resetVerbrauchUndKosten(alias, type); schreibeZaehlerstand(alias, type); } } } //----------------------------------------------------------------------------// // Tageswechsel schedule("0 0 * * *", function() { setRecognizedChange('Tag', Tag_Anzahl_Werte_in_der_Vergangenheit); }); // Wochenwechsel schedule("0 0 * * 1", function() { setRecognizedChange('Woche', Woche_Anzahl_Werte_in_der_Vergangenheit); }); // Monatswechsel schedule("0 0 1 * *", function() { setRecognizedChange('Monat', Monat_Anzahl_Werte_in_der_Vergangenheit); }); // Quartalswechsel schedule("0 0 1 */3 *", function() { setRecognizedChange('Quartal', Quartal_Anzahl_Werte_in_der_Vergangenheit); }); // Jahreswechsel schedule("0 0 1 1 *", function() { setRecognizedChange('Jahr', Jahr_Anzahl_Werte_in_der_Vergangenheit); });` Die Schedule musst ich auch ein bisschen anpassen. Aber hat heut nacht perfekt funktioniert. Als ich aufstand, waren alle Steckdosen und Lichtschalter auf 0 und die Verbräuche von gestern auf Tag 1.[/i]