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. Mehrfachstart vom Script verhindern.

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Mehrfachstart vom Script verhindern.

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 2 Kommentatoren 899 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.
  • H Offline
    H Offline
    Hohenbostler
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen.

    ich habe ein Script welches mein Badezimmerlicht per Xiaomi Tür sensor anschaltet und nach 20 min wieder automatisch aus schaltet.

    Jetzt ist es so wenn innerhalb dieser Zeit die Tür mehrmals geöffnet und geschlossen wird geht das licht natürlich mehr mals an und aus. Sprich für jedes mal tür öffnen wird das licht einmal an und aus geschaltert.

    WIe kann ich einen Mehrfachstart verhindern?

    Hier mal die log aus dem Debugmodus:

    ! ````
    08:20:47.288 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=true) - was not executed, while debug mode is active
    08:20:47.288 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.color_mode, state=false) - was not executed, while debug mode is active
    08:20:49.057 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=true) - was not executed, while debug mode is active
    08:20:49.058 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.color_mode, state=false) - was not executed, while debug mode is active
    08:20:51.161 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=true) - was not executed, while debug mode is active
    08:20:51.162 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.color_mode, state=false) - was not executed, while debug mode is active
    08:20:57.288 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=false) - was not executed, while debug mode is active
    08:20:58.554 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=false) - was not executed, while debug mode is active
    08:20:59.058 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=false) - was not executed, while debug mode is active
    08:21:00.468 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=false) - was not executed, while debug mode is active
    08:21:01.029 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=false) - was not executed, while debug mode is active
    08:21:03.309 [warn] javascript.0 script.js.common.Lichtschaltung_Bad_Yeelight: setForeignState(id=yeelight-2.0.color-0x0000000005e2899c.control.power, state=false) - was not executed, while debug mode is active

    
    Und hier mal das Script:
    
    >! ````
     <block xmlns="http://www.w3.org/1999/xhtml" type="on" id="O!Nt:TG-7m1]E}YOQ/q`" x="-462" y="-362"><field name="OID">mihome.0.devices.magnet_158d00024367fc.state</field>
      <field name="CONDITION">ne</field>
    
      <statement name="STATEMENT"><block type="controls_if" id="X?jm3]+06ScU#u;XqB=f"><value name="IF0"><block type="logic_compare" id="cJ:g@@(4?}9vc13o;,]x"><field name="OP">EQ</field>
              <value name="A"><block type="get_value" id="_|3^~3:HeKf[yg%d2L)~"><field name="ATTR">val</field>
                  <field name="OID">mihome.0.devices.magnet_158d00024367fc.state</field></block></value> 
              <value name="B"><block type="logic_boolean" id="FG8(-!*4im|d=a0U#W(F"><field name="BOOL">TRUE</field></block></value></block></value> 
          <statement name="DO0"><block type="control" id="o`B!sjT8bH9[gW9wr/zW"><mutation delay_input="false"></mutation>
              <field name="OID">yeelight-2.0.color-0x0000000005e2899c.control.power</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE"><block type="logic_boolean" id="RHDXRX8m:RFk2=1Dw*{d"><field name="BOOL">TRUE</field></block></value> 
              <next><block type="control" id="Oq*eMqqb.IMs9l(yQ6bD"><mutation delay_input="false"></mutation>
                  <field name="OID">yeelight-2.0.color-0x0000000005e2899c.control.color_mode</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE"><block type="logic_boolean" id="[@MzVtWsU5F-jMOro;qB"><field name="BOOL">FALSE</field></block></value></block></next></block></statement> 
          <next><block type="timeouts_settimeout" id="b%rkn[Ok9!69u{H=?[+x"><field name="NAME">timeout</field>
              <field name="DELAY">10</field>
              <field name="UNIT">sec</field>
              <statement name="STATEMENT"><block type="control" id="wOz_(1@CVE4Zzti4(Q!L"><mutation delay_input="false"></mutation>
                  <field name="OID">yeelight-2.0.color-0x0000000005e2899c.control.power</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE"><block type="logic_boolean" id="V%Tex^uhmH#!tDgchEEy"><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></statement></block> 
    

    Wie kann ich das verhindern? Wenn mögloch bitte einfach erklären bin ein absoluter anfänger ;) Danke

    1 Antwort Letzte Antwort
    0
    • J Offline
      J Offline
      J Riemann
      schrieb am zuletzt editiert von
      #2

      6696_blocklicht.jpeg

      ****Viele Grüße!

      Jörg****

      1 Antwort Letzte Antwort
      0
      • H Offline
        H Offline
        Hohenbostler
        schrieb am zuletzt editiert von
        #3

        @J Riemann:

        blocklicht.jpeg `

        Hi Danke. Kannst du das ganze auch etwas erklären. was du wieso machst?

        1 Antwort Letzte Antwort
        0
        • J Offline
          J Offline
          J Riemann
          schrieb am zuletzt editiert von
          #4

          Wenn die geöffnet Tür wird (Trigger-Block true) und in dem Moment das Licht aus ist (Falls Wert false..), dann schalte das Licht an (mache: Steuere Objekt true) und verzögert um 20 Minuten (Timeout) schalte das Licht aus (steuere innerhalb Timeout-Block).

          Den "stop" Timeout habe ich eingebaut damit nicht aus irgendwelchen Gründen mehrere Instanzen des Timeout parallel gestartet werden (z.B. wenn Du nach 5 Min das Licht händisch ausschaltest und dann die Tür wieder öffnest. Wäre das jetzt der Fall wird das Licht wieder eingeschaltet und die 20 Min Verzögerung zum ausschalten laufen neu).

          Alles befindet sich innerhalb des Triggerblocks weil eben dieser Ablauf nur abhängig vom Trigger ausgeführt werden soll.

          ****Viele Grüße!

          Jörg****

          1 Antwort Letzte Antwort
          0
          • H Offline
            H Offline
            Hohenbostler
            schrieb am zuletzt editiert von
            #5

            Ok Danke . So klappt es bei mir jetzt auch.

            Letzendlich ist nur das stop timeout relevant. Danke

            1 Antwort Letzte Antwort
            0
            • J Offline
              J Offline
              J Riemann
              schrieb am zuletzt editiert von
              #6

              Nein, nicht ganz, das "stop" wäre in diesem Fall nicht dringend erforderlich, ohne würde es auch laufen. Das "stop" deckt nur alle Eventualitäten ab.

              Dein Skript hat immer fürs einschalten gesorgt, meins schaltet nur ein wenn das Licht aus ist.

              Dein Timeout stand unter dem "Falls - mache" Block was dazu führt das bei jedem Skriptdurchlauf ein neuer Timeout gestartet wurde.

              Bei mir wird nur ein Timeout gestartet wenn das Licht aus war und eingeschaltet wurde weil der Timeout sich innerhalb des "Falls - mache" befindet.

              Dein Trigger lief auf "bei Änderung", darum wurde beim öffnen und auch beim schließen das Skript ausgeführt. Weil Timeout unten dran hing wurde Timeout bei jeden auslösen gestartet egal ob die Tür geöffnet oder geschlossen wurde. Bei mir läuft das Skript nur wenn die Tür geöffnet wurde.

              Unter "Mache" hast Du das Licht eingeschaltet und sofort wieder ausgeschaltet und dann per Timeout nochmals ausgeschaltet.

              Du siehst, optisch ganz wenige Änderungen mit großen Auswirkungen.

              ****Viele Grüße!

              Jörg****

              1 Antwort Letzte Antwort
              0
              • H Offline
                H Offline
                Hohenbostler
                schrieb am zuletzt editiert von
                #7

                Ok jetzt bin ich wieder raus.

                Aber naja es funktioniert erstmal so.. Der rest kommt hoffe ich step by step. Danke.

                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

                649

                Online

                32.4k

                Benutzer

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