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.
    • M
      MatthiaB last edited by

      Hallo,

      ich habe ein Script. Das sollte über die shedule-Funktion jeden Tag ausgeführt werden. Leider hat das nur im Test geklappt. Ich habe dann über das Menü einen Zeitplan erstellt. Jeder Stunde. Aber auch da funktioniert das nur im Test.

      Was mache ich wohl falsch?

      UncleSam 1 Reply Last reply Reply Quote 0
      • 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

                            910
                            Online

                            31.8k
                            Users

                            80.0k
                            Topics

                            1.3m
                            Posts

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