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
    949

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

    Hallo

    kann mir einer sagen, warum das Script nicht läuft?

    var idTemp = "rflink.0.channels.Cresta_4.TEMP"/*Cresta_ 4 Temperature*/;
    var idAktor = "hue.0.Philips_hue.Sonoff2.on"/*Philips_hue.Sonoff2.on*/;
    
    var temp = getState(idTemp).val;
    var aktor = getState(idAktor).val;
    
    function Zeitschaltung() {
       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);
    
    

    Der Aktor geht nichts an. Nur aus, wenn ich manuell anschalte.

    Starte ich das Script in einem der Zeitfenster neu, geht der Aktor

    auch an. Lasse ich ihn laufen, dann funktioniert es nicht.

    Hier ein Fehler:

    hue.0	2017-08-03 06:56:00.259	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:55:00.226	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:54:00.256	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:53:00.239	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:52:00.235	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:51:00.244	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:50:50.609	error	Cannot get result for lightStatus1
    hue.0	2017-08-03 06:50:50.608	error	Error: timeout of 10000ms exceeded
    hue.0	2017-08-03 06:50:00.252	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:49:00.329	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:48:00.238	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:47:00.247	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:46:00.240	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:45:00.239	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:44:00.249	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:43:00.244	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:42:00.252	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:41:00.249	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:40:00.240	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:39:00.285	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:38:00.275	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:37:00.279	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:36:00.299	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:35:00.255	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:34:00.234	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:33:00.229	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:32:00.224	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:31:00.226	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:30:00.242	info	final lightState for Philips_hue.Sonoff2:{"bri":0,"on":false,"level":0}
    hue.0	2017-08-03 06:29:48.226	error	Cannot get result for lightStatus1
    hue.0	2017-08-03 06:29:48.225	error	Error: timeout of 10000ms exceeded
    
    

    Nach Script Neustart gehts aber trotzdem

    Ich habe das erste Zeitfenster nun zum Test auf 5:00 - 7:30 geändert, gespeichert und dann geht der Aktor auch sofort an (ist gerade 6:59)

    hue.0	2017-08-03 06:58:00.334	info	final lightState for Philips_hue.Sonoff2:{"bri":254,"on":true,"level":100}
    
    1 Antwort Letzte Antwort
    0
    • 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

                          652

                          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