Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Erledigt] Anfängerhilfe: Zeitsteuerung aus CCU nachbauen

    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

    [Erledigt] Anfängerhilfe: Zeitsteuerung aus CCU nachbauen

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

      Hallo,

      ich stelle gerade meine CCU Programme auf javascript Programme um.

      Habe jetzt mal wieder ein Problem und benötige mal wieder einen Schubs in die richtige Richtung damit ich weiterkomme

      Mein CCU Programm:

      Systemzustand Systemvariable Wach bei Schlafen auf Änderung auslösen

      Zeitsteuerung Täglich von 20:00 - 04:00 nur prüfen

      Mein Script

      // Beispiel Zeitsteuerung
      
      var SchlafenZeit;
      
      schedule("00 20 * * *", function () {
          SchlafenZeit = true;
          console.log(SchlafenZeit);
      });
      
      schedule("00 4 * * *", function () {
          SchlafenZeit = false;
          console.log(SchlafenZeit);
      });
      
      on({
          id: SchlafenZeit,
          change: 'any',
      }, function (obj) {
              if (obj.state.val === true){
                  log('Log true');
              }
              else if (obj.state.val === false){
                  log('Log false');
              }        
      });
      

      Ich habe bis jetzt immer Variablen fest im javascript Adapter angelegt, damit würde ich es wohl auch hinkriegen, da ich aber die Variable SchlafenZeit nur in diesem Programm brauche, dachte ich es geht auch so.

      Allerdings wird die Funktion nicht gestartet auch wenn sich die Variable ändert.

      Danke für Eure Hilfe

      Gruß Zippolighter

      1 Reply Last reply Reply Quote 0
      • D
        dwm last edited by

        Eine CCU "Systemvariable" entspricht einem Datenpunkt im IOBroker (in etwa :)).

        Mit "on" kannst Du nicht auf Änderungen in einer Javascript Variable auslösen, sondern auf nen Datenpunkt.

        Ausserdem machen das CCU-Script und das Javascript was unterschiedliches:

        Die CCU startet das Programm wenn sich "SchlafenZeit" ändert und überprüft dann, ob es zwischen 20:00 und 04:00 ist.

        Das Javascript setzt um 20:00 SchlafenZeit auf true und um 04:00 auf false.

        Was ist denn das Verhalten, das Du haben willst?

        CU

        Werner

        1 Reply Last reply Reply Quote 0
        • Z
          Zippolighter last edited by

          Hallo

          Mein Ziel ist es auf Änderung eines Datenpunktes zu reagieren, dabei aber zu überprüfen welcher Zeitrahmen ist 20:00 - 04:00 oder 04:00 - 20:00.

          Durch meine zwei schedule lege ich fest das entweder der erste Zeitrahmen oder der zweite Zeitrahmen aktiv ist. Dies kann ich dann überprüfen

          Wenn ich mit On nur einen Datenpunkt überprüfen kann, dann mache ich halt doch wieder eine Variable im javascript Adapter.

          Danke für Deine Antwort

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

            @Zippolighter:

            Mein Ziel ist es auf Änderung eines Datenpunktes zu reagieren, dabei aber zu überprüfen welcher Zeitrahmen ist 20:00 - 04:00 oder 04:00 - 20:00. `
            Dafür gibt es https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#comparetime.

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

              Das ist leider die etwas ungewöhnlich HM-Denke:

              Im normalen Programm gibt es ganz simple Abfragen und Verzweigen, die wesentlich klarer sind:

              Wenn Uhrzeit > 20 Uhr oder Uhrzeit < 4 Uhr
              	{ //Nachtprogramm }
              Sonst
              	{ //Tagprogramm }
              

              Das ganze Programm muss natürlich noch regelmäßig aufgerufen werden (z.B. einmal pro Minute schedule "1 * * * *")

              1 Reply Last reply Reply Quote 0
              • D
                dwm last edited by

                Hm, die zwei schedules brauchst dann eigentlich nicht …

                z.B. (ohne Garantie, ohne es probiert zu haben) ...

                var SchlafenZeitId = "javascript.0.Aktiv.Schlafenzeit"; // Datenpunkt
                
                var Zeit1 = "04:00";
                var Zeit2 = "20:00";
                
                on ({ id: SchlafenZeitId, change: "ne"} function (obj) {
                    var now_ = formatDate (obj.state.ts,"hh:mm");
                    if ((now_ >= Zeit1 && now < Zeit2)) {
                        log('Zwischen 4 Uhr morgens und 8 Uhr abends");
                     } else {
                        log('Zwischen 8 abends und 4 morgens);
                     }
                });
                

                … Du möchtest ja die Zeiten "nur prüfen" 🙂

                Weitere Ausbaustufe:

                Die Zeiten nicht fest definieren, sondern in der Callback-Funktion aus Datenpunkten lesen 🙂

                CU

                Werner

                1 Reply Last reply Reply Quote 0
                • Z
                  Zippolighter last edited by

                  Super, danke für Eure Hilfe. Wieder etliches dazu gelernt

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  521
                  Online

                  31.9k
                  Users

                  80.2k
                  Topics

                  1.3m
                  Posts

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