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 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

                        884
                        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