Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Erledigt] Anfängerhilfe: Zeitsteuerung aus CCU nachbauen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    369

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[Erledigt] Anfängerhilfe: Zeitsteuerung aus CCU nachbauen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 4 Kommentatoren 720 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Z Offline
    Z Offline
    Zippolighter
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • D Offline
      D Offline
      dwm
      schrieb am zuletzt editiert von
      #2

      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 Antwort Letzte Antwort
      0
      • Z Offline
        Z Offline
        Zippolighter
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

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

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • K Offline
            K Offline
            Karl_999
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              dwm
              schrieb am zuletzt editiert von
              #6

              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 Antwort Letzte Antwort
              0
              • Z Offline
                Z Offline
                Zippolighter
                schrieb am zuletzt editiert von
                #7

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

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                687

                Online

                32.7k

                Benutzer

                82.5k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe