Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Script Berechnung Wasserverbrauch

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Script Berechnung Wasserverbrauch

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      benziman last edited by 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!

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @benziman last edited by 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 1 Reply Last reply Reply Quote 0
        • B
          benziman @paul53 last edited by 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?

          MichMein 1 Reply Last reply Reply Quote 0
          • MichMein
            MichMein @benziman last edited by

            @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 1 Reply Last reply Reply Quote 0
            • B
              benziman @MichMein last edited by

              @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?

              MichMein Thomas Braun 2 Replies Last reply Reply Quote 0
              • MichMein
                MichMein @benziman last edited by

                @benziman sehr gerne.
                Ja über die Katze,

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

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

                1 Reply Last reply Reply Quote 0
                • Thomas Braun
                  Thomas Braun Most Active @benziman last edited by

                  @benziman sagte in Script Berechnung Wasserverbrauch:

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

                  Nein, aus dem Beta-Repository.

                  B 1 Reply Last reply Reply Quote 0
                  • B
                    benziman @Thomas Braun last edited by

                    @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 Braun MichMein Homoran 3 Replies Last reply Reply Quote 0
                    • Thomas Braun
                      Thomas Braun Most Active @benziman last edited by

                      @benziman

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

                      1 Reply Last reply Reply Quote 0
                      • MichMein
                        MichMein @benziman last edited by MichMein

                        @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

                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @benziman last edited by

                          @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 Braun 1 Reply Last reply Reply Quote 0
                          • Thomas Braun
                            Thomas Braun Most Active @Homoran last edited by Thomas Braun

                            @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.

                            1 Reply Last reply Reply Quote 1
                            • First post
                              Last post

                            Support us

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

                            929
                            Online

                            31.6k
                            Users

                            79.4k
                            Topics

                            1.3m
                            Posts

                            5
                            12
                            695
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo