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. Skripten / Logik
  4. JavaScript
  5. Differenz zwischen zwei Tagen / Werten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Differenz zwischen zwei Tagen / Werten

Geplant Angeheftet Gesperrt Verschoben JavaScript
15 Beiträge 2 Kommentatoren 523 Aufrufe 2 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.
  • paul53P paul53

    @hagst sagte: Differenz zwischen heute und dem Vortag anzeigen lassen und einen neuen Datenpunkt mit der Differenz erstellen?

    Um 23:59 Uhr den aktuellen Zählerstand in einen eigenen Datenpunkt schreiben und diesen Wert vom aktuellen Zählerstand subtrahieren.

    H Online
    H Online
    hagst
    schrieb am zuletzt editiert von
    #3

    @paul53 sagte in Differenz zwischen zwei Tagen / Werten:

    Um 23:59 Uhr den aktuellen Zählerstand in einen eigenen Datenpunkt schreiben

    Kannst Du mir dabei helfen? Wenn ich den Wert habe, sollte ich den Rest schon schaffen.

    paul53P 1 Antwort Letzte Antwort
    0
    • H hagst

      @paul53 sagte in Differenz zwischen zwei Tagen / Werten:

      Um 23:59 Uhr den aktuellen Zählerstand in einen eigenen Datenpunkt schreiben

      Kannst Du mir dabei helfen? Wenn ich den Wert habe, sollte ich den Rest schon schaffen.

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

      @hagst sagte: Kannst Du mir dabei helfen?

      const idZaehler = '0_userdata.0.aktueller-zaehlerstand'; // vorhanden
      const idGestern = '0_userdata.0.zaehlerstand-gestern'; // zu erstellen
      const idHeute = '0_userdata.0.verbrauch-heute'; // zu erstellen
      
      var gestern = getState(idGestern).val;
      
      on(idZaehler, function(dp) {
          setState(idHeute, dp.state.val - gestern, true);
      });
      
      schedule('59 59 23 * * *', function() {
          gestern = getState(idZaehler).val;
          setState(idGestern, gestern, 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

      1 Antwort Letzte Antwort
      0
      • H Online
        H Online
        hagst
        schrieb am zuletzt editiert von hagst
        #5

        @paul53
        Danke für die Hilfe, wenn ich jetzt die beiden Datenpunkte habe, sollte das doch klappen, oder?

        const idD2 = '0_userdata.0.zaehlerstand-gestern';
        const idD1 = '0_userdata.0.verbrauch-heute';
        const idSumme = '0_userdata.0.zaehlerstand-differenz'; 
         
        var D1 = getState(idD1).val;
        var D2 = getState(idD2).val;
         
        if(!existsState(idSumme)) createState(idSumme, D1 - D2, {type: 'number', unit: 'Az'}); 
         
        function summe() {
            setState(idSumme, D1 - D2, true);
        }
         
        on(idD1, function(dp) {
           D1 = dp.state.val;
           summe();
        });
        on(idD2, function(dp) {
           D2 = dp.state.val;
           summe();
        });
        
        paul53P 1 Antwort Letzte Antwort
        0
        • H hagst

          @paul53
          Danke für die Hilfe, wenn ich jetzt die beiden Datenpunkte habe, sollte das doch klappen, oder?

          const idD2 = '0_userdata.0.zaehlerstand-gestern';
          const idD1 = '0_userdata.0.verbrauch-heute';
          const idSumme = '0_userdata.0.zaehlerstand-differenz'; 
           
          var D1 = getState(idD1).val;
          var D2 = getState(idD2).val;
           
          if(!existsState(idSumme)) createState(idSumme, D1 - D2, {type: 'number', unit: 'Az'}); 
           
          function summe() {
              setState(idSumme, D1 - D2, true);
          }
           
          on(idD1, function(dp) {
             D1 = dp.state.val;
             summe();
          });
          on(idD2, function(dp) {
             D2 = dp.state.val;
             summe();
          });
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #6

          @hagst sagte: sollte das doch klappen, oder?

          Ich verstehen nicht, was Verbrauch-heute - Zählerstand-gestern ergeben soll?
          Was ist die Einheit "Az"?

          Der heutige Verbrauch ist aktueller_Zählerstand - Zählerstand-gestern. Der aktuelle Zählerstand muss um Mitternacht in den Zählerstand-gestern geschrieben werden.

          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

          H 2 Antworten Letzte Antwort
          0
          • paul53P paul53

            @hagst sagte: sollte das doch klappen, oder?

            Ich verstehen nicht, was Verbrauch-heute - Zählerstand-gestern ergeben soll?
            Was ist die Einheit "Az"?

            Der heutige Verbrauch ist aktueller_Zählerstand - Zählerstand-gestern. Der aktuelle Zählerstand muss um Mitternacht in den Zählerstand-gestern geschrieben werden.

            H Online
            H Online
            hagst
            schrieb am zuletzt editiert von
            #7

            @paul53
            Ähhhhhh, ich habe da wirklich ganz großen Mist geschrieben :-( Ich vestehe es im Moment auch nicht, was ich da gemacht habe. Ich trinke mir jetzt einen Kaffee, gehe danach unter die Dusche und versuche es nochmal.

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @hagst sagte: sollte das doch klappen, oder?

              Ich verstehen nicht, was Verbrauch-heute - Zählerstand-gestern ergeben soll?
              Was ist die Einheit "Az"?

              Der heutige Verbrauch ist aktueller_Zählerstand - Zählerstand-gestern. Der aktuelle Zählerstand muss um Mitternacht in den Zählerstand-gestern geschrieben werden.

              H Online
              H Online
              hagst
              schrieb am zuletzt editiert von
              #8

              @paul53
              So, der nächste Versuch :-)

              const idD1 = '0_userdata.0.zaehlerstand-gestern'; // Zählerstand gestern
              const idD2 = ' 0_userdata.0.aktueller-zaehlerstand'; // Zählerstand aktuell
              const idSumme = '0_userdata.0.zaehlerstand-differenz'; // Differenz 
               
              var D1 = getState(idD1).val;
              var D2 = getState(idD2).val;
               
              if(!existsState(idSumme)) createState(idSumme, D2 - D1, {type: 'number'}); 
               
              function summe() {
                  setState(idSumme, D2 - D1, true);
              }
               
              on(idD1, function(dp) {
                 D1 = dp.state.val;
                 summe();
              });
              on(idD2, function(dp) {
                 D2 = dp.state.val;
                 summe();
              });
              

              Was ich auch nicht verstehe in Deinem Script, was ist "0_userdata.0.verbrauch-heute", ich bin etwas verwirrt.

              Ich habe einen Datenpunkt der mehrmals täglich steigt und fortlaufend ist "0_userdata.0.aktueller-zaehlerstand". Jetzt möchte ich einen Datenpunkt haben, der mir anzeigt, um wieviel der Zählerstand heute gestiegen ist.

              paul53P 1 Antwort Letzte Antwort
              0
              • H hagst

                @paul53
                So, der nächste Versuch :-)

                const idD1 = '0_userdata.0.zaehlerstand-gestern'; // Zählerstand gestern
                const idD2 = ' 0_userdata.0.aktueller-zaehlerstand'; // Zählerstand aktuell
                const idSumme = '0_userdata.0.zaehlerstand-differenz'; // Differenz 
                 
                var D1 = getState(idD1).val;
                var D2 = getState(idD2).val;
                 
                if(!existsState(idSumme)) createState(idSumme, D2 - D1, {type: 'number'}); 
                 
                function summe() {
                    setState(idSumme, D2 - D1, true);
                }
                 
                on(idD1, function(dp) {
                   D1 = dp.state.val;
                   summe();
                });
                on(idD2, function(dp) {
                   D2 = dp.state.val;
                   summe();
                });
                

                Was ich auch nicht verstehe in Deinem Script, was ist "0_userdata.0.verbrauch-heute", ich bin etwas verwirrt.

                Ich habe einen Datenpunkt der mehrmals täglich steigt und fortlaufend ist "0_userdata.0.aktueller-zaehlerstand". Jetzt möchte ich einen Datenpunkt haben, der mir anzeigt, um wieviel der Zählerstand heute gestiegen ist.

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

                @hagst sagte: was ist "0_userdata.0.verbrauch-heute"

                Bei dir: "0_userdata.0.zaehlerstand-differenz".
                In welcher Maßeinheit wird gezählt?
                Wo wird bei dir "0_userdata.0.zaehlerstand-gestern" aktualisiert? Der Wert muss sich einmal täglich ändern. Anstelle von Zeilen 14 bis 17:

                schedule('59 59 23 * * *', function() {
                    D1 = D2;
                    setState(idD1, D1, 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

                H 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @hagst sagte: was ist "0_userdata.0.verbrauch-heute"

                  Bei dir: "0_userdata.0.zaehlerstand-differenz".
                  In welcher Maßeinheit wird gezählt?
                  Wo wird bei dir "0_userdata.0.zaehlerstand-gestern" aktualisiert? Der Wert muss sich einmal täglich ändern. Anstelle von Zeilen 14 bis 17:

                  schedule('59 59 23 * * *', function() {
                      D1 = D2;
                      setState(idD1, D1, true);
                  });
                  
                  H Online
                  H Online
                  hagst
                  schrieb am zuletzt editiert von
                  #10

                  @paul53
                  Gezählt wird die Unterbrechnung einer Lichtschranke, leider nur fortlaufend und nicht täglich "0_userdata.0.aktueller-zaehlerstand". Die Werte der Lichtschranke werden täglich mehrmals aktualisiert und in "0_userdata.0.aktueller-zaehlerstand" geschrieben. An einem Tag in der Woche ändert sich der Wert nicht, weil die Lichtschranke aus ist.

                  Jetzt würde ich ganz gerne sehen, um wieviele Unterbrechungen der Wert pro Tag steigt.

                  Jetzt muss praktisch der Wert von gestern um 23:59:59 als Datenpunkt unter "0_userdata.0.zaehlerstand-gestern" gespeichert werden. Danach kann ich von "0_userdata.0.aktueller-zaehlerstand" den Wert "0_userdata.0.zaehlerstand-gestern" subtrahieren und habe als Ergebnis die Differenz zwischen gestern und heute.

                  Btw. Mir raucht der Kopf und langsam verstehe ich nur noch Bahnhof :-/

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • H hagst

                    @paul53
                    Gezählt wird die Unterbrechnung einer Lichtschranke, leider nur fortlaufend und nicht täglich "0_userdata.0.aktueller-zaehlerstand". Die Werte der Lichtschranke werden täglich mehrmals aktualisiert und in "0_userdata.0.aktueller-zaehlerstand" geschrieben. An einem Tag in der Woche ändert sich der Wert nicht, weil die Lichtschranke aus ist.

                    Jetzt würde ich ganz gerne sehen, um wieviele Unterbrechungen der Wert pro Tag steigt.

                    Jetzt muss praktisch der Wert von gestern um 23:59:59 als Datenpunkt unter "0_userdata.0.zaehlerstand-gestern" gespeichert werden. Danach kann ich von "0_userdata.0.aktueller-zaehlerstand" den Wert "0_userdata.0.zaehlerstand-gestern" subtrahieren und habe als Ergebnis die Differenz zwischen gestern und heute.

                    Btw. Mir raucht der Kopf und langsam verstehe ich nur noch Bahnhof :-/

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

                    @hagst sagte: wieviele Unterbrechungen der Wert pro Tag steigt.

                    Also die Zahl der Unterbrechungen seit Mitternacht? Das macht das Skript mit dem Schedule um Mitternacht.
                    Wenn es sich um eine Lichtschranke handelt, ist der Begriff "Verbrauch" natürlich nicht passend.

                    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

                    H 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @hagst sagte: wieviele Unterbrechungen der Wert pro Tag steigt.

                      Also die Zahl der Unterbrechungen seit Mitternacht? Das macht das Skript mit dem Schedule um Mitternacht.
                      Wenn es sich um eine Lichtschranke handelt, ist der Begriff "Verbrauch" natürlich nicht passend.

                      H Online
                      H Online
                      hagst
                      schrieb am zuletzt editiert von hagst
                      #12

                      @paul53 sagte in Differenz zwischen zwei Tagen / Werten:

                      Also die Zahl der Unterbrechungen seit Mitternacht?

                      Genau. Bis gestern wurde ide Lichtschranke z.B. 65000 mal unterbochen und in den Datenpunkt "0_userdata.0.aktueller-zaehlerstand" als Wert geschrieben. Heute wird die Lichtschranke erneut zu unterschiedlichen Zeiten unterbrochen und der Datenpunkt "0_userdata.0.aktueller-zaehlerstand" geändert. Jetzt würde ich gerne sehen, wie oft seit 00:00:00 Uhr am heutigen Tag die Lichtschranke schon unterbrochen wurde.

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • H hagst

                        @paul53 sagte in Differenz zwischen zwei Tagen / Werten:

                        Also die Zahl der Unterbrechungen seit Mitternacht?

                        Genau. Bis gestern wurde ide Lichtschranke z.B. 65000 mal unterbochen und in den Datenpunkt "0_userdata.0.aktueller-zaehlerstand" als Wert geschrieben. Heute wird die Lichtschranke erneut zu unterschiedlichen Zeiten unterbrochen und der Datenpunkt "0_userdata.0.aktueller-zaehlerstand" geändert. Jetzt würde ich gerne sehen, wie oft seit 00:00:00 Uhr am heutigen Tag die Lichtschranke schon unterbrochen wurde.

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

                        @hagst
                        Dann passt das mit dem Schedule kurz vor Mitternacht.
                        Wenn noch ein Datenpunkt zum Historisieren benötigt wird, um die Unterbrechungen pro Tag zu erfassen, kann man die Schedule-Funktion noch erweitern:

                        schedule('59 59 23 * * *', function() {
                            setState('0_userdata.0.zaehlerdifferenz-gestern', D2 - D1, true);
                            D1 = D2;
                            setState(idD1, D1, true);
                        });
                        

                        Damit im Diagramm der historisierten Werte das Datum stimmt, macht man es kurz vor Mitternacht.

                        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

                        H 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @hagst
                          Dann passt das mit dem Schedule kurz vor Mitternacht.
                          Wenn noch ein Datenpunkt zum Historisieren benötigt wird, um die Unterbrechungen pro Tag zu erfassen, kann man die Schedule-Funktion noch erweitern:

                          schedule('59 59 23 * * *', function() {
                              setState('0_userdata.0.zaehlerdifferenz-gestern', D2 - D1, true);
                              D1 = D2;
                              setState(idD1, D1, true);
                          });
                          

                          Damit im Diagramm der historisierten Werte das Datum stimmt, macht man es kurz vor Mitternacht.

                          H Online
                          H Online
                          hagst
                          schrieb am zuletzt editiert von
                          #14

                          @paul53
                          Vielen Dank Paul, ich glaube jetzt verstehe ich es so langsam. Um 00:00:01 werde ich sehen, ob es geklappt hat :-)

                          1 Antwort Letzte Antwort
                          0
                          • H hagst

                            Hallo,
                            ich habe einen Datenpunkt: 0_userdata.0.aktueller-zaehlerstand

                            Dieser Datenpunkt wird mehrmals täglich aktualisiert und und der Zählerstand steigt. Wie kann ich jetzt mit js die Differenz zwischen heute und dem Vortag anzeigen lassen und einen neuen Datenpunkt mit der Differenz erstellen?

                            Beispiel:
                            Datenpunkt war gestern: 0_userdata.0.aktueller-zaehlerstand 11000
                            Datenpunkt: ist heute heute: 0_userdata.0.aktueller-zaehlerstand 11020
                            Differenz = 20

                            Kann mir da jemand helfen, vielleicht sogar mit einem Skript?

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

                            @hagst sagte: ich habe einen Datenpunkt: 0_userdata.0.aktueller-zaehlerstand

                            Anmerkung: Hättest Du die ID strukturiert, z.B. "0_userdata.0.lichtschranke.zaehlerstand_aktuell", wäre ich nicht auf die Idee gekommen, die Differenz zu gestern "Verbrauch" zu nennen.

                            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

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


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            516

                            Online

                            32.6k

                            Benutzer

                            82.2k

                            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