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

                        1.1k
                        Online

                        31.7k
                        Users

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