Giter Site home page Giter Site logo

homematic_verbrauchszaehler's People

Contributors

hdering avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

homematic_verbrauchszaehler's Issues

Schönheitkorrektur: ack = true

@hdering
Vielen Dank für das super skript!

Könntest folgende schönheitskorrektut noch einfügen:
Den ack status auf true setzen, wenn die Werte aktualisiert werden. Dadurch werden die Werte der Objekt in ioBroker grün angezeigt und nicht rot, wie es heute ist.

Dazu musst du nur bei den setState(id, value, true) noch ein "true" hinzufügen.

Zählerstand negativ

Hallo,

wenn ich den Tageszählerstand auf 18000kwh stelle und dann das Skript den neuen Wert 18000001wh bekommt, dann wird der Tagesverbrauch auf -17999999 gestellt?

AVM DECT- und Powerline-Steckdosen

Hallo

Super Script. Vielen dank dafür.

wollte nur mitteilen, dass das Script auch mit AVM-Steckdosen, die im ioBroker mit eingebunden sind, funktionieren, wenn diese über "eigene Datenpunkte" hinzu gefügt wurden. Ich hab 2 DECT- und zwei Powerlinesteckdosen mit drin. Selbst diese vier werden mit geloggt.

Einziger Nachteil, den ich gefunden habe. Bei einem neuen Tag werden die Daten des aktuellen Tages erst in Tag 1 (gestern) geschrieben, wenn der Verbraucher ein war und wieder neu Leistung gemessen wurde. Könnte man das nicht so bauen, dass die Daten nachts automatisch rüber geschrieben werden und der aktuelle Tag automatisch wieder auf 0 ist und nicht erst, wenn der Verbraucher das erste mal eingeschalten wird. Habe ja ein paar Steckdosen mit Verbrauchern, die nicht jeden Tag laufen.
Denke mal, dass dies bei Wochen, Quartalen, Monaten und Jahren genau so ist.

Requests HT / NT

Hey,

erstmal vielen Dank für das Script. Das hilft mir schon sehr den Verbrauch unserer Wärmepumpe ordentlich zu protokollieren.

Wo wir dann schon beim Thema wären, die Wärmepumpe wird via HT / NT Zähler gezählt, ich weiß das das nen riesen Unterschied zu normalen Zählern macht, aber evtl. hast du ja Mal Zeit und Lust sowas umzusetzen.

Speicherung der vorherigen Werte

Erst mal vielen Dank für dein Script.
ich bin im Moment auf der Suche nach einem ausfallsicheren Script, da das jetzige leider nach einen Neustart die Werte verliert.
Das ist ungünstig.

Was ich mir wünschen würde.
Speicherung des vorherigen Tages, Woche, Monat und Jahr.
Also den Wert kurz vor Mitternacht eben rüberschicken auf vorheriger Tag usw.
Das kann man dann schön mit History loggen.
Mal schauen ob ich meine WMBus Wärmemengenzähler auch integrieren kann.

Gruß

error: sql.0 Cannot delete DELETE FROM iobroker.undefined WHERE

Wer den folgenden Fehler im log hat:
error: sql.0 Cannot delete DELETE FROM iobroker.undefined WHERE ....

kann das verhindern in dem ihr die Funktion enableHistory wie folget ändert:

function enableHistory(geraet, zeitraum) {

    if (instance_history !== '') {

        let kostenObj = getObject(instanz + pfad + geraet + '.Kosten.' + zeitraum);
        if (!kostenObj || !kostenObj.common || !kostenObj.common.custom || !kostenObj.common.custom[instance_history]) {
            sendTo(instance_history, 'enableHistory', {
                id: instanz + pfad + geraet + '.Kosten.' + zeitraum,
                options: {
                    changesOnly: true,
                    debounce: 0,
                    retention: 31536000,
                    changesRelogInterval: 0,
                    changesMinDelta: 0,
                    storageType: "Number"
                }
            }, function (result) {
                if (result.error) {
                    if (logging) log("Fehler beim Aktivieren von History: " + result.error);
                }
            });
        }

        let verbrauchObj = getObject(instanz + pfad + geraet + '.Verbrauch.' + zeitraum);
        if (!verbrauchObj || !verbrauchObj.common || !verbrauchObj.common.custom || !verbrauchObj.common.custom[instance_history]) {
            sendTo(instance_history, 'enableHistory', {
                id: instanz + pfad + geraet + '.Verbrauch.' + zeitraum,
                options: {
                    changesOnly: true,
                    debounce: 0,
                    retention: 31536000,
                    changesRelogInterval: 0,
                    changesMinDelta: 0,
                    storageType: "Number"
                }
            }, function (result) {
                if (result.error) {
                    if (logging) log("Fehler beim Aktivieren von History: " + result.error);
                }
            });
        }

        let zaehlerstandObj = getObject(instanz + pfad + geraet + '.Zaehlerstand.' + zeitraum);
        if (!zaehlerstandObj || !zaehlerstandObj.common || !zaehlerstandObj.common.custom || !zaehlerstandObj.common.custom[instance_history]) {
            sendTo(instance_history, 'enableHistory', {
                id: instanz + pfad + geraet + '.Zaehlerstand.' + zeitraum,
                options: {
                    changesOnly: true,
                    debounce: 0,
                    retention: 31536000,
                    changesRelogInterval: 0,
                    changesMinDelta: 0,
                    storageType: "Number"
                }
            }, function (result) {
                if (result.error) {
                    if (logging) log("Fehler beim Aktivieren von History: " + result.error);
                }
            });
        }
    }
}

