Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Script Berechnung Wasserverbrauch

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    5
    1
    44

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Script Berechnung Wasserverbrauch

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
12 Beiträge 5 Kommentatoren 1.1k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B Offline
    B Offline
    benziman
    schrieb am zuletzt editiert von benziman
    #1

    Hallo zusammen,

    Ich habe zum Ablesen meines Wasserzählers eine ESP-32 Cam im Einsatz, welche bereits Daten an iobroker sendet via mqtt, diese werden dann in iobroker geloggt. Ich möchte gerne eine Monats und Jahresauswertung mit Grafana machen und bin im Netz auf ein super Script gestoßen (für Stromzähler) welches ich nur minimal angepasst habe. Mein Problem ist jetzt, dass der Wert der ausgegeben wird für Stunde, Tag, Woche, Monat nicht richtig formatiert ist. Leider verstehe ich das Script nicht gut genug um diese Änderung selber zu machen.

    189f910c-6797-44fc-a6ad-b943c0b5126d-grafik.png
    Leider habe ich das Resultat, dass bei einem altem Zählerstand von 512.923 und neuem Zählerstand 513.201 als Ergebnis 278 m3 steht. Das sind aber nur 2,78 m3!
    Ebenso müsste bei Hour statt 4m3 nur 0,04m3 (da 40L) stehen, das gleiche dann für Month und Week.

    Anbei das Script:

    var cronH = "0 * * * *";
    var cronD = "59 23 * * *";
    var cronW = "0 0 * * 1";
    var cronM = "0 0 1 * *";
    var idHAGTotH = "0_userdata.0.Wasserzähler.tmp.Total-h";
    var idHAGTotD = "0_userdata.0.Wasserzähler.tmp.Total-d";
    var idHAGTotW = "0_userdata.0.Wasserzähler.tmp.Total-w";
    var idHAGTotM = "0_userdata.0.Wasserzähler.tmp.Total-m";
    var idHAGTotal = "mqtt.0.wasserzaehler.main.value"; /Wasserverbrauch insgesammt/
    var idHAGZielH = "0_userdata.0.Wasserzähler.Hour";
    var idHAGZielD = "0_userdata.0.Wasserzähler.Day";
    var idHAGZielW = "0_userdata.0.Wasserzähler.Week";
    var idHAGZielM = "0_userdata.0.Wasserzähler.Month";
    var debug = false;
    var DPArray = [idHAGTotH, idHAGTotD , idHAGTotW, idHAGTotM, idHAGZielH, idHAGZielD, idHAGZielW, idHAGZielM];
    var DPUnit = "m3";
    DPArray.forEach(function(wert, index, array) {
    var DPType = wert.split(".");
    var DPDescr = "Water usage of " + (DPType[DPType.length - 1]);

    if(index > 3) DPUnit = "m3";
    createState(wert, 0, {
    name: DPDescr,
    desc: DPDescr,
    type: 'number',
    unit: DPUnit,
    role: 'value'
    });
    });
    function haupt (VorId, ZielId) {
    var nVorwert = getState(VorId).val;
    var nAktuell = getState(idHAGTotal).val;
    var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
    setState(ZielId, nDiff, true);
    if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
    var shandler = on ({id: ZielId, change: 'any'}, function(data) {
    setState(VorId, (nAktuell*10)/10, true);
    unsubscribe(shandler);
    });
    }
    // regelmässige Wiederholungen
    // -----------------------------------------------------------------------------
    schedule(cronH, function () {
    haupt(idHAGTotH, idHAGZielH);
    });
    schedule(cronD, function () {
    haupt(idHAGTotD, idHAGZielD);
    });
    schedule(cronW, function () {
    haupt(idHAGTotW, idHAGZielW);
    });
    schedule(cronM, function () {
    haupt(idHAGTotM, idHAGZielM);
    });

    Kann mir bitte jemand helfen? (Ich vermute das in dem Teil ab function haupt (VorId, ZielId) { etwas angepasst werden muss).
    Danke!

    paul53P 1 Antwort Letzte Antwort
    0
    • B benziman

      Hallo zusammen,

      Ich habe zum Ablesen meines Wasserzählers eine ESP-32 Cam im Einsatz, welche bereits Daten an iobroker sendet via mqtt, diese werden dann in iobroker geloggt. Ich möchte gerne eine Monats und Jahresauswertung mit Grafana machen und bin im Netz auf ein super Script gestoßen (für Stromzähler) welches ich nur minimal angepasst habe. Mein Problem ist jetzt, dass der Wert der ausgegeben wird für Stunde, Tag, Woche, Monat nicht richtig formatiert ist. Leider verstehe ich das Script nicht gut genug um diese Änderung selber zu machen.

      189f910c-6797-44fc-a6ad-b943c0b5126d-grafik.png
      Leider habe ich das Resultat, dass bei einem altem Zählerstand von 512.923 und neuem Zählerstand 513.201 als Ergebnis 278 m3 steht. Das sind aber nur 2,78 m3!
      Ebenso müsste bei Hour statt 4m3 nur 0,04m3 (da 40L) stehen, das gleiche dann für Month und Week.

      Anbei das Script:

      var cronH = "0 * * * *";
      var cronD = "59 23 * * *";
      var cronW = "0 0 * * 1";
      var cronM = "0 0 1 * *";
      var idHAGTotH = "0_userdata.0.Wasserzähler.tmp.Total-h";
      var idHAGTotD = "0_userdata.0.Wasserzähler.tmp.Total-d";
      var idHAGTotW = "0_userdata.0.Wasserzähler.tmp.Total-w";
      var idHAGTotM = "0_userdata.0.Wasserzähler.tmp.Total-m";
      var idHAGTotal = "mqtt.0.wasserzaehler.main.value"; /Wasserverbrauch insgesammt/
      var idHAGZielH = "0_userdata.0.Wasserzähler.Hour";
      var idHAGZielD = "0_userdata.0.Wasserzähler.Day";
      var idHAGZielW = "0_userdata.0.Wasserzähler.Week";
      var idHAGZielM = "0_userdata.0.Wasserzähler.Month";
      var debug = false;
      var DPArray = [idHAGTotH, idHAGTotD , idHAGTotW, idHAGTotM, idHAGZielH, idHAGZielD, idHAGZielW, idHAGZielM];
      var DPUnit = "m3";
      DPArray.forEach(function(wert, index, array) {
      var DPType = wert.split(".");
      var DPDescr = "Water usage of " + (DPType[DPType.length - 1]);

      if(index > 3) DPUnit = "m3";
      createState(wert, 0, {
      name: DPDescr,
      desc: DPDescr,
      type: 'number',
      unit: DPUnit,
      role: 'value'
      });
      });
      function haupt (VorId, ZielId) {
      var nVorwert = getState(VorId).val;
      var nAktuell = getState(idHAGTotal).val;
      var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
      setState(ZielId, nDiff, true);
      if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
      var shandler = on ({id: ZielId, change: 'any'}, function(data) {
      setState(VorId, (nAktuell*10)/10, true);
      unsubscribe(shandler);
      });
      }
      // regelmässige Wiederholungen
      // -----------------------------------------------------------------------------
      schedule(cronH, function () {
      haupt(idHAGTotH, idHAGZielH);
      });
      schedule(cronD, function () {
      haupt(idHAGTotD, idHAGZielD);
      });
      schedule(cronW, function () {
      haupt(idHAGTotW, idHAGZielW);
      });
      schedule(cronM, function () {
      haupt(idHAGTotM, idHAGZielM);
      });

      Kann mir bitte jemand helfen? (Ich vermute das in dem Teil ab function haupt (VorId, ZielId) { etwas angepasst werden muss).
      Danke!

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @benziman sagte: "mqtt.0.wasserzaehler.main.value"

      Dieser Datenpunkt enthält den Gesamt-Zählerstand im m³? Dann ändere

      var nDiff = nAktuell - nVorwert;
      

      Ändere besser die Funktion:

      function haupt (VorId, ZielId) {
         var nVorwert = getState(VorId).val;
         var nAktuell = getState(idHAGTotal).val;
         var nDiff = nAktuell - nVorwert;
         setState(ZielId, nDiff, true);
         if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
         setState(VorId, nAktuell, true);
      }
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      B 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @benziman sagte: "mqtt.0.wasserzaehler.main.value"

        Dieser Datenpunkt enthält den Gesamt-Zählerstand im m³? Dann ändere

        var nDiff = nAktuell - nVorwert;
        

        Ändere besser die Funktion:

        function haupt (VorId, ZielId) {
           var nVorwert = getState(VorId).val;
           var nAktuell = getState(idHAGTotal).val;
           var nDiff = nAktuell - nVorwert;
           setState(ZielId, nDiff, true);
           if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
           setState(VorId, nAktuell, true);
        }
        
        B Offline
        B Offline
        benziman
        schrieb am zuletzt editiert von benziman
        #3

        @paul53

        danke für die schnelle Rückmeldung!

        var nDiff = nAktuell - nVorwert; enthält die Differenz je Stunde die dann übernommen wird je nach Cronjob wenn ich das richtig verstanden habe.

        Du hast zwei Zeilen entfernt, soll das so sein?

        var shandler = on ({id: ZielId, change: 'any'}, function(data) {
        unsubscribe(shandler);
        

        und diese beiden Zeilen hast du geändert:

        var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
        geändert in var nDiff = nAktuell - nVorwert;

        setState(VorId, (nAktuell*10)/10, true);
        geändert in setState(VorId, nAktuell, true);

        korrekt?

        MichMeinM 1 Antwort Letzte Antwort
        0
        • B benziman

          @paul53

          danke für die schnelle Rückmeldung!

          var nDiff = nAktuell - nVorwert; enthält die Differenz je Stunde die dann übernommen wird je nach Cronjob wenn ich das richtig verstanden habe.

          Du hast zwei Zeilen entfernt, soll das so sein?

          var shandler = on ({id: ZielId, change: 'any'}, function(data) {
          unsubscribe(shandler);
          

          und diese beiden Zeilen hast du geändert:

          var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
          geändert in var nDiff = nAktuell - nVorwert;

          setState(VorId, (nAktuell*10)/10, true);
          geändert in setState(VorId, nAktuell, true);

          korrekt?

          MichMeinM Offline
          MichMeinM Offline
          MichMein
          schrieb am zuletzt editiert von
          #4

          @benziman du könntest das Ganze auch mit dem SourceAnalytix Adapter loggen und hättest dann eine sehr umfangreiche Auswertung, wenn gewünscht dann auch mit ensprechender Kostenaufstellung.

          Gruß Michael
          Sofern Beiträge hilfreich für Dich sind, nutze das Voting unten rechts.

          B 1 Antwort Letzte Antwort
          0
          • MichMeinM MichMein

            @benziman du könntest das Ganze auch mit dem SourceAnalytix Adapter loggen und hättest dann eine sehr umfangreiche Auswertung, wenn gewünscht dann auch mit ensprechender Kostenaufstellung.

            B Offline
            B Offline
            benziman
            schrieb am zuletzt editiert von
            #5

            @michmein
            Klasse Tipp, hab mir eben mal ein Video dazu angesehen das schaue ich mir mal an. Adapter wird in iobroker nicht angezeigt, dann direkt über "Katze" (Source URL) installieren?

            MichMeinM Thomas BraunT 2 Antworten Letzte Antwort
            0
            • B benziman

              @michmein
              Klasse Tipp, hab mir eben mal ein Video dazu angesehen das schaue ich mir mal an. Adapter wird in iobroker nicht angezeigt, dann direkt über "Katze" (Source URL) installieren?

              MichMeinM Offline
              MichMeinM Offline
              MichMein
              schrieb am zuletzt editiert von
              #6

              @benziman sehr gerne.
              Ja über die Katze,

              460f32e3-8d33-4546-9a33-f8399b2735a6-grafik.png

              oder du änderst vorübergehend den Verwahrungsort auf Beta.

              Gruß Michael
              Sofern Beiträge hilfreich für Dich sind, nutze das Voting unten rechts.

              1 Antwort Letzte Antwort
              0
              • B benziman

                @michmein
                Klasse Tipp, hab mir eben mal ein Video dazu angesehen das schaue ich mir mal an. Adapter wird in iobroker nicht angezeigt, dann direkt über "Katze" (Source URL) installieren?

                Thomas BraunT Online
                Thomas BraunT Online
                Thomas Braun
                Most Active
                schrieb am zuletzt editiert von
                #7

                @benziman sagte in Script Berechnung Wasserverbrauch:

                dann direkt über "Katze" (Source URL) installieren?

                Nein, aus dem Beta-Repository.

                Linux-Werkzeugkasten:
                https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                NodeJS Fixer Skript:
                https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                B 1 Antwort Letzte Antwort
                0
                • Thomas BraunT Thomas Braun

                  @benziman sagte in Script Berechnung Wasserverbrauch:

                  dann direkt über "Katze" (Source URL) installieren?

                  Nein, aus dem Beta-Repository.

                  B Offline
                  B Offline
                  benziman
                  schrieb am zuletzt editiert von
                  #8

                  @thomas-braun

                  merkwürdig, kann den nicht mal per URL installieren wenn beta nicht aktiv... Installation läuft zwar durch aber Adapter wird nicht angezeigt, merkwürdig.

                  Thomas BraunT MichMeinM HomoranH 3 Antworten Letzte Antwort
                  0
                  • B benziman

                    @thomas-braun

                    merkwürdig, kann den nicht mal per URL installieren wenn beta nicht aktiv... Installation läuft zwar durch aber Adapter wird nicht angezeigt, merkwürdig.

                    Thomas BraunT Online
                    Thomas BraunT Online
                    Thomas Braun
                    Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @benziman

                    Weil du es falsch / 'über die räudige Katze' machst.

                    Linux-Werkzeugkasten:
                    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                    NodeJS Fixer Skript:
                    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                    1 Antwort Letzte Antwort
                    0
                    • B benziman

                      @thomas-braun

                      merkwürdig, kann den nicht mal per URL installieren wenn beta nicht aktiv... Installation läuft zwar durch aber Adapter wird nicht angezeigt, merkwürdig.

                      MichMeinM Offline
                      MichMeinM Offline
                      MichMein
                      schrieb am zuletzt editiert von MichMein
                      #10

                      @benziman vermutlich hast du nur den Adapter dadurch installiert und keine Instanz. Ist er jetzt unter deinen Adaptern zu sehen? Wenn ja,dann müsstest du jetzt eine Instanz hinzufügen können.

                      a9bdbc5c-caf6-439a-b529-5002fb714080-grafik.png
                      a886c8a4-bd6b-4912-8ffc-ac71c9be4559-grafik.png

                      Gruß Michael
                      Sofern Beiträge hilfreich für Dich sind, nutze das Voting unten rechts.

                      1 Antwort Letzte Antwort
                      0
                      • B benziman

                        @thomas-braun

                        merkwürdig, kann den nicht mal per URL installieren wenn beta nicht aktiv... Installation läuft zwar durch aber Adapter wird nicht angezeigt, merkwürdig.

                        HomoranH Nicht stören
                        HomoranH Nicht stören
                        Homoran
                        Global Moderator Administrators
                        schrieb am zuletzt editiert von
                        #11

                        @benziman sagte in Script Berechnung Wasserverbrauch:

                        Installation läuft zwar durch aber Adapter wird nicht angezeigt, merkwürdig.

                        mngels Beweisen hab ich die Glaskugel befragt
                        Adapter wahrscheinlich wohl, aber keine Instanz.

                        Warum steht in der Doku

                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        Thomas BraunT 1 Antwort Letzte Antwort
                        0
                        • HomoranH Homoran

                          @benziman sagte in Script Berechnung Wasserverbrauch:

                          Installation läuft zwar durch aber Adapter wird nicht angezeigt, merkwürdig.

                          mngels Beweisen hab ich die Glaskugel befragt
                          Adapter wahrscheinlich wohl, aber keine Instanz.

                          Warum steht in der Doku

                          Thomas BraunT Online
                          Thomas BraunT Online
                          Thomas Braun
                          Most Active
                          schrieb am zuletzt editiert von Thomas Braun
                          #12

                          @homoran

                          Das kann ja gar nicht sein. Schließlich weiß er doch zu 100% was er da tut.
                          Steht ja auch bei der 'Installation über die Katze' immer dabei, das man das weiß.

                          Warnung!

                          Installieren Sie keine Adapter von GitHub, es sei denn, Sie werden von einem Entwickler dazu aufgefordert oder Sie sind sich zu 100% sicher, was Sie tun! Adapter auf GitHub funktionieren möglicherweise nicht wie gewünscht (sie befinden sich noch in der Entwicklung). Installieren Sie sie nur, wenn Sie an einem Test teilnehmen! Bitte warten Sie auf eine offizielle Veröffentlichung!

                          Bitte beachten: Adapterabhängigkeiten werden bei Verwendung dieser Installationsmethode nicht überprüft. Bitte überprüfen Sie sie selbst. Bei Bedarf müssen Sie nach der Installation auch manuell eine Instanz erstellen.

                          Linux-Werkzeugkasten:
                          https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                          NodeJS Fixer Skript:
                          https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                          iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                          1 Antwort Letzte Antwort
                          1
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          395

                          Online

                          32.5k

                          Benutzer

                          81.7k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe