Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] Schedule mit Zeit aus einem Datenpunk

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Frage] Schedule mit Zeit aus einem Datenpunk

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

      HI,

      ist es möglich folgenden schedule Befehl mit Zeiten aus einem Datenpunkt / Objekt zu bedienen?

      schedule("30 22 * * 0-6", function () {
      

      der Inhalt des Datenpunktes ist bspw. 22:30

      nun habe ich folgendes leider erfolglos versucht:

      var zu_stunden = parseFloat(getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.substring(0,2));
      var zu_minuten = parseFloat(getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.substring(3,5));
      
      schedule(zu_minuten +" "+ zu_stunden +" * * 0-6", function () {
      
      

      Aber leider funktioniert das nicht. Gibt es hier eine Möglichkeit das zu realisieren?

      Gruß

      Steffen

      1 Reply Last reply Reply Quote 0
      • htrecksler
        htrecksler Forum Testing last edited by

        wenn du nach "Wecker" suchst, findest du einige Interessante Ansätze.

        Hier noch ein Beispiel wie ich das für die Rolladensteuerung einsetze

        wobei in der Variable idt1 ein Text steht: z. B. 08:30

        // #################### Auslöser ##########
        // ########## Zeit/Wecker     ##########
        var idt1 = "javascript.0.Settings.TagesstartArbeitstag";
        var timer1;
        
        function getTimeObject(state) {
            var t = state.val.split(":");
            var h = parseInt(t[0]);
            var m = parseInt(t[1]);
            return {hour: h, minute: m};   
        }
        
        on(idt1, function(dp) {
            var t = getTimeObject(dp.newState);
            log("Beginn Tagesart Arbeitstag wird eingestellt " + JSON.stringify(t),'warn');
            if (timer1) clearSchedule(timer1);
            timer1 = on({time: t}, function () {
                RolladenFahren('Wecker');
            });
        });
        
        var state = getState(idt1);
        var t = getTimeObject(state);
        if (timer1) clearSchedule(timer1);
        timer1 = on({time: t}, function () {
                RolladenFahren('Wecker');
        });
        
        
        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          Versuche es mal so:

          var zu = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.split(':');
          
          schedule(zu[1] + ' ' + zu[0] + ' * * 0-6', function() {
          
          
          1 Reply Last reply Reply Quote 0
          • Peoples
            Peoples last edited by

            @paul53:

            Versuche es mal so:

            var zu = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.split(':');
            
            schedule(zu[1] + ' ' + zu[0] + ' * * 0-6', function() {
            
            ```` `  
            

            Klappt perfekt Danke.

            Warum meines nicht funktioniert verstehe ich trotzdem nicht 😞

            Gruß

            Steffen

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

              @peoples:

              Warum meines nicht funktioniert verstehe ich trotzdem nicht `

              var zu_stunden = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.substring(0,1);
              var zu_minuten = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.substring(3,4);
              

              Wozu parseFloat() ? Das Ergebnis soll ein (Teil-)string sein. Außerdem sind führende Nullen erforderlich (z.B. 08:15), bei der Version mit split(':') nicht.

              1 Reply Last reply Reply Quote 0
              • htrecksler
                htrecksler Forum Testing last edited by

                funktioniert der Code auch dann wenn die Datenpunkte geändert werden?

                Oder muss dann das Script neu gestartet werden?

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

                  @htrecksler:

                  funktioniert der Code auch dann wenn die Datenpunkte geändert werden? `
                  Nein, dazu muss man auf Änderung triggern.

                  var zu = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.split(':');
                  
                  function meineFunktion() {
                     ...
                  }
                  
                  var timer = schedule(zu[1] + ' ' + zu[0] + ' * * 0-6', meineFunktion);
                  
                  on("javascript.0.Jalousien.Konfig.Zeit_Schliessen", function(dp) {  // Trigern bei Änderung
                     zu = dp.state.val.split(':');
                     clearSchedule(timer);   // altes Schedule löschen
                     timer = schedule(zu[1] + ' ' + zu[0] + ' * * 0-6', meineFunktion);
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • Peoples
                    Peoples last edited by

                    Verstehe ich das richtig,

                    wenn ich den Datenpunkt ändern würde und den Trigger nicht nutze, würde die gänderte Zeit nie (bzw. erst nach einem Script - Neustart) gültig werden?

                    Gruß

                    Steffen

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

                      @peoples:

                      wenn ich den Datenpunkt ändern würde und den Trigger nicht nutze, würde die gänderte Zeit nie (bzw. erst nach einem Script - Neustart) gültig werden? `
                      Genau so ist es.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      759
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      1277
                      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