Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Zähleränderungen pro Tag berechnen?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    770

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Zähleränderungen pro Tag berechnen?

Scheduled Pinned Locked Moved Blockly
18 Posts 5 Posters 539 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BertDerKleineB BertDerKleine

    @homoran sagte in Zähleränderungen pro Tag berechnen?:

    DP "alter Zählerstand" anlegen.
    abends um 23:59:45
    Zählerstand-alterZähletstand berechnen und danach den DP mit aktuellem Zählerstand befüllen.

    Ich habe das jetzt gerade mal versucht mit:

    // Tages-Stromverbrauch messen
    on({id: [].concat(compareTime("23:50", "null", "==")), val: true}, async function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      ZaehlerVerbrauchGestern = getState("0_userdata.0.AlterVerbauchsZaehlerStand").val;
      ZaehlerVerbrauchHeute = getState("0_userdata.0.Verbrauchszaehler_SHM").val;
      DeltaTagesVerbrauch = parseFloat(ZaehlerVerbrauchHeute) - ZaehlerVerbrauchGestern;
      setState("0_userdata.0.TagesStromVerbrauch"/*TagesStromVerbrauch*/, DeltaTagesVerbrauch, true);
      setState("0_userdata.0.AlterVerbauchsZaehlerStand"/*AlterVerbauchsZaehlerStand*/, ZaehlerVerbrauchHeute, true);
      console.log(('TagesStromverbrauch: ' + String(('' + getState("0_userdata.0.TagesStromVerbrauch").val))));
    });
    

    Leider bekomme ich da einen Fehler, den ich nicht verstehe:

    script.js.Verbrauchszählung Error by subscription: empty ID defined. All states matched.
    

    Mir ist nicht klar, was da eine "empty ID" ist.

    HomoranH Do not disturb
    HomoranH Do not disturb
    Homoran
    Global Moderator Administrators
    wrote on last edited by
    #9

    @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

    mal versucht mit:

    ist das ein Blockly, dann bitte zeigen!

    kein Support per PN! - Fragen im Forum stellen -
    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
    Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    BertDerKleineB 1 Reply Last reply
    0
    • BertDerKleineB BertDerKleine

      @homoran sagte in Zähleränderungen pro Tag berechnen?:

      DP "alter Zählerstand" anlegen.
      abends um 23:59:45
      Zählerstand-alterZähletstand berechnen und danach den DP mit aktuellem Zählerstand befüllen.

      Ich habe das jetzt gerade mal versucht mit:

      // Tages-Stromverbrauch messen
      on({id: [].concat(compareTime("23:50", "null", "==")), val: true}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        ZaehlerVerbrauchGestern = getState("0_userdata.0.AlterVerbauchsZaehlerStand").val;
        ZaehlerVerbrauchHeute = getState("0_userdata.0.Verbrauchszaehler_SHM").val;
        DeltaTagesVerbrauch = parseFloat(ZaehlerVerbrauchHeute) - ZaehlerVerbrauchGestern;
        setState("0_userdata.0.TagesStromVerbrauch"/*TagesStromVerbrauch*/, DeltaTagesVerbrauch, true);
        setState("0_userdata.0.AlterVerbauchsZaehlerStand"/*AlterVerbauchsZaehlerStand*/, ZaehlerVerbrauchHeute, true);
        console.log(('TagesStromverbrauch: ' + String(('' + getState("0_userdata.0.TagesStromVerbrauch").val))));
      });
      

      Leider bekomme ich da einen Fehler, den ich nicht verstehe:

      script.js.Verbrauchszählung Error by subscription: empty ID defined. All states matched.
      

      Mir ist nicht klar, was da eine "empty ID" ist.

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #10

      @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

      String(('' + getState("0

      fehlt da etwas zwischen '..'

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Reply Last reply
      0
      • HomoranH Homoran

        @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

        mal versucht mit:

        ist das ein Blockly, dann bitte zeigen!

        BertDerKleineB Offline
        BertDerKleineB Offline
        BertDerKleine
        wrote on last edited by
        #11

        @homoran sagte in Zähleränderungen pro Tag berechnen?:

        @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

        mal versucht mit:

        ist das ein Blockly, dann bitte zeigen!

        So sieht es aus:
        delta.jpg

        HomoranH 1 Reply Last reply
        0
        • BertDerKleineB BertDerKleine

          @homoran sagte in Zähleränderungen pro Tag berechnen?:

          @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

          mal versucht mit:

          ist das ein Blockly, dann bitte zeigen!

          So sieht es aus:
          delta.jpg

          HomoranH Do not disturb
          HomoranH Do not disturb
          Homoran
          Global Moderator Administrators
          wrote on last edited by Homoran
          #12

          @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

          So sieht es aus:

          dann ist klar!
          der Trigger triggert auf keine ID

          Das ist für deine Aufgabe auch der falsche Triggerblock.
          Du brauchst den CRON Trigger

          kein Support per PN! - Fragen im Forum stellen -
          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
          Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          BertDerKleineB 1 Reply Last reply
          0
          • HomoranH Homoran

            @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

            So sieht es aus:

            dann ist klar!
            der Trigger triggert auf keine ID

            Das ist für deine Aufgabe auch der falsche Triggerblock.
            Du brauchst den CRON Trigger

            BertDerKleineB Offline
            BertDerKleineB Offline
            BertDerKleine
            wrote on last edited by BertDerKleine
            #13

            @homoran sagte in Zähleränderungen pro Tag berechnen?:

            @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

            So sieht es aus:

            dann ist klar!
            der Trigger triggert auf keine ID

            Kannst Du das für Aussenstehende übersetzen?
            "Falls aktuelle zeit = x ist wahr" klingt für mich erstmal schlüssig als Auslöser und die Blöcke docken problemlos aneinander. Keine Ahnung was mit "ID" hier gemeint ist.

            Das ist für deine Aufgabe auch der falsche Triggerblock.
            Du brauchst den CRON Trigger

            Ich habe jetzt mal nach anderem gesucht. Ist dieser "Zeitplan"-Baustein das, was Du meinst?

            zeitplan.jpg
            Damit gibts jedenfalls keinen sofortigen Fehler.

            Da gibts auch andere Bausteine, die "CRON" drinhaben.

            HomoranH 1 Reply Last reply
            0
            • BertDerKleineB BertDerKleine

              @homoran sagte in Zähleränderungen pro Tag berechnen?:

              @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

              So sieht es aus:

              dann ist klar!
              der Trigger triggert auf keine ID

              Kannst Du das für Aussenstehende übersetzen?
              "Falls aktuelle zeit = x ist wahr" klingt für mich erstmal schlüssig als Auslöser und die Blöcke docken problemlos aneinander. Keine Ahnung was mit "ID" hier gemeint ist.

              Das ist für deine Aufgabe auch der falsche Triggerblock.
              Du brauchst den CRON Trigger

              Ich habe jetzt mal nach anderem gesucht. Ist dieser "Zeitplan"-Baustein das, was Du meinst?

              zeitplan.jpg
              Damit gibts jedenfalls keinen sofortigen Fehler.

              Da gibts auch andere Bausteine, die "CRON" drinhaben.

              HomoranH Do not disturb
              HomoranH Do not disturb
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #14

              @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

              Falls aktuelle zeit = x ist wahr" klingt für mich erstmal schlüssig

              istces auch, aber es ist keine ID (Datenpunkt)
              und nur diese dürfen dahin

              @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

              Da gibts auch andere Bausteine, die "CRON" drinhaben.

              dann nimm die anderen
              der von dir gewählte kann buggy sein!
              nimm einen eifachen CRON

              kein Support per PN! - Fragen im Forum stellen -
              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              BertDerKleineB 1 Reply Last reply
              1
              • HomoranH Homoran

                @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

                Falls aktuelle zeit = x ist wahr" klingt für mich erstmal schlüssig

                istces auch, aber es ist keine ID (Datenpunkt)
                und nur diese dürfen dahin

                @bertderkleine sagte in Zähleränderungen pro Tag berechnen?:

                Da gibts auch andere Bausteine, die "CRON" drinhaben.

                dann nimm die anderen
                der von dir gewählte kann buggy sein!
                nimm einen eifachen CRON

                BertDerKleineB Offline
                BertDerKleineB Offline
                BertDerKleine
                wrote on last edited by BertDerKleine
                #15

                @homoran sagte in Zähleränderungen pro Tag berechnen?:

                dann nimm die anderen
                der von dir gewählte kann buggy sein!
                nimm einen eifachen CRON

                Der reine "CRON" ist aber so ein Puzzlestück. Wo stopfe ich den denn rein?
                M.a.W. welchen Trigger benutze ich als Klammer?

                HomoranH 1 Reply Last reply
                0
                • BertDerKleineB BertDerKleine

                  @homoran sagte in Zähleränderungen pro Tag berechnen?:

                  dann nimm die anderen
                  der von dir gewählte kann buggy sein!
                  nimm einen eifachen CRON

                  Der reine "CRON" ist aber so ein Puzzlestück. Wo stopfe ich den denn rein?
                  M.a.W. welchen Trigger benutze ich als Klammer?

                  HomoranH Do not disturb
                  HomoranH Do not disturb
                  Homoran
                  Global Moderator Administrators
                  wrote on last edited by
                  #16

                  @bertderkleine
                  Screenshot_20221218-133028_Firefox.jpg

                  Screenshot_20221218-132953_Firefox.jpg

                  kein Support per PN! - Fragen im Forum stellen -
                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  BertDerKleineB 1 Reply Last reply
                  1
                  • HomoranH Homoran

                    @bertderkleine
                    Screenshot_20221218-133028_Firefox.jpg

                    Screenshot_20221218-132953_Firefox.jpg

                    BertDerKleineB Offline
                    BertDerKleineB Offline
                    BertDerKleine
                    wrote on last edited by
                    #17

                    @homoran
                    Genau den Zeitplan benutze ich jetzt. Morgen weiss ich ob's geklappt hat. 🙂

                    1 Reply Last reply
                    0
                    • P Offline
                      P Offline
                      Pe Bo
                      wrote on last edited by
                      #18

                      Hi Leute, darf ich mich hier mal anschließen?

                      Meine Umsetzung hilft vielleicht auch dem TE. Sie ist leider noch nicht perfekt, dazu am Ende mehr. Sie ist für Gas, kann aber neben dem Verbrauch auch gleich die Kosten mitberechnen und lässt sich einfach auf Strom anpassen.

                      Ich lese mit Aqara die Gaszählerimpulse und habe einen DP Gaszählerstand, der auch zuverlässig in Schritten von 0,1m³ aktualsisiert wird. So weit so gut. Mit dem Blockly zur Verbrauchsberechnung hängt es aber noch ein wenig und ich weiß nicht, warum. Folgende User-Datenpunkte gibt es...

                      Präfixe:
                      h_ / d_ / w_ als Präfix für Stunde, Tag und Woche

                      zu jedem Präfix dann die Werte:
                      VerbrauchVolumen, VerbrauchEnergie, VerbrauchKosten, letzterZählerstand

                      und die allgemeinen DP:
                      Gaszählerstand, aktErdgasArbeitspreis, aktErdgasBrennwert, aktErdgasZustandszahl

                      Das Blockly läuft stündlich und aktualisiert die Stundenwerte, prüft ob Mitternach ist und aktualisiert die Tageswerte, prüft dabei ob Montag ist und aktualisiert die Wochenwerte.

                      Hier das Blockly als Quellcode:

                      schedule("0 * * * *", async function () {
                        // Aufruf stündlich, immer vorherige Stunde berechnen
                        setState("0_userdata.0.Gaszähler.Stunde.h_VerbrauchVolumen"/*h_VerbrauchVolumen*/, Math.round((parseFloat(getState("0_userdata.0.Gaszähler.Gaszählerstand").val) - getState("0_userdata.0.Gaszähler.Stunde.h_letzter_Zählerstand").val)*10)/10, true);
                        setState("0_userdata.0.Gaszähler.Stunde.h_VerbrauchEnergie"/*h_VerbrauchEnergie*/, Math.round((parseFloat(getState("0_userdata.0.Gaszähler.Stunde.h_VerbrauchVolumen").val) * parseFloat(getState("0_userdata.0.Gaszähler.aktErdgasZustandszahl").val) * getState("0_userdata.0.Gaszähler.aktErdgasBrennwert").val)*100)/100, true);
                        setState("0_userdata.0.Gaszähler.Stunde.h_VerbrauchKosten"/*h_VerbrauchKosten*/, Math.round((parseFloat(getState("0_userdata.0.Gaszähler.Stunde.h_VerbrauchEnergie").val) * getState("0_userdata.0.Gaszähler.aktErdgasArbeitspreis").val)*100)/100, true);
                        setState("0_userdata.0.Gaszähler.Stunde.h_letzter_Zählerstand"/*h_letzter Zählerstand*/, getState("0_userdata.0.Gaszähler.Gaszählerstand").val, true);
                        // Wenn Stunde gleich 0 dann Vortag berechnen
                        if ((new Date().getHours()) == 0) {
                          setState("0_userdata.0.Gaszähler.Tag.d_VerbrauchVolumen"/*d_VerbrauchVolumen*/, Math.round((parseFloat(getState("0_userdata.0.Gaszähler.Gaszählerstand").val) - getState("0_userdata.0.Gaszähler.Tag.d_letzterZählerstand").val)*10)/10, true);
                          setState("0_userdata.0.Gaszähler.Tag.d_VerbrauchEnergie"/*d_VerbrauchEnergie*/, Math.round((parseFloat(getState("0_userdata.0.Gaszähler.Tag.d_VerbrauchVolumen").val) * parseFloat(getState("0_userdata.0.Gaszähler.aktErdgasZustandszahl").val) * getState("0_userdata.0.Gaszähler.aktErdgasBrennwert").val)*100)/100, true);
                          setState("0_userdata.0.Gaszähler.Tag.d_VerbrauchKosten"/*d_VerbrauchKosten*/, Math.round((parseFloat((parseFloat(getState("0_userdata.0.Gaszähler.Tag.d_VerbrauchEnergie").val) * getState("0_userdata.0.Gaszähler.aktErdgasArbeitspreis").val)) / 100)*100)/100, true);
                          setState("0_userdata.0.Gaszähler.Tag.d_letzterZählerstand"/*d_letzterZählerstand*/, getState("0_userdata.0.Gaszähler.Gaszählerstand").val, true);
                          // Wenn Wochentag gleich 1 (Montag) dann Vorwoche berechnen
                          if ((new Date().getDay() === 0 ? 7 : new Date().getDay()) == 1) {
                            setState("0_userdata.0.Gaszähler.Woche.w_VerbrauchVolumen"/*w_VerbrauchVolumen*/, Math.round((parseFloat(getState("0_userdata.0.Gaszähler.Gaszählerstand").val) - getState("0_userdata.0.Gaszähler.Woche.w_letzterZählerstand").val)*10)/10, true);
                            setState("0_userdata.0.Gaszähler.Woche.w_VerbrauchEnergie"/*w_VerbrauchEnergie*/, Math.round((parseFloat(getState("0_userdata.0.Gaszähler.Woche.w_VerbrauchVolumen").val) * parseFloat(getState("0_userdata.0.Gaszähler.aktErdgasZustandszahl").val) * getState("0_userdata.0.Gaszähler.aktErdgasBrennwert").val)*100)/100, true);
                            setState("0_userdata.0.Gaszähler.Woche.w_VerbrauchKosten"/*w_VerbrauchKosten*/, Math.round((parseFloat((parseFloat(getState("0_userdata.0.Gaszähler.Woche.w_VerbrauchEnergie").val) * getState("0_userdata.0.Gaszähler.aktErdgasArbeitspreis").val)) / 100)*100)/100, true);
                            setState("0_userdata.0.Gaszähler.Woche.w_letzterZählerstand"/*w_letzterZählerstand*/, getState("0_userdata.0.Gaszähler.Gaszählerstand").val, true);
                          }
                        }
                      });
                      

                      und hier in der Grafik:
                      38bf1f3f-52b6-44f6-82da-cfa385f9121f-image.png

                      In den allermeisten Fällen läuft es zuverlässig jede Stunde und aktualisiert alle Werte die zu dem jeweiligen Zeitpunkt fällig sind. Manchmal jedoch wird je Sektion nur der letzte Punkt ausgeführt, also nur der letzte Zählerstand von Stunde, Tag oder Woche mit dem aktuellen Zählerstand aktualisiert. Die Berechnungen werden in den seltenen Fällen nicht ausgeführt oder nicht geschrieben.

                      Hat jemand eine Idee, warum das manchmal passieren könnte? Oder was ich zum Debuggen unternehmen kann? In der Console unter dem Script erscheinen keine Fehler, im Protokoll auch nicht. Da bin ich ein wenig ratlos.

                      Viele Grüße,
                      Peter

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      576

                      Online

                      32.8k

                      Users

                      82.7k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe