Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Zeitsteuerung will nicht

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

      Hallo Zusammen,

      ich versuche mir eine Zeitsteuerung via VIS zu bauen, bei welcher ich zwei separate an- und Abschaltzeiten definieren kann.

      Zusätzlich soll es einen Schalter aktiv geben.

      Wenn ich nur die Zeiten übergebe passt das, jedoch funktioniert der Schalter aktiv nicht.

      1461_vis.jpg

      Skript:

      var ontime = null;
      var offtime1 = null;
      
      on("javascript.0.FunkStart1_1", function(dp) {
          var Einschaltzeit = dp.state.val.split(':');  // Array: [h,m]
          var timeHourOn = Einschaltzeit[0];
          var timeMinuteOn = Einschaltzeit[1];
          log(timeHourOn, "info");
          log(timeMinuteOn, "info");
          if (ontime) clearSchedule(ontime);
      
          ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
                 if ("javascript.0.FunkAktiv1"/*FunkAktiv1*/ === true) {
                  sendTo("telegram.0", "send", {
                  text: 'Test Zeitsteuerung1 AN',
                  user: 'Andreas'
                  });
                  console.info("telegram['Andreas']: " + 'Zeit 1 an');
                 }
          });
      
      });
      
      on("javascript.0.FunkStop1_1"/*FunkStop1_1*/, function(dp) {
          var Einschaltzeit = dp.state.val.split(':');  // Array: [h,m]
          var timeHourOn = Einschaltzeit[0];
          var timeMinuteOn = Einschaltzeit[1];
          log(timeHourOn, "info");
          log(timeMinuteOn, "info");
          if (offtime1) clearSchedule(offtime1);
          offtime1 = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
              if ("javascript.0.FunkAktiv1"/*FunkAktiv1*/ === true) {
                  sendTo("telegram.0", "send", {
                  text: 'Test Zeitsteuerung1 AUS',
                  user: 'Andreas'
                  });
                  console.info("telegram['Andreas']: " + 'Zeit 1 aus');
              }
        });
      });
      
      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        @takero78:

        Hallo Zusammen,

        ! ich versuche mir eine Zeitsteuerung via VIS zu bauen, bei welcher ich zwei separate an- und Abschaltzeiten definieren kann.
        ! Zusätzlich soll es einen Schalter aktiv geben.
        ! Wenn ich nur die Zeiten übergebe passt das, jedoch funktioniert der Schalter aktiv nicht.
        ! vis.JPG
        ! Skript:
        ! ````
        var ontime = null;
        var offtime1 = null;
        ! on("javascript.0.FunkStart1_1", function(dp) {
        var Einschaltzeit = dp.state.val.split(':'); // Array: [h,m]
        var timeHourOn = Einschaltzeit[0];
        var timeMinuteOn = Einschaltzeit[1];
        log(timeHourOn, "info");
        log(timeMinuteOn, "info");
        if (ontime) clearSchedule(ontime);

        ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
               if ("javascript.0.FunkAktiv1"/*FunkAktiv1*/ === true) {
                sendTo("telegram.0", "send", {
                text: 'Test Zeitsteuerung1 AN',
                user: 'Andreas'
                });
                console.info("telegram['Andreas']: " + 'Zeit 1 an');
               }
        });
        

        });

        ! on("javascript.0.FunkStop1_1"/FunkStop1_1/, function(dp) {
        var Einschaltzeit = dp.state.val.split(':'); // Array: [h,m]
        var timeHourOn = Einschaltzeit[0];
        var timeMinuteOn = Einschaltzeit[1];
        log(timeHourOn, "info");
        log(timeMinuteOn, "info");
        if (offtime1) clearSchedule(offtime1);
        offtime1 = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
        if ("javascript.0.FunkAktiv1"/FunkAktiv1/ === true) {
        sendTo("telegram.0", "send", {
        text: 'Test Zeitsteuerung1 AUS',
        user: 'Andreas'
        });
        console.info("telegram['Andreas']: " + 'Zeit 1 aus');
        }
        });
        });
        ```` `

        komt irgendwas im log wen du den haken setzt ?

        Ist die variable auch wirklich ein boolean (true/false) oder wert 0/1 ?

        Die abfrage "if ("javascript.0.FunkAktiv1"/FunkAktiv1/ === true) {" sieht schon richtig aus, wen der datenpunkt stimmt 🙂

        1 Reply Last reply Reply Quote 0
        • T
          takero78 last edited by

          Ja es ist bool. Es steht auch unter Objekten mit true. Im Log kommt rein garnichts.

          Wenn ich die if Zeile raus nehme funktioniert es auch.

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

            @Dutchman:

            Die abfrage "if ("javascript.0.FunkAktiv1"/FunkAktiv1/ === true) {" sieht schon richtig aus, wen der datenpunkt stimmt `
            Nein, sieht sie nicht. Richtig:

            if (getState("javascript.0.FunkAktiv1"/*FunkAktiv1*/).val === true) {
            
            1 Reply Last reply Reply Quote 0
            • Dutchman
              Dutchman Developer Most Active Administrators last edited by

              Oeps Paul hat recht, ohne .val kommt ja kein Wert zum vergleichen ich krische jetzt mal wieder ins Loch….

              Sent from my iPhone using Tapatalk

              1 Reply Last reply Reply Quote 0
              • T
                takero78 last edited by

                Verdammt, stimmt… Das getstate fehlt auch... Ich werde glaube ich nie ein Fan von Java..

                Danke

                1 Reply Last reply Reply Quote 0
                • S
                  simpixo last edited by

                  @takero78:

                  Hallo Zusammen,

                  ich versuche mir eine Zeitsteuerung via VIS zu bauen, bei welcher ich zwei separate an- und Abschaltzeiten definieren kann.

                  Zusätzlich soll es einen Schalter aktiv geben.

                  Wenn ich nur die Zeiten übergebe passt das, jedoch funktioniert der Schalter aktiv nicht.

                  vis.JPG `

                  Hallo takero78

                  Könntest du auch das Widget veröffentlichen? Sieht toll aus….

                  Schon mal ein Danke dafür

                  Gruß

                  Adrian

                  1 Reply Last reply Reply Quote 0
                  • T
                    takero78 last edited by

                    Hallo Adrian,

                    das ist kein einzelnes Widget. Das ist quasi aus einzelnen Elementen zusammengestellt.

                    Viele Grüße

                    1 Reply Last reply Reply Quote 0
                    • T
                      takero78 last edited by

                      Hallo,

                      ich nutze da im ersten Post verwendete Script. Dies funktioniert auch Tadellos, nur habe ich das Problem das bei einem Systemneustart die Zeiten nicht automatisch neu gesetzt werden.

                      Was auch relativ logisch ist, da das Script ja nur auf Änderungen an den Zeiten reagieren soll.

                      Gibt es einen einfachen schnellen Weg dieses Problem zu umgehen?

                      Ich hatte überlegt einfach ein getState und ein setState bei Scripstart zu setzten, aber ist das sauber?

                      Jemand eine bessere Idee?

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

                        @takero78:

                        Ich hatte überlegt einfach ein getState und ein setState bei Scripstart zu setzten, aber ist das sauber?

                        Jemand eine bessere Idee? `
                        Das mit dem setState ist nicht so gut. Vorschlag:

                        var ontime = null;
                        var offtime1 = null;
                        var Einschaltzeit = getState("javascript.0.FunkStart1_1").val.split(':');
                        var Ausschaltzeit = getState("javascript.0.FunkStop1_1").val.split(':');
                        
                        function setOn() {
                            var timeHourOn = Einschaltzeit[0];
                            var timeMinuteOn = Einschaltzeit[1];
                            log(timeHourOn, "info");
                            log(timeMinuteOn, "info");
                            if (ontime) clearSchedule(ontime);
                        
                            ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
                                if (getState("javascript.0.FunkAktiv1").val === true) {
                                    sendTo("telegram.0", "send", {
                                    text: 'Test Zeitsteuerung1 AN',
                                    user: 'Andreas'
                                    });
                                    console.info("telegram['Andreas']: " + 'Zeit 1 an');
                                }
                            });
                        }
                        
                        function setOff() {
                            var timeHourOn = Ausschaltzeit[0];
                            var timeMinuteOn = Ausschaltzeit[1];
                            log(timeHourOn, "info");
                            log(timeMinuteOn, "info");
                            if (offtime1) clearSchedule(offtime1);
                            offtime1 = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
                                if (getState("javascript.0.FunkAktiv1").val === true) {
                                    sendTo("telegram.0", "send", {
                                    text: 'Test Zeitsteuerung1 AUS',
                                    user: 'Andreas'
                                    });
                                    console.info("telegram['Andreas']: " + 'Zeit 1 aus');
                                }
                            });
                        }
                        
                        setOn();  // Script start
                        setOff();  // Script start
                        
                        on("javascript.0.FunkStart1_1", function(dp) {
                            Einschaltzeit = dp.state.val.split(':');  // Array: [h,m]
                            setOn();
                        });
                        
                        on("javascript.0.FunkStop1_1"/*FunkStop1_1*/, function(dp) {
                            Ausschaltzeit = dp.state.val.split(':');  // Array: [h,m
                            setOff();
                        });
                        
                        1 Reply Last reply Reply Quote 0
                        • T
                          takero78 last edited by

                          Danke, das sieht gut aus 🙂

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          728
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          2063
                          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