Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Zeitsteuerung über Variable

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Zeitsteuerung über Variable

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

      Hallo zusammen,

      ich möchte mit einem Script eine Ein- und Ausschaltzeit aus je einer Variable lesen und damit das Ein- und Ausschalten unserer Aussenbeleuchtung steuern.

      Ich mach das über eine Variable, um später die Ein- und Ausschaltzeiten über VIS einstellen zu können.

      Hier das Script:

      log("ZEITSTEUERUNG AUSSENBEREICH: Script gestartet", "info");
      
      on(/^javascript.4.Einschaltzeit/, function(obj) 
      {
          log("ZEITSTEUERUNG AUSSENBEREICH: Einschalt-Sequenz gestartet", "info");
          var StrEinschaltzeit = getState("javascript.4.Einschaltzeit").val;
          var timeHourOn = StrEinschaltzeit.substring(0, 2);
          var timeMinuteOn = StrEinschaltzeit.substring(3, 5);
          schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () 
          {
      	    setState('hm-rpc.0.XXXXXXXXXX.1.STATE', true);														
      	    setState('hm-rpc.0.YYYYYYYYYY.3.STATE', true);														
      	    setState('hm-rpc.0.ZZZZZZZZZZ.1.STATE', true);	            							        	
              DateObject = new Date();
              Hours = DateObject.getHours();
              Minutes = DateObject.getMinutes();
              sendTo("pushover.0", {message: 'Es ist ' + Hours + ':' + Minutes + ' Uhr, Aussenbeleuchtung Eingang eingeschaltet', title: 'Information - Zu Hause', priority: 0});
              log("ZEITSTEUERUNG AUSSENBEREICH: Es ist " + Hours + ":" + Minutes + " Uhr, Aussenbeleuchtung Eingang eingeschaltet", "info");
          });
      });
      
      

      Wenn ich nun aber javascript.4.Einschaltzeit und javascript.4.Ausschaltzeit auf jeweils eine Uhrzeit stelle, passiert leider nichts.

      In den Zuständen sind javascript.4.Einschaltzeit und javascript.4.Ausschaltzeit mit ihren korrekten Werten zu sehen.

      Habe ich hier einen Denkfehler???

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

        Da Du die komplette ID "javascript.4.Einschaltzeit" zum Triggern verwendest, solltest Du nicht RegExp verwenden. Scheduler sollten auch wieder gelöscht werden. Um von führender "0" unabhängig zu sein, macht sich eine Array-Operation besser.

        var ontime = null;
        on('javascript.4.Einschaltzeit', function(dp) {
            log("ZEITSTEUERUNG AUSSENBEREICH: Einschalt-Sequenz gestartet", "info");
            var Einschaltzeit = dp.state.val.split(':');  // Array: [h,m]
            var timeHourOn = Einschaltzeit[0];
            var timeMinuteOn = Einschaltzeit[1];
            if (ontime) clearSchedule(ontime);
            ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
               setState('hm-rpc.0.XXXXXXXXXX.1.STATE', true);                                          
               setState('hm-rpc.0.YYYYYYYYYY.3.STATE', true);                                          
               setState('hm-rpc.0.ZZZZZZZZZZ.1.STATE', true);                                               
                DateObject = new Date();
                Hours = DateObject.getHours();
                Minutes = DateObject.getMinutes();
                sendTo("pushover.0", {message: 'Es ist ' + Hours + ':' + Minutes + ' Uhr, Aussenbeleuchtung Eingang eingeschaltet', title: 'Information - Zu Hause', priority: 0});
                log("ZEITSTEUERUNG AUSSENBEREICH: Es ist " + Hours + ":" + Minutes + " Uhr, Aussenbeleuchtung Eingang eingeschaltet", "info");
            });
        });
        
        
        1 Reply Last reply Reply Quote 0
        • S
          SchuetzeSchulz last edited by

          Jawoll, funktioniert perfekt!

          Vielen Dank!

          1 Reply Last reply Reply Quote 0
          • K
            kirbsi last edited by

            Was mache ich falsch. Funktioniert irgendwie nicht. Was muss ich beim Anlegen der variablen beachten?

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

              Was hast du denn gemacht? Gibt es Fehlermeldungen? Dann kann man vllt besser helfen 🙂

              1 Reply Last reply Reply Quote 0
              • K
                kirbsi last edited by

                @paul53:

                Da Du die komplette ID "javascript.4.Einschaltzeit" zum Triggern verwendest, solltest Du nicht RegExp verwenden. Scheduler sollten auch wieder gelöscht werden. Um von führender "0" unabhängig zu sein, macht sich eine Array-Operation besser.

                var ontime = null;
                on('javascript.4.Einschaltzeit', function(dp) {
                    log("ZEITSTEUERUNG AUSSENBEREICH: Einschalt-Sequenz gestartet", "info");
                    var Einschaltzeit = dp.state.val.split(':');  // Array: [h,m]
                    var timeHourOn = Einschaltzeit[0];
                    var timeMinuteOn = Einschaltzeit[1];
                    if (ontime) clearSchedule(ontime);
                    ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
                       setState('hm-rpc.0.XXXXXXXXXX.1.STATE', true);                                          
                       setState('hm-rpc.0.YYYYYYYYYY.3.STATE', true);                                          
                       setState('hm-rpc.0.ZZZZZZZZZZ.1.STATE', true);                                               
                        DateObject = new Date();
                        Hours = DateObject.getHours();
                        Minutes = DateObject.getMinutes();
                        sendTo("pushover.0", {message: 'Es ist ' + Hours + ':' + Minutes + ' Uhr, Aussenbeleuchtung Eingang eingeschaltet', title: 'Information - Zu Hause', priority: 0});
                        log("ZEITSTEUERUNG AUSSENBEREICH: Es ist " + Hours + ":" + Minutes + " Uhr, Aussenbeleuchtung Eingang eingeschaltet", "info");
                    });
                });
                
                ```` `  
                

                Einschalten vom Licht funktioniert aber wie schaltet sich das Licht wieder aus?

                Wofür sind diese beiden Zeilen bzw Variablen?

                var timeHourOn = Einschaltzeit[0];

                var timeMinuteOn = Einschaltzeit[1];

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

                  Fürs Ausschalten brauchts ein gleichlautendes 2. Skript bzw. eine Erweiterung auf die Ausschaltzeit.

                  Dieser Teil des Scriptes regiert lediglich auf die Einschaltzeit.

                  Und ganau dafür sind auch die beiden Zeilen.

                  Die Einschaltzeit (z. B. 17:15) wird in "timeHourOn" (17) und "timeMinuteOn" (15) zerlegt.

                  Damit wird dann der schedule zusammengesetzt

                  1 Reply Last reply Reply Quote 0
                  • K
                    kirbsi last edited by

                    Oh vielen Dank für die rasche Antwort.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    784
                    Online

                    31.7k
                    Users

                    79.7k
                    Topics

                    1.3m
                    Posts

                    5
                    8
                    2137
                    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