Damit wird sql nur aktiviert, sofern der Datenpunkt noch nicht aktiviert ist und somit kommt auch die fehlermeldung nicht mehr

Ticket beim Adapter Sql

Wie starte ich

Ich bringe es nicht zum laufen, wo definiere ich im skript von wo die zählerdaten denn überhaupt kommen. ich habe ein shelly der mir die wh liefert (in iobroker)... aber wie bringe ich das in das skript?
danke cainam

Tagesverbrauch wird nicht gespeichert

Script 1:1 übernommen und datenpunkte Manuel eingesetzt, nur die kumulierten werte werden übertragen alle anderen beiden lehr

Datenpunkte:

`
var eigeneDatenpunkte = [
// Beispiel:
// ['Datenpunkt', 'Aliasname', 'Einheit' ],

// [ 'hm-rpc.2.NEQ0861663.1.ENERGY_COUNTER', 'Stromzaehler:1.ENERGY_COUNTER' ],
// [ 'javascript.1.MeinePower', 'MeinSonoff' ],
// [ 'javascript.1.MeinePower2', 'Sonoff.MeinZweiterSonoff' ],
[ 'smartmeter.0.1-0:1_8_2.value', 'Stroom_Afname_piek', 'kWh' ],
[ 'smartmeter.0.1-0:1_8_1.value', 'Stroom_Afname_Dal', 'kWh' ],
[ 'smartmeter.0.1-0:2_8_2.value', 'Stroom_Levering_Piek', 'kWh' ],
[ 'smartmeter.0.1-0:2_8_1.value', 'Stroom_Levering_Dal', 'kWh' ],
[ 'smartmeter.0.0-1:24_3_0.value7', 'Gasverbruik', 'm3' ],

];
`

Wert aus dem Zähler:

screen shot 2018-04-11 at 20 10 25

Werte als Ausgabe vom script:

screen shot 2018-04-11 at 20 11 51

Script läuft nicht in ioBroker ab Javascript 5.x

Dieses Script funktioniert nicht mehr, wenn es in ioBroker mit Adapater Javascript ab Version 5.x eingesetzt wird!

Ein kleiner Fehler, der schnell korrigiert werden kann:

Zeile 127:

Falsch:
var cacheSelectorStateEnergyCounter = $('channel[state.id=*.ENERGY_COUNTER$]');

Richtig ohne "$":
var cacheSelectorStateEnergyCounter = $('channel[state.id=*.ENERGY_COUNTER]');

Dev, könntest du das bitte unbedingt anpassen?

Fehler ab zwei eigenen Datenpunkten

Erst einmal vielen Dank für das Script!
Funktioniert soweit auch, es werden jedoch, sobald ich mehr als zwei Datenpunkte anlege, Fehler ausgegeben:

