Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Programmteil hinter Timeout wird nicht ausgeführt

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    277

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

[gelöst] Programmteil hinter Timeout wird nicht ausgeführt

[gelöst] Programmteil hinter Timeout wird nicht ausgeführt

Scheduled Pinned Locked Moved Skripten / Logik
15 Posts 4 Posters 942 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    ChristianF
    wrote on last edited by
    #4

    Klar, gern.

    @Buzzy: wenn ich den zweiten Block <u>unter</u> den ersten statt <u>in</u> den ersten baue, nimmt er die Verzögerung des 1. Blocks nicht mit, oder? Lösung wäre dann halt nur, dem Timer nicht 75 sondern 90 Minuten zu geben, richtig?

    Danke für Eure Hilfe!

    var timeout6, timeout4, timeout3, timeout7, timeout2, timeout5;
    
    schedule("15 6 * * *", function () {
      if (getState("feiertage.0.heute.boolean").val == true || getState("ical.1.events.Vacation").val == true) {
        // Feiertag oder Urlaub: erst um 9
        timeout6 = setTimeout(function () {
          setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-Ankl_1.LEVEL*/, 20, 1000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx4.1.LEVEL"/*RL-SZ-O_.LEVEL*/, 20, 2000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-SZ-S_1.LEVEL*/, 20, 3000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx5.1.LEVEL"/*RL-KI-S_.LEVEL*/, 20, 4000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx9.1.LEVEL"/*RL-Ki-O_1.LEVEL*/, 20, 5000, false);
          timeout7 = setTimeout(function () {
            setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-Ankl_1.LEVEL*/, 100, 1000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx4.1.LEVEL"/*RL-SZ-O_.LEVEL*/, 100, 2000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-SZ-S_1.LEVEL*/, 100, 3000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx5.1.LEVEL"/*RL-KI-S_.LEVEL*/, 100, 4000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx9.1.LEVEL"/*RL-Ki-O_1.LEVEL*/, 100, 5000, false);
          }, 300000);
        }, 9600000);
      } else if ((new Date().getDay() === 0 ? 7 : new Date().getDay()) == 0 || (new Date().getDay() === 0 ? 7 : new Date().getDay()) == 6) {
        // Wochenende? Auch erst um 9
        timeout4 = setTimeout(function () {
          setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-Ankl_1.LEVEL*/, 20, 1000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx4.1.LEVEL"/*RL-SZ-O_.LEVEL*/, 20, 2000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-SZ-S_1.LEVEL*/, 20, 3000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx5.1.LEVEL"/*RL-KI-S_.LEVEL*/, 20, 4000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx9.1.LEVEL"/*RL-Ki-O_1.LEVEL*/, 20, 5000, false);
          timeout2 = setTimeout(function () {
            setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-Ankl_1.LEVEL*/, 100, 1000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx4.1.LEVEL"/*RL-SZ-O_.LEVEL*/, 100, 2000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-SZ-S_1.LEVEL*/, 100, 3000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx5.1.LEVEL"/*RL-KI-S_.LEVEL*/, 100, 4000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx9.1.LEVEL"/*RL-Ki-O_1.LEVEL*/, 100, 5000, false);
          }, 300000);
        }, 9600000);
      } else {
        // Kein Sonderfall: 0615
        setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-Ankl_1.LEVEL*/, 20, 1000, false);
        setStateDelayed("hm-rpc.0.LEQ143xxx4.1.LEVEL"/*RL-SZ-O_.LEVEL*/, 20, 2000, false);
        setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-SZ-S_1.LEVEL*/, 20, 3000, false);
        setStateDelayed("hm-rpc.0.LEQ143xxx5.1.LEVEL"/*RL-KI-S_.LEVEL*/, 20, 4000, false);
        setStateDelayed("hm-rpc.0.LEQ143xxx9.1.LEVEL"/*RL-Ki-O_1.LEVEL*/, 20, 5000, false);
        timeout3 = setTimeout(function () {
          setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-Ankl_1.LEVEL*/, 40, 1000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx4.1.LEVEL"/*RL-SZ-O_.LEVEL*/, 40, 2000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-SZ-S_1.LEVEL*/, 40, 3000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx5.1.LEVEL"/*RL-KI-S_.LEVEL*/, 40, 4000, false);
          setStateDelayed("hm-rpc.0.LEQ143xxx9.1.LEVEL"/*RL-Ki-O_1.LEVEL*/, 40, 5000, false);
          timeout5 = setTimeout(function () {
            setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-Ankl_1.LEVEL*/, 100, 1000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx4.1.LEVEL"/*RL-SZ-O_.LEVEL*/, 100, 2000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-SZ-S_1.LEVEL*/, 100, 3000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx5.1.LEVEL"/*RL-KI-S_.LEVEL*/, 100, 4000, false);
            setStateDelayed("hm-rpc.0.LEQ143xxx9.1.LEVEL"/*RL-Ki-O_1.LEVEL*/, 100, 5000, false);
          }, 4500000);
        }, 900000);
      }
    });
    
    
    1 Reply Last reply
    0
    • AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      wrote on last edited by
      #5

      Das siehst du richtig, der Timeout müsste dann 90 Minuten sein.

      Bei Durchsicht des JS-Codes fällt mir nichts auf, außer, dass die Bedingung für den zweiten deiner 3 Blocks seltsam ist (ich verstehe sie nicht).

      Bist du sicher, dass dein 3. Block mit drei Schaltblöcken statt zwei tatsächlich ausgeführt wird? Oder wird womöglich einer der anderen ausgeführt und du denkst es ist der letzte?

      Packe doch mal in jeden deiner Fälle einen Debug-Output, damit du im Log nachvollziehen kannst, welcher Code-Pfad tatsächlich ausgeführt wird.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      1 Reply Last reply
      0
      • C Offline
        C Offline
        ChristianF
        wrote on last edited by
        #6

        Ich habe es jetzt testweise auf 90 Minuten umgestellt, bzw. auf 85 damit ich den Unterschied sehe 😉

        Zu den Bedingungen der Blöcke:

        • der erste checkt, ob heute ein Feiertag (Feiertagsadapter) oder ein Urlaubstag (iCal) ist

        • der zweite checkt, ob heute ein Samstag (Wochentag 6) oder Sonntag (Wochentag 0) ist

        • der dritte Block gilt, wenn keiner der anderen Sonderfälle greift (also ein normaler Wochentag ist).

        (ersten und zweiten Check hätte ich gern zusammengezogen und nur eine Unterscheidung "früh aufstehen ja/nein" gehabt, habe ich aber nicht hinbekommen)

        Zu den Schaltblöcken:

        • Der erste Block zieht die Rollis auf 20% hoch, das bedeutet dass die Schlitze sichtbar werden und unten ein kleiner Spalt offensteht

        • Der zweite Block zieht die Rollis bis 40% hoch, es wird also deutlich heller im Raum

        • Der dritte Block zieht die Rollis ganz hoch

        Warum das Ganze? Es handelt sich um ein "Wake up light": der Körper "gewöhnt" sich deutlich besser an den Gedanken, dass gleich Aufstehen angesagt ist, wenn es nicht mehr komplett dunkel ist. Wenn dann der Wecker klingelt, hat der Körper bereits eine halbe Stunde vorm Aufstehen "realisiert", dass es gleich los geht und ist nicht gleich am frühen Morgen gestresst. Und ich muss sagen: es funktioniert prima. Einfach mal "Wake up light" oder "Lichtwecker" googlen.

        Ich habe nun ein Debug-Output eingebaut, mal sehen was passiert.

        Danke!

        Viele Grüße

        Christian

        1 Reply Last reply
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          wrote on last edited by
          #7

          Der Sinn des ganzen ist mir schon klar.

          Was mich irritiert, ist die 2. Bedingung:

          (new Date().getDay() === 0 ? 7 : new Date().getDay()) == 0
          

          Die kann eigentlich nie zutreffen:

          Wenn heute Sonntag ist (getDay() === 0), wird 7 mit 0 verglichen (falsch).

          Wenn heute kein Sonntag ist (getDay() > 0), wird 1-6 mit 0 verglichen (falsch).

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Reply Last reply
          0
          • C Offline
            C Offline
            ChristianF
            wrote on last edited by
            #8

            Hmm, das ist wirklich merkwürdig. Hier das Blockly dazu:

            455_bedingung.jpg

            Hier nochmal der Code dazu (es sind jetzt die Debugs und Comments dazugekommen, sorry):

                    setStateDelayed("hm-rpc.0.LEQ143xxx9.1.LEVEL"/*RL-Ki-O_1.LEVEL*/, 100, 5000, false);
                  }, 300000);
                }, 9600000);
              } else if ((new Date().getDay() === 0 ? 7 : new Date().getDay()) == 0 || (new Date().getDay() === 0 ? 7 : new Date().getDay()) == 6) {
                // Wochenende? Auch erst um 9
                console.log('Wochenende-Block: nix zu tun um 0615');
                timeout4 = setTimeout(function () {
                  console.log('Wochenende-Block: 20 Prozent um 0900');
                  setStateDelayed("hm-rpc.0.LEQ143xxx0.1.LEVEL"/*RL-Ankl_1.LEVEL*/, 20, 1000, false);
            
            

            Übrigens ist der Übeltäter des Ausfalls des Scripts von Montag gefunden: der Javascript Adapter ist aufgrund eines Fehlers in einem anderen Script im 30min Takt abgestürzt. Hat nur vorher niemand gemerkt. Nur jetzt, wo ein längerer Timeout dazwischen lag, ist es aufgefallen.

            1 Reply Last reply
            0
            • rantanplanR Offline
              rantanplanR Offline
              rantanplan
              wrote on last edited by
              #9

              Hallo

              Wochentag = 0 gibt es nicht.

              Montag=1 …. Sonntag = 7

              Wochentag < 6 ist normaler Wochentag

              Wochentag > 5 ist Wochenende

              EDIT: vielleicht interessant für Dich viewtopic.php?f=21&t=12021

              Grüße

              Rantanplan

              CCU3 / MS Server 2019(VM) / Scripten mit Blockly

              1 Reply Last reply
              0
              • BuZZyB Offline
                BuZZyB Offline
                BuZZy
                wrote on last edited by
                #10

                Normalerweise ist 0 oder 7 beides möglich und entspricht dem Wochentag 'Sonntag'..

                Gruß

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  ChristianF
                  wrote on last edited by
                  #11

                  Hallo,

                  "beides geht" wäre ja merkwürdig. Wenn die Woche entweder mit 0 oder 1 anfängt, würde es ja komplett unterschiedliche Verhaltensweisen geben.

                  Ich habe mir schnell ein Demoscript gebaut und mir den heutigen Tag ausgeben lassen, und es wird für Freitag = 5 ausgegeben. Habe es nun auf 6 und 7 umgeschrieben und werde morgen spät abends mal schnell schauen, ob er für Sonntag nun eine 6 oder 7 auswirft.

                  Merkwürdig dass es so unterschiedliche Aussagen online gibt.

                  Danke für Eure Hilfe!

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    ChristianF
                    wrote on last edited by
                    #12

                    Moin,

                    inzwischen ist Sonntag, und siehe da…

                    javascript.0	2018-05-20 00:01:00.020	info	script.js.common.Homematic-Scripte.Skript2: So
                    javascript.0	2018-05-20 00:01:00.020	info	script.js.common.Homematic-Scripte.Skript2: Sonntag
                    javascript.0	2018-05-20 00:01:00.017	info	script.js.common.Homematic-Scripte.Skript2: 7
                    
                    

                    -> JavaScript und damit auch ioBroker rechnet Sonntag als Tag Nr. 7 . Komisch, wo im amerikanischen Denkkreis die Woche ja mit dem Sonntag anfängt (daher meine Verwirrung, zumal unter https://wiki.selfhtml.org/wiki/JavaScri … ate/getDay genau das Gegenteil (0-6) beschrieben wird).

                    Vielleicht hilft es ja jemandem.

                    Danke allen, die geholfen haben!

                    Viele Grüße

                    Christian

                    1 Reply Last reply
                    0
                    • BuZZyB Offline
                      BuZZyB Offline
                      BuZZy
                      wrote on last edited by
                      #13

                      Wie gesagt, normalerweise sind die entsprechenden Funktionen so programmiert dass sie 0 und 7 als Sonntag akzeptieren..

                      Bei mir sieht es heute zum Beispiel so im log aus..

                      ...js.Verschiedenes.RolloAutomatik: Tag: 0
                      

                      😉

                      Gruß

                      1 Reply Last reply
                      0
                      • rantanplanR Offline
                        rantanplanR Offline
                        rantanplan
                        wrote on last edited by
                        #14

                        Auf die Schnelle siehe hier: https://github.com/ioBroker/ioBroker.ja … e-schedule

                        Change Log der Umstellung in ioBroker finde ich gerade nicht.

                        In Blockly kann ich meine Beschreibung empfehlen.

                        Grüße

                        Rantanplan

                        CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                        1 Reply Last reply
                        0
                        • rantanplanR Offline
                          rantanplanR Offline
                          rantanplan
                          wrote on last edited by
                          #15

                          Hier die Definition in Blockly.

                          Auszug:
                          147_beispiel.png
                          Hier gibt es die komplette Beschreibung https://github.com/ioBroker/ioBroker.ja … blockly.md

                          Grüße

                          Rantanplan

                          CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          199

                          Online

                          32.4k

                          Users

                          81.3k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe