Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Zeitbasiertes Script läuft nicht

    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

    Zeitbasiertes Script läuft nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • UncleSam
      UncleSam Developer @MatthiaB last edited by

      @MatthiaB Gute Frage.

      1 Reply Last reply Reply Quote 0
      • UncleSam
        UncleSam Developer last edited by

        Ach, du möchtest eine Antwort? Kannst du vielleicht etwas mehr Informationen liefern? Wie sieht das Script aus? Und was heisst "funktioniert nur im Test"?

        M 1 Reply Last reply Reply Quote 0
        • M
          MatthiaB @UncleSam last edited by MatthiaB

          @UncleSam

          '* * * * *'//Kilometerstand
          
          var kmStand = getState('vw-connect.0.WVWZZZ3CZHE064639.status.data_0x0203FFFFFF.field_0x0203010002.milCarSent'/*milCarSent*/).val;
          var km = kmStand - 75582;
          
          function setzeWert(){
          setState('javascript.0.Eigene.gefahreneKM',km/*kmStand*/)
          }
          
          //Anzahl Tage im Jahr 2021
          
          var endDate = new Date();
          
          var startDate = new Date(2021, 0, 1, 0, 0, 0);
          
          var differenz =  Math.round((endDate.getTime() - startDate.getTime())/86400000);
          
          function setzeWertTage(){
          setState('javascript.0.Eigene.days',differenz/*days*/)
          }
          
          //gefahrene Kilometer pro Tag
          
          var kmTag = Math.round(km / differenz);
          
          function setzeWertkmTag(){
          setState('javascript.0.Eigene.kmProTag',kmTag/*kmProTag*/)
          }
          
          //Hochrechung aufs Jahr
          
          var kmJahr = kmTag * 365
          
          function setzeWertkmJahr(){
          setState('javascript.0.Eigene.kmJahr',kmJahr/*kmJahr*/)
          }
          
          //kWh pro Tag
          
          var kWhJahr = getState('sourceanalytix.0.fritzdect__0__DECT200_116300037014__power.currentYear.consumed.05_currentYear'/*05 currentYear*/).val;
          var kWhTag = kWhJahr / differenz
          var kWhTagR = kWhTag.toFixed(2);
          
          function setzeWertkWhTag(){
          setState('javascript.0.Eigene.kWhProTag',kWhTagR/*kWhJahr*/)
          }
          
          //Daten in die Datenbank schreiben
          
          setzeWertTage();
          setzeWertkmTag();    
          setzeWert();
          setzeWertkmJahr();
          setzeWertkWhTag();
          

          Der obere Code hat noch einen Zeitplan. Vorher hatte ich die untere Funktion benutzt. Solange ich auf der iobroker Oberfläche war hat er auch zu den Zeiten das Script ausgeführt.

          schedule({hour: 20, minute: 48}, function () { 
          setzeWertTage(); } );
          

          gerade habe ich alle Scripte neu gestartet und dann wurden auch die Werte in die DB geschrieben

          UncleSam 1 Reply Last reply Reply Quote 0
          • UncleSam
            UncleSam Developer @MatthiaB last edited by

            @MatthiaB Kam denn um 20:48 eine Fehlermeldung?

            Was meinst du mit dem folgenden?

            Der obere Code hat noch einen Zeitplan. Vorher hatte ich die untere Funktion benutzt. Solange ich auf der iobroker Oberfläche war hat er auch zu den Zeiten das Script ausgeführt.

            Setze doch mal den Schedule auf { hour: 15, minute: 50 } und schaue, ob es ausgeführt wird.
            Und vielleicht machst du noch ein Log in die Funktion, damit nicht etwa das "setState()" das Problem ist.

            M 2 Replies Last reply Reply Quote 0
            • M
              MatthiaB @UncleSam last edited by

              @UncleSam

              ich haben nun folgendes gemacht:

              schedule({hour: 16, minute: 5}, function () {

              setzeWertTage();
              setzeWertkmTag();
              setzeWert();
              setzeWertkmJahr();
              setzeWertkWhTag();

              console.log ('erledigt');

              } );

              im Log

              javascript.0 2021-01-07 16:05:00.015 info (24041) script.js.common.Test.GTE-KM_Stand: erledigt

              Die Daten wurden korrekt ermittelt.

              Bei den Scripten gibt es rechts eine Uhr. Da kann man auch Zeitpläne erstellen.

              Es kann doch nicht daran liegen das ich das Web-Fenster des iobroker schließe oder?

              UncleSam 1 Reply Last reply Reply Quote 0
              • M
                MatthiaB @UncleSam last edited by

                @UncleSam

                habe es mal umgestellt:

                schedule("* * * * *", function () {

                setzeWertTage();
                setzeWertkmTag();
                setzeWert();
                setzeWertkmJahr();
                setzeWertkWhTag();

                console.log ('erledigt');

                } );

                laut log wird die Funktion jede Minute ausgeführt.

                Ich prüfe das mal morgen wieder.

                1 Reply Last reply Reply Quote 0
                • UncleSam
                  UncleSam Developer @MatthiaB last edited by

                  @MatthiaB sagte in Zeitbasiertes Script läuft nicht:

                  Bei den Scripten gibt es rechts eine Uhr. Da kann man auch Zeitpläne erstellen.
                  Es kann doch nicht daran liegen das ich das Web-Fenster des iobroker schließe oder?

                  Kann ich mir nicht vorstellen. Das ist ja nur ein Tool, das dir den entsprechenden Cron Ausdruck generiert. Das hat nicht mit der Ausführung von Scripts zu tun. Aber speichern musst du natürlich schon 😉

                  M 2 Replies Last reply Reply Quote 0
                  • M
                    MatthiaB @UncleSam last edited by

                    @UncleSam

                    ja ich glaube ich habe das Tool nicht korrekt benutzt. 😞

                    1 Reply Last reply Reply Quote 0
                    • M
                      MatthiaB @UncleSam last edited by MatthiaB

                      @UncleSam

                      hi,

                      mein Script liefert schön jede Stunde einen Logeintrag, aber ändert keine Daten in der Datenbank.

                      Ich glaube weil sich die Werte nicht aktualisieren im Script. Die Variablen sind ja gesetzt.

                      Die shedule-Funktion setzt ja nur die Werte. Die Berechnung läuft woanders ab. Und dort werden keine neuen Werte gezogen...

                      UncleSam 1 Reply Last reply Reply Quote 0
                      • UncleSam
                        UncleSam Developer @MatthiaB last edited by

                        @MatthiaB Ja, dann musst du natürlich jedes mal auch noch rechnen. Sonst bringt es sehr wenig 😉

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          MatthiaB @UncleSam last edited by

                          @unclesam

                          Hi,

                          mein Script läuft nun, allerdings ist bei dem ein neuer Tag erst um 12 Uhr nicht um 0 Uhr...

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          843
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          2
                          12
                          319
                          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