javascript.0 24450 2021-12-11 18:39:14.518 error at processImmediate (internal/timers.js:461:21)
javascript.0 24450 2021-12-11 18:39:14.517 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5706:41)
javascript.0 24450 2021-12-11 18:39:14.516 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:530:29)
javascript.0 24450 2021-12-11 18:39:14.516 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1082:38)
javascript.0 24450 2021-12-11 18:39:14.516 error at Object. (script.js.klima.stromzaehler:226:25)
javascript.0 24450 2021-12-11 18:39:14.515 error at run (script.js.klima.stromzaehler:365:55)
javascript.0 24450 2021-12-11 18:39:14.515 error Error in callback: TypeError: Cannot read property 'toFixed' of null
javascript.0 24450 2021-12-11 18:38:07.167 error at processImmediate (internal/timers.js:461:21)
javascript.0 24450 2021-12-11 18:38:07.166 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5706:41)
javascript.0 24450 2021-12-11 18:38:07.166 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:530:29)
javascript.0 24450 2021-12-11 18:38:07.166 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1082:38)
javascript.0 24450 2021-12-11 18:38:07.165 error at Object. (script.js.klima.stromzaehler:226:25)
javascript.0 24450 2021-12-11 18:38:07.165 error at run (script.js.klima.stromzaehler:365:55)
javascript.0 24450 2021-12-11 18:38:07.164 error Error in callback: TypeError: Cannot read property 'toFixed' of null
javascript.0 24450 2021-12-11 18:38:00.503 error at processImmediate (internal/timers.js:461:21)
javascript.0 24450 2021-12-11 18:38:00.500 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5706:41)
javascript.0 24450 2021-12-11 18:38:00.499 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:530:29)
javascript.0 24450 2021-12-11 18:38:00.499 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1082:38)
javascript.0 24450 2021-12-11 18:38:00.498 error at Object. (script.js.klima.stromzaehler:226:25)
javascript.0 24450 2021-12-11 18:38:00.494 error at run (script.js.klima.stromzaehler:365:55)
javascript.0 24450 2021-12-11 18:38:00.494 error Error in callback: TypeError: Cannot read property 'toFixed' of null
javascript.0 24450 2021-12-11 18:37:51.998 error at processImmediate (internal/timers.js:461:21)
javascript.0 24450 2021-12-11 18:37:51.997 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5706:41)
javascript.0 24450 2021-12-11 18:37:51.995 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:530:29)

Meine config sieht so aus:

`var eigeneDatenpunkte = [

[ 'sonoff.0.server-watt.ENERGY_Total', 'Stromzaehler.Server', 'kWh', 'kWh' ],
[ 'sonoff.0.trockner.ENERGY_Total', 'Stromzaehler.Trockner', 'kWh', 'kWh' ],
[ 'sonoff.0.waschmaschine.ENERGY_Total', 'Stromzaehler.Waschmaschine', 'kWh', 'kWh' ],
[ 'sonoff.0.flower.ENERGY_Total', 'Stromzaehler.Flower', 'kWh', 'kWh' ],
[ 'sonoff.0.kette.ENERGY_Total', 'Stromzaehler.Kette', 'kWh', 'kWh' ],
[ 'sonoff.0.fenster.ENERGY_Total', 'Stromzaehler.Fenster', 'kWh', 'kWh' ],
[ 'sonoff.0.tv.ENERGY_Total', 'Stromzaehler.TV', 'kWh', 'kWh' ],

];`

Vorschlag : 0 bei tagen/wochen/monaten < 10

Hi,

Wen man mehr als 9 Tage/Wochen/quartale/monate/jahre bewahren möchte kommt der object baum ein wenig durcheinander.
Es währe schön wen alle werte unter 10 eine 0 bekommen würde:
Tag_01
Monat_01

Usw

Dan bleibt der object baum auch in reihenfolge und kommt nicht durcheinander:

Tag_2 ist nämlich grösser als Tag_10

Image

var enable_Grundpreis_einberechnen = true oder var enable_Grundpreis = true

Hallo hdering,

vielen Dank für die tolle neue Version. Ich denke, in Zeile 32 muss es:
var enable_Grundpreis = true;

statt

var enable_Grundpreis_einberechnen = true;

heissen, oder?

Kannst Du mir noch sagen, wie man den Pfad in der Instanz von Strom in Verbrauchszaehler umbenennen kann?

Beste Grüße
Peer

Basis werte Zählerstand nicht korrekt, nimmt kumulierten wert bei Stromzähler

Wen man das script benutzt für einen Strom oder gaszähler stimmen die basis werte nicht.
Das problem:

  • der Zähler hat bereits einen stand zb 5000 KwH
  • wen man das script started fängt es an de kumulierten wert hoch zu rechnen
  • um 12 Uhr wird dan dieser wert weggeschrieben anstatt der jetzige gerammt wert wert:

Mein zähler stand:
screen shot 2018-04-13 at 09 50 35

Ausgabe des scriptes:
screen shot 2018-04-13 at 09 50 49

Wunsch: 2-Tarif-Zähler

Danke für das nette Skript! Falls Du das weiterentwickeln willst (ich kann das leider nicht...), würde ich mir einen 2-Tarifzähler wünschen. Ich habe hier von 22:00h bis 07:59h einen anderen Tarif als von 08:00h bis 21:59h. Ach ja, und Grundpreis ist hier täglich, also Tage/Monat abhängig.
Nochmal: Dankeschön, so wie es ist, der Rest ist purer Traum :-)

Krieg das Script nicht zum Laufen

Hallo hdring,

vielen Dank für Dein tolles Script. Leider bekomme ich es irgendwie nicht richtig zum Laufen.

Hier die Fehlermeldungen meines Logs:

