Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Tageswerte in datenpunkt 0 verhindern

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Tageswerte in datenpunkt 0 verhindern

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      AingTii last edited by

      Hallo,

      ich habe ein Script in dem ich um 0:00 den alten Wert vom neuen abziehen und das Delta in einen Datenpunkt schreibe.
      Trotz des If nur zu schreiben wenn !=0 bekomme ich danach noch mal einen Wert mit 0

      215a4386-7bdf-4582-b100-c70d4dd23ef0-image.png

      in der History sehe ich, dass es nur wenige Millisekunden nach dem eigentlich Wert passiert...

      var total = '0_userdata.0.P.7_Energie.G_Total'/*P 7 Energie Total*/;
      var tag = '0_userdata.0.P.7_Energie.G_Tag'/*P 7 Energie Tag*/;
      var tagalt = '0_userdata.0.P.7_Energie.G_Tag_alt'/*P 7 Energie Tag alt*/;
      var timerTag = null;
      clearSchedule(timerTag);
      
      
      function Tagkalk()
      {
          var input = getState(total).val;
          var old = getState(tagalt).val;
          var aktuell = input-old;
          if (aktuell != 0){
              setState(tag, aktuell);
          }    
          setState(tagalt, input);    
      }
      
      timerTag = schedule('0 0 * * *', function () {Tagkalk();});
      
      
      

      bei dem Total Wert gibt es keine 0

      02d7d0ce-b6e9-4067-9582-53fb61aa2aa6-image.png

      im Datenpunkt TagAlt steht auch der Wert 36,825

      Woher kommt es nun dass Javascript eine 0 in den Datenpunkt schiebt, kurz nach dem der berechnetet Wert geschrieben wird...

      Hat jemand eine Lösung oder Idee dazu?

      Danke
      Gruß Jens

      M paul53 2 Replies Last reply Reply Quote 0
      • M
        MCU @AingTii last edited by

        @aingtii In History-Einstellungen zum Objekt die Option setzen.
        4f9f65d1-a7cc-4425-9b82-56fd092b55b4-image.png

        Homoran A 2 Replies Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @MCU last edited by

          @mcu ich glaube die Frage bezieht sich auf das Skript.
          Natürlich kann der Adapter diese 0 unterdrücken, aber wenn ich als js-Legastheniker den TO richtig verstehe hätte das Skript die 0 gar nicht an den DP schicken dürfen.

          A 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @AingTii last edited by paul53

            @aingtii
            Vermutung: Es läuft noch ein alter Zeitplan. Starte mal ioBroker neu.

            Zeile 5 und die Variable timerTag sind überflüssig.

            Zeile 19 kann man so schreiben:

            schedule('0 0 * * *', Tagkalk);
            

            Für eine Darstellung der Historie in einem Diagramm sollte nicht um 0:00 Uhr geschrieben werden, sondern kurz davor:

            schedule('59 23 * * *', Tagkalk);
            
            A 2 Replies Last reply Reply Quote 0
            • A
              AingTii @MCU last edited by

              @mcu
              Danke, allerdings behebt es nicht das Problem das der Datenpunkt dann für den Tages wert von Gestern auf 0 im Datenpunkt steht.
              Der Datenpunkt könnte auch mal wirklich 0 sein, daher wollte ich das gern drin lassen

              Danke
              Gruß Jens

              1 Reply Last reply Reply Quote 0
              • A
                AingTii @Homoran last edited by

                @homoran
                was meinst Du mit TO ?
                normal dürfte der Script nur Werte ungleich 0 schreiben, so kenne ich es zumindest

                Danke

                1 Reply Last reply Reply Quote 0
                • A
                  AingTii @paul53 last edited by

                  @paul53

                  OK ioBroker neu gestartet schaue Morgen dann ob es eien Änderung gebracht hat.

                  Eigentlich hatte ich die Timer alle abgerufen und geschaut, ob da noch welche im Hintergrund laufen, hatte keien gesehen,
                  daher ja auch das clear in Zeile 5

                  Mit dem Schreiben kurz vor 0:00 ist ein guter Hinweis, teste ich anschließend noch mal
                  wenn der Neustart nichts gebracht hat...

                  Danke
                  Gruß Jens

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @AingTii last edited by

                    @aingtii sagte: daher ja auch das clear in Zeile 5

                    Was soll ein

                    clearSchedule(null);
                    

                    bringen?

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      AingTii @paul53 last edited by

                      @paul53

                      Jetzt wo Du es noch mal ganze Klar auf eine Kinoleinwand geschrieben hast , habe ich es auch erkannt🤦‍♂️

                      1 Reply Last reply Reply Quote 0
                      • A
                        AingTii @paul53 last edited by

                        @paul53

                        noch eine Frage dazu, da ich das Wöchentlich, Monatlich und jährlich
                        ebenfalls wegschreiben möchte.

                        Wöchentlich => Klar, Sontags Nachts 23:59
                        Monatlich => nicht ganz klar, den 31. habe ich ja nicht immer, wie setze ich denn den letzten Tag im Monat?
                        geht das als Cron oder muss ich jeden Monat eizeln, bzw. die 31er, 30er und 28, wobei dann das Schaltjahr
                        blöde ist
                        Jährlich => Klar, 31.12. 23:59

                        Danke

                        paul53 2 Replies Last reply Reply Quote 0
                        • paul53
                          paul53 @AingTii last edited by

                          @aingtii sagte: da ich das Wöchentlich, Monatlich und jährlich ebenfalls wegschreiben möchte.

                          Dafür ist der Sourceanalytix-Adapter gedacht.

                          1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @AingTii last edited by

                            @aingtii sagte: wie setze ich denn den letzten Tag im Monat?

                            // bei schedule um 23:59 Uhr:
                            if(new Date(Date.now() + 120000).getDate() == 1) { // morgen ist der 1.
                                // Aktion am Monatsende
                            } 
                            
                            A 1 Reply Last reply Reply Quote 0
                            • A
                              AingTii @paul53 last edited by

                              @paul53

                              also der Neustart hat es gebracht.
                              Heute war kein 0 wert und wurde auch kein weitere mal geschrieben

                              eigentlich könnte ich dann ja auch mit einem Timer der 23:59 läuft
                              auskommen und mit If dann über Wochentag, Monatsende und Jahresende
                              alles erledigen....

                              Danke

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              678
                              Online

                              31.8k
                              Users

                              80.0k
                              Topics

                              1.3m
                              Posts

                              4
                              13
                              633
                              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