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. Zeitsteuerung geht nicht

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Zeitsteuerung geht nicht

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
12 Beiträge 3 Kommentatoren 1.6k 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.
  • blauholstenB Offline
    blauholstenB Offline
    blauholsten
    Developer
    schrieb am zuletzt editiert von
    #2

    Hallo,

    Du musst in deiner Zeitfunktion wo die if abfragen stafinden immer mit````
    getState(aktor).val

    Entwickler vom: - Viessman Adapter
    - Alarm Adapter

    1 Antwort Letzte Antwort
    0
    • N Offline
      N Offline
      noxx
      schrieb am zuletzt editiert von
      #3

      Wird doch

      var aktor = getState(idAktor).val;
      

      Und in der if

      if(!aktor) setState(idAktor, true);
      

      Die Zeitfenster sind ja zb wir folgt definiert:

       var morgen = compareTime('05:00', '07:30', 'between');
      

      um 5:00 springt der Aktor aber nicht an. Mache ich einen Script Neustart um 5:01,

      geht der Aktor an.

      Als würde das Script gehen, aber der Cron nicht

      schedule('* * * * *', Zeitschaltung);
      
      1 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        noxx
        schrieb am zuletzt editiert von
        #4

        Hier mal eingebautem Log.

        Sollte nicht das LOG 3 angezeigt werden, wenn man ausserhalb des

        Zeitfensters ist?

        ! ````
        var idAktor = "hue.0.Philips_hue.Sonoff2.on"/Philips_hue.Sonoff2.on/;
        ! //var minOn = false;
        var temp = getState(idTemp).val;
        var aktor = getState(idAktor).val;
        ! function Zeitschaltung() {
        log("LOG 1: " + idAktor + ": " + aktor);
        var morgen = compareTime('05:00', '06:30', 'between');
        var mittag = compareTime('10:00', '11:30', 'between');
        var nachmittag = compareTime('14:00', '16:30', 'between');
        var abend = compareTime('20:00', '22:00', 'between');
        if(morgen || mittag || nachmittag || abend)
        {
        log("LOG 2: " + idAktor + ": " + aktor);
        if(!aktor) setState(idAktor, true);
        }
        else if(aktor)
        {
        setState(idAktor, false);
        log("LOG 3: " + idAktor + ": " + aktor);
        }
        }
        ! schedule('* * * * *', Zeitschaltung);

        
        

        09:19:26.046 [info] javascript.0 Stop script script.js.common.PoolPumpe
        09:19:26.405 [info] javascript.0 Start javascript script.js.common.PoolPumpe
        09:19:26.406 [info] javascript.0 script.js.common.PoolPumpe: registered 0 subscriptions and 1 schedule
        09:20:00.406 [info] javascript.0 script.js.common.PoolPumpe: LOG 1: hue.0.Philips_hue.Sonoff2.on: false
        09:21:00.398 [info] javascript.0 script.js.common.PoolPumpe: LOG 1: hue.0.Philips_hue.Sonoff2.on: false

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #5

          @noxx:

          kann mir einer sagen, warum das Script nicht läuft? `
          Die Variablen temp und aktor werden nur beim Start des Skriptes gesetzt und dann nicht mehr aktualisiert. Es fehlt

          on({id: idAktor, ack: true}, function(dp) {
              aktor = dp.state.val;
          });
          
          on(idTemp, function(dp) {
              temp = dp.state.val;
          });
          

          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
          • N Offline
            N Offline
            noxx
            schrieb am zuletzt editiert von
            #6

            Danke, wo muss das hin, an den Anfang?

            Gesendet von meinem GT-I9195 mit Tapatalk

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #7

              @noxx:

              wo muss das hin, an den Anfang? `
              Das ist völlig egal. Ich bevorzuge es am Ende.

              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
              • blauholstenB Offline
                blauholstenB Offline
                blauholsten
                Developer
                schrieb am zuletzt editiert von
                #8

                @paul53:

                @noxx:

                kann mir einer sagen, warum das Script nicht läuft? `
                Die Variablen temp und aktor werden nur beim Start des Skriptes gesetzt und dann nicht mehr aktualisiert. Es fehlt

                on({id: idAktor, ack: true}, function(dp) {
                    aktor = dp.state.val;
                });
                
                on(idTemp, function(dp) {
                    temp = dp.state.val;
                });
                ```` `  
                

                Ich schätze deine Skriptkünste sehr, aber ich glaube hier hast du dich vermacht, oder?

                Er lässt ja per schedule triggern.

                Ich hatte ja heute morgen schon geschrieben, das getState der variablen in der Zeitschaltung() nochmal per getState().val abgefragt werden müssen. (Leider nur Handy zur hand gehabt)

                Aus meiner Sicht müsste folgender Code gehen:

                var idTemp = "rflink.0.channels.Cresta_4.TEMP"/*Cresta_ 4 Temperature*/;
                var idAktor = "hue.0.Philips_hue.Sonoff2.on"/*Philips_hue.Sonoff2.on*/;
                
                function Zeitschaltung() {
                
                   var temp = getState(idTemp).val;
                   var aktor = getState(idAktor).val;
                
                   var morgen = compareTime('05:00', '06:30', 'between');
                   var mittag = compareTime('10:00', '11:30', 'between');
                   var nachmittag = compareTime('14:00', '16:30', 'between');
                   var abend = compareTime('20:00', '22:00', 'between');
                   if(morgen || mittag || nachmittag || abend) {
                      if(!aktor) setState(idAktor, true);
                   } else if(aktor) setState(idAktor, false);
                }
                
                schedule('* * * * *', Zeitschaltung);
                

                Entwickler vom: - Viessman Adapter
                - Alarm Adapter

                1 Antwort Letzte Antwort
                0
                • blauholstenB Offline
                  blauholstenB Offline
                  blauholsten
                  Developer
                  schrieb am zuletzt editiert von
                  #9

                  doppelt

                  Entwickler vom: - Viessman Adapter
                  - Alarm Adapter

                  1 Antwort Letzte Antwort
                  0
                  • N Offline
                    N Offline
                    noxx
                    schrieb am zuletzt editiert von
                    #10

                    seit mir beide was vorraus, ihr versteht was der andere meint :)

                    bisher scheint das von paul53 zu gehen, teste aber nun auch deins.

                    danke

                    gruß

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #11

                      @blauholsten:

                      aber ich glaube hier hast du dich vermacht, oder? `
                      Das glaube ich nicht.
                      @blauholsten:

                      Ich hatte ja heute morgen schon geschrieben, das getState der variablen in der Zeitschaltung() nochmal per getState().val abgefragt werden müssen. `
                      Das müssen sie nicht, wenn die globalen Skriptvariablen (aktor, temp) bei jeder Wertänderung des zugehörigen Datenpunktes aktualisiert werden.

                      Deine Version funktioniert ebenfalls, belastet aber die CPU stärker, da jede Minute 2 getState(id)-Operationen ausgeführt werden.

                      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
                      • blauholstenB Offline
                        blauholstenB Offline
                        blauholsten
                        Developer
                        schrieb am zuletzt editiert von
                        #12

                        @paul53:

                        @blauholsten:

                        aber ich glaube hier hast du dich vermacht, oder? `
                        Das glaube ich nicht.
                        @blauholsten:

                        Ich hatte ja heute morgen schon geschrieben, das getState der variablen in der Zeitschaltung() nochmal per getState().val abgefragt werden müssen. `
                        Das müssen sie nicht, wenn die globalen Skriptvariablen (aktor, temp) bei jeder Wertänderung des zugehörigen Datenpunktes aktualisiert werden.

                        Deine Version funktioniert ebenfalls, belastet aber die CPU stärker, da jede Minute 2 getState(id)-Operationen ausgeführt werden. `

                        Als ich den Rechner aus gemacht habe, ist mir deine Logik auch klar geworden….. :shock:

                        Entwickler vom: - Viessman Adapter
                        - Alarm Adapter

                        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

                        412

                        Online

                        32.6k

                        Benutzer

                        82.2k

                        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