`javascript.0 2018-03-28 16:29:45.615 error at Object. (script.js.Strom.Verbrauch:389:4)
javascript.0 2018-03-28 16:29:45.615 error at run (script.js.Strom.Verbrauch:244:23)
javascript.0 2018-03-28 16:29:45.614 error at entferneDatenpunkt (script.js.Strom.Verbrauch:399:15)
javascript.0 2018-03-28 16:29:45.614 error Error in callback: TypeError: Cannot read property 'indexOf' of undefined
javascript.0 2018-03-28 16:29:45.611 info script.js.Strom.Verbrauch: vor der Aufbereitung: undefined
javascript.0 2018-03-28 16:29:45.611 info script.js.Strom.Verbrauch: Einheit: Wh
javascript.0 2018-03-28 16:29:45.610 info script.js.Strom.Verbrauch: alter Wert: 9625.099991
javascript.0 2018-03-28 16:29:45.610 info script.js.Strom.Verbrauch: neuer Wert: 9665.199997
javascript.0 2018-03-28 16:29:45.610 info script.js.Strom.Verbrauch: device name: NEQ0862843
javascript.0 2018-03-28 16:29:45.610 info script.js.Strom.Verbrauch: device ID: hm-rpc.1.NEQ0862843
javascript.0 2018-03-28 16:29:45.609 info script.js.Strom.Verbrauch: channel Name: NEQ0862843:1
javascript.0 2018-03-28 16:29:45.609 info script.js.Strom.Verbrauch: channel ID: hm-rpc.1.NEQ0862843.1
javascript.0 2018-03-28 16:29:45.609 info script.js.Strom.Verbrauch: Name: undefined
javascript.0 2018-03-28 16:29:45.608 info script.js.Strom.Verbrauch: id: hm-rpc.1.NEQ0862843.1.ENERGY_COUNTER
javascript.0 2018-03-28 16:29:45.608 info script.js.Strom.Verbrauch: Beschreibung: undefined
javascript.0 2018-03-28 16:29:45.608 info script.js.Strom.Verbrauch: Gewerk: undefined
javascript.0 2018-03-28 16:29:45.607 info script.js.Strom.Verbrauch: RegExp-Funktion ausgelöst
javascript.0 2018-03-28 16:29:45.607 info script.js.Strom.Verbrauch: -------- Strommesser ---------
javascript.0 2018-03-28 16:29:45.597 info script.js.Strom.Verbrauch: ------------ ENDE ------------
javascript.0 2018-03-28 16:29:45.597 info script.js.Strom.Verbrauch: Stromverbrauch und -kosten (Stromhauptzaehler) aktualisiert`

Hast Du eine Idee, woran das liegen könnte?

Danke im Voraus für Deine Mühen...

Peer

Erweiterung zur Protokollierung von Gasverbrauch

Um gesamt Verbrauch eines Haushalts protokollieren zu können währe es super wen man nicht nur Strom sonder auch Gaswerke mit diesem Script protokollieren könnte.
Die Logic währe gleich nur nicht in kWh sondern m3

Ablesedatum eintragen

HI,

wie kann ich das Ablesedatum einpflegen damit der Jahreszähler etc wieder zurück gesetzt wird?

Danke
Tobias

Fehler beim Auslesen des Datums

Fehler:

Fehler beim Auslesen des Datums. Eventuell falsche Syntax? null (Error:TypeError: Cannot read property 'match' of null)

Deklarationsfehler und Syntax Fehler korrigieren

Ich habe versucht, dass Script zu nutzen und sehe einige Syntax und Deklarationsfehler.

z.B.
var instance
newdate
grundpreis_tag = _grundpreis;
grundpreis_woche = _grundpreis * 7;
grundpreis_monat = _grundpreis * 30;
grundpreis_quartal = _grundpreis * 90;
grundpreis_jahr = _grundpreis * 365;

    _unit = default_unit;
    _unit_kilo = default_unit_kilo;

Nach Korrektur scheint das Script zu laufen.

Warnung Object does not exist

Hallo
ich weiß nicht, ob das Skript noch optimiert wird, aber wenn ja, dann bitte in der Zeile 509 und 528 den code anpassen.
Original:
if(getState(instanz + pfad + geraet + '.Verbrauch._' + zeitraum + '.' + zeitraum + '_' + j)) {

Folgende Änderung einfügen:
if(existsState(instanz + pfad + geraet + '.Verbrauch.' + zeitraum + '.' + zeitraum + '' + j)) {`

mit "getState" wird im Log eine Warnung ausgegeben die man mit "existsState" vermeiden kann.

Pushover

Hallo.

Erst einmal Danke für das tolle Script. Generell funktioniert es. Wie kann denn Pushover zum Versenden von Messages verwendet werden?

Danke

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.