Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Blockly
  5. Skript wird 2x ausgelöst

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    368

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    324

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    945

Skript wird 2x ausgelöst

Geplant Angeheftet Gesperrt Verschoben Blockly
21 Beiträge 5 Kommentatoren 576 Aufrufe 5 Beobachtet
  • Ä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.
  • S Offline
    S Offline
    sZno
    schrieb am zuletzt editiert von sZno
    #1

    Guten Abend zusammen.
    Ich hab eine Frage bei der ich einfach nicht weiter komme.
    Es geht um eine Nachtlichtsteuerung mit Bewegungsmelder. Hängt alles an einem CC2531 zigbee-Stick.

    Generell tut es was es soll. Aber es kommt vor, dass er das Licht nicht abschaltet.

    Bei der Fehlersuche bissel mit dem Debug gespielt. Wie zu sehen ist, wird das Licht 2x innerhalb ein paar ms angeschaltet.
    Die erste Bedinung ist erforderlich, damit er nochmal rein springt, wenn man sich bewegt und das Licht noch an ist. Dann steigt der Lux-wert über 6 und er macht den "stop timeout" nicht mehr.

    Ich hab schon Verriegelung, Timer, Schleifen mit counter ohne Timout etc. versucht. Hat leider alles nichts gebracht. Bin zwar fit in programmieren, aber nicht mit Java / Blockly. Habe ich einen generellen Denkfehler? Es gibt ja zig Beispiele für Bewegungsmelder in Blockly und komme mir gerade etwas dumm vor -.-

    Log.JPG Skript.JPG

    AsgothianA K 2 Antworten Letzte Antwort
    0
    • S sZno

      Guten Abend zusammen.
      Ich hab eine Frage bei der ich einfach nicht weiter komme.
      Es geht um eine Nachtlichtsteuerung mit Bewegungsmelder. Hängt alles an einem CC2531 zigbee-Stick.

      Generell tut es was es soll. Aber es kommt vor, dass er das Licht nicht abschaltet.

      Bei der Fehlersuche bissel mit dem Debug gespielt. Wie zu sehen ist, wird das Licht 2x innerhalb ein paar ms angeschaltet.
      Die erste Bedinung ist erforderlich, damit er nochmal rein springt, wenn man sich bewegt und das Licht noch an ist. Dann steigt der Lux-wert über 6 und er macht den "stop timeout" nicht mehr.

      Ich hab schon Verriegelung, Timer, Schleifen mit counter ohne Timout etc. versucht. Hat leider alles nichts gebracht. Bin zwar fit in programmieren, aber nicht mit Java / Blockly. Habe ich einen generellen Denkfehler? Es gibt ja zig Beispiele für Bewegungsmelder in Blockly und komme mir gerade etwas dumm vor -.-

      Log.JPG Skript.JPG

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      @szno sagte in Skript wird 2x ausgelöst:

      Guten Abend zusammen.
      Ich hab eine Frage bei der ich einfach nicht weiter komme.
      Es geht um eine Nachtlichtsteuerung mit Bewegungsmelder. Hängt alles an einem CC2531 zigbee-Stick.
      Generell tut es was es soll. Aber es kommt vor, dass er das Licht nicht abschaltet.
      Bei der Fehlersuche bissel mit dem Debug gespielt. Wie zu sehen ist, wird das Licht 2x innerhalb ein paar ms angeschaltet.
      Die erste Bedinung ist erforderlich, damit er nochmal rein springt, wenn man sich bewegt und das Licht noch an ist. Dann steigt der Lux-wert über 6 und er macht den "stop timeout" nicht mehr.
      Ich hab schon Verriegelung, Timer, Schleifen mit counter ohne Timout etc. versucht. Hat leider alles nichts gebracht. Bin zwar fit in programmieren, aber nicht mit Java / Blockly. Habe ich einen generellen Denkfehler? Es gibt ja zig Beispiele für Bewegungsmelder in Blockly und komme mir gerade etwas dumm vor -.-

      Du hast mehrere Fehler drin:

      • der stop timeout muss immer gemacht werden, auch wenn du das Abschalten nur verzögern willst. Ansonsten hast du den abschalt-timeout mehrfach aktiv.
      • du fragst im Skript nie ab ob occupancy “true” ist. Damit triggern auch Aktualisierungen mit falsch das skript - sofern es diese gibt.

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      S 1 Antwort Letzte Antwort
      0
      • AsgothianA Asgothian

        @szno sagte in Skript wird 2x ausgelöst:

        Guten Abend zusammen.
        Ich hab eine Frage bei der ich einfach nicht weiter komme.
        Es geht um eine Nachtlichtsteuerung mit Bewegungsmelder. Hängt alles an einem CC2531 zigbee-Stick.
        Generell tut es was es soll. Aber es kommt vor, dass er das Licht nicht abschaltet.
        Bei der Fehlersuche bissel mit dem Debug gespielt. Wie zu sehen ist, wird das Licht 2x innerhalb ein paar ms angeschaltet.
        Die erste Bedinung ist erforderlich, damit er nochmal rein springt, wenn man sich bewegt und das Licht noch an ist. Dann steigt der Lux-wert über 6 und er macht den "stop timeout" nicht mehr.
        Ich hab schon Verriegelung, Timer, Schleifen mit counter ohne Timout etc. versucht. Hat leider alles nichts gebracht. Bin zwar fit in programmieren, aber nicht mit Java / Blockly. Habe ich einen generellen Denkfehler? Es gibt ja zig Beispiele für Bewegungsmelder in Blockly und komme mir gerade etwas dumm vor -.-

        Du hast mehrere Fehler drin:

        • der stop timeout muss immer gemacht werden, auch wenn du das Abschalten nur verzögern willst. Ansonsten hast du den abschalt-timeout mehrfach aktiv.
        • du fragst im Skript nie ab ob occupancy “true” ist. Damit triggern auch Aktualisierungen mit falsch das skript - sofern es diese gibt.

        A.

        S Offline
        S Offline
        sZno
        schrieb am zuletzt editiert von sZno
        #3

        @asgothian Zu 1:
        Was genau meinst du damit? Der stop timeout wird doch immer gemacht? Angenommen das licht ist an und er triggert wieder. Dann ist SwitchState "true"(Bedinung erfüllt) und er macht den stop timeout?

        Zu 2:
        Das Problem ist der Sensor. Ist ein Aquara Motion Sensor. Offizell kann der nur alle 60 Sekunden eine Bewegung erkennen. Mit dem Hack (Pin auf Platine Brücken), kann er zwar alle 5 Sekunden eine Bewegung erkennen (Wert ist "true" wird aber aktualisiert), aber der Wert fällt weiterhin erst nach 60 Sekunden wieder auf false. Wenn ich also auf "wurde geändert" prüfe, geht zwar das einschalten, aber dann erst wieder nach 60 Sekunden -.-

        Ich versteh noch nicht ganz wie der timeout arbeitet. Ich bekomm regelmäßig 2x an oder 2x aus... Und bisher ist mir keine Vernünftige Lösung eingefallen, wie er sauber ohne spacken schaltet.

        hydrotecH HomoranH 2 Antworten Letzte Antwort
        0
        • S sZno

          Guten Abend zusammen.
          Ich hab eine Frage bei der ich einfach nicht weiter komme.
          Es geht um eine Nachtlichtsteuerung mit Bewegungsmelder. Hängt alles an einem CC2531 zigbee-Stick.

          Generell tut es was es soll. Aber es kommt vor, dass er das Licht nicht abschaltet.

          Bei der Fehlersuche bissel mit dem Debug gespielt. Wie zu sehen ist, wird das Licht 2x innerhalb ein paar ms angeschaltet.
          Die erste Bedinung ist erforderlich, damit er nochmal rein springt, wenn man sich bewegt und das Licht noch an ist. Dann steigt der Lux-wert über 6 und er macht den "stop timeout" nicht mehr.

          Ich hab schon Verriegelung, Timer, Schleifen mit counter ohne Timout etc. versucht. Hat leider alles nichts gebracht. Bin zwar fit in programmieren, aber nicht mit Java / Blockly. Habe ich einen generellen Denkfehler? Es gibt ja zig Beispiele für Bewegungsmelder in Blockly und komme mir gerade etwas dumm vor -.-

          Log.JPG Skript.JPG

          K Offline
          K Offline
          Kusi
          schrieb am zuletzt editiert von
          #4

          @szno Ich habe den Luxwert nicht berücksichtigt.
          Mit folgendem Blockly schaltet das Licht ein, sobald der Bewegungsmelder "true" wird.
          Wird der Bewegungsmelder "false", dann schaltet das Licht zeitverzögert aus.
          Wird der Bewegungsmelder mehrmals hintereinander "true", dann schaltet das Licht nur einmal ein.

          e750e0ae-3021-412d-86c0-c776787f28ea-image.png

          <xml xmlns="https://developers.google.com/blockly/xml">
            <variables>
              <variable id="fxI4cH@Sk)OoxC8tM8{R">Licht eingeschaltet</variable>
              <variable type="timeout" id="Licht ausschalten">Licht ausschalten</variable>
            </variables>
            <block type="variables_set" id="1[[fyddq#1COOI[[yU5M" x="88" y="163">
              <field name="VAR" id="fxI4cH@Sk)OoxC8tM8{R">Licht eingeschaltet</field>
              <value name="VALUE">
                <block type="logic_boolean" id="--T4cnv/,g$l2kDX(6A(">
                  <field name="BOOL">FALSE</field>
                </block>
              </value>
              <next>
                <block type="on_ext" id="wuf@6s1@y#GZZ=SS9LEn">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                  <field name="CONDITION">any</field>
                  <field name="ACK_CONDITION"></field>
                  <value name="OID0">
                    <shadow type="field_oid" id="chNUI4GdCM_wPN5Jks0k">
                      <field name="oid">0_userdata.0.example_state</field>
                    </shadow>
                  </value>
                  <statement name="STATEMENT">
                    <block type="controls_if" id="-q@-XW##NmC1iY#I7TNR">
                      <mutation elseif="2"></mutation>
                      <value name="IF0">
                        <block type="logic_operation" id="`1`6ug{OlL?#VEd3z1^m" inline="false">
                          <field name="OP">AND</field>
                          <value name="A">
                            <block type="logic_compare" id="(2tD5~#Z}P;Tg!7DRi4O">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="on_source" id="JDRAkf!D_uhw0=^/{^9I">
                                  <field name="ATTR">state.val</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="logic_boolean" id="+F2%S78OXUfo|u(XmF`V">
                                  <field name="BOOL">TRUE</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_compare" id="z=cTr07eQ2bPM:@ytjO.">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="variables_get" id="Mg]KyDNYv`*k0~d;]^fi">
                                  <field name="VAR" id="fxI4cH@Sk)OoxC8tM8{R">Licht eingeschaltet</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="logic_boolean" id="?TIv_#jj0`b#E:,1:(%v">
                                  <field name="BOOL">FALSE</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="timeouts_cleartimeout" id="Fy.tu9ll}aX6:r/9(Mcn">
                          <field name="NAME">Licht ausschalten</field>
                          <next>
                            <block type="variables_set" id="1lhZS+o%{o#qvsd1~6C;">
                              <field name="VAR" id="fxI4cH@Sk)OoxC8tM8{R">Licht eingeschaltet</field>
                              <value name="VALUE">
                                <block type="logic_boolean" id="5CDrp_v~@?O:GJm|s53:">
                                  <field name="BOOL">TRUE</field>
                                </block>
                              </value>
                              <next>
                                <block type="comment" id="n_.Bq%[~4f`g#7mFUA(K">
                                  <field name="COMMENT">Licht einschalten</field>
                                  <next>
                                    <block type="control" id="JjZg`b:r[gsf,bLm7BC5">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                      <field name="OID">Object ID</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="a,G?.3}|IemJkT}3O(D5">
                                          <field name="BOOL">TRUE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="debug" id="5wxVI.[,mz~CWqWG:#(y">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                            <shadow type="text" id="vRD(kc/9ahHVPHgZZ1Be">
                                              <field name="TEXT">Licht einschalten</field>
                                            </shadow>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </statement>
                      <value name="IF1">
                        <block type="logic_compare" id="_Gl^y@HgZZk:Js*~~iC1">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="on_source" id="H8Vl/-?2P=N-n!p%0dt{">
                              <field name="ATTR">state.val</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_boolean" id="opG,n(x4fB#C(a)YPhJF">
                              <field name="BOOL">TRUE</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <statement name="DO1">
                        <block type="timeouts_cleartimeout" id="u{t(.cGAD5d4}{d3zlPF">
                          <field name="NAME">Licht ausschalten</field>
                        </block>
                      </statement>
                      <value name="IF2">
                        <block type="logic_compare" id="/0:,lOo%vW,fPb8L)qfU">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="on_source" id="a|sd`|E6rV-K/2=[O$}`">
                              <field name="ATTR">state.val</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_boolean" id="P0uGF/`C#/P=QHJhW^c=">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <statement name="DO2">
                        <block type="timeouts_settimeout" id="x$MHG@d`|I93zbA910-M">
                          <field name="NAME">Licht ausschalten</field>
                          <field name="DELAY">15</field>
                          <field name="UNIT">sec</field>
                          <statement name="STATEMENT">
                            <block type="variables_set" id="g;B3vEZ{lx9ylX*IM}1(">
                              <field name="VAR" id="fxI4cH@Sk)OoxC8tM8{R">Licht eingeschaltet</field>
                              <value name="VALUE">
                                <block type="logic_boolean" id="$wlsY~$Hi$],?QdD_|dJ">
                                  <field name="BOOL">FALSE</field>
                                </block>
                              </value>
                              <next>
                                <block type="comment" id="oC*3Vx=(%?bpLinicH7y">
                                  <field name="COMMENT">Licht ausschalten</field>
                                  <next>
                                    <block type="control" id="StpP@~=D.t,f=%G5iIEb">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                      <field name="OID">Object ID</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="VzV)zZvFX.[!jL.HrTv^">
                                          <field name="BOOL">FALSE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="debug" id="/]r`M?+H*`hF(mjKfk`7">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                            <shadow type="text" id="#Gs:f2Xp%y)).d=|9WQ-">
                                              <field name="TEXT">Licht ausschalten</field>
                                            </shadow>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </statement>
                        </block>
                      </statement>
                    </block>
                  </statement>
                </block>
              </next>
            </block>
          </xml>
          
          1 Antwort Letzte Antwort
          0
          • S sZno

            @asgothian Zu 1:
            Was genau meinst du damit? Der stop timeout wird doch immer gemacht? Angenommen das licht ist an und er triggert wieder. Dann ist SwitchState "true"(Bedinung erfüllt) und er macht den stop timeout?

            Zu 2:
            Das Problem ist der Sensor. Ist ein Aquara Motion Sensor. Offizell kann der nur alle 60 Sekunden eine Bewegung erkennen. Mit dem Hack (Pin auf Platine Brücken), kann er zwar alle 5 Sekunden eine Bewegung erkennen (Wert ist "true" wird aber aktualisiert), aber der Wert fällt weiterhin erst nach 60 Sekunden wieder auf false. Wenn ich also auf "wurde geändert" prüfe, geht zwar das einschalten, aber dann erst wieder nach 60 Sekunden -.-

            Ich versteh noch nicht ganz wie der timeout arbeitet. Ich bekomm regelmäßig 2x an oder 2x aus... Und bisher ist mir keine Vernünftige Lösung eingefallen, wie er sauber ohne spacken schaltet.

            hydrotecH Offline
            hydrotecH Offline
            hydrotec
            schrieb am zuletzt editiert von
            #5

            @szno

            Guten Morgen

            Theoretisch sollte es so bei dir funktionieren.
            Objekt-IDs musst an deine anpassen.
            antwort_script_wird_zweimal_ausgeloest_01.png
            Gruß, Karsten

            Ubuntu 22.04 LTS (LXD/LXC)
            admin: v6.3.5
            js-controller: v4.0.24
            node: v18.16.1
            npm: v9.5.1
            repository: stable

            S 1 Antwort Letzte Antwort
            0
            • hydrotecH hydrotec

              @szno

              Guten Morgen

              Theoretisch sollte es so bei dir funktionieren.
              Objekt-IDs musst an deine anpassen.
              antwort_script_wird_zweimal_ausgeloest_01.png
              Gruß, Karsten

              S Offline
              S Offline
              sZno
              schrieb am zuletzt editiert von
              #6

              @hydrotec @Kusi
              Das Problem ist leider (s.o.), dass mein "motion detected" erst nach 60s wieder false wird. Deswegen geht das bei mir so leider nicht -.-

              @hydrotec Der hue motion sensor von dir, was hat der für minimale Schaltzeiten? Momentan ist das zwar noch keine Option, aber wenn ichs mit dem Aquara gar nicht hin bekomme, muss evtl doch ein anderer Bewegungssensor her...
              Der Aquara war aufgrund der Größe und (im Vergleich zum Hue gerade mal die Hälfte) des Preises sehr attraktiv.

              hydrotecH 1 Antwort Letzte Antwort
              0
              • S sZno

                @asgothian Zu 1:
                Was genau meinst du damit? Der stop timeout wird doch immer gemacht? Angenommen das licht ist an und er triggert wieder. Dann ist SwitchState "true"(Bedinung erfüllt) und er macht den stop timeout?

                Zu 2:
                Das Problem ist der Sensor. Ist ein Aquara Motion Sensor. Offizell kann der nur alle 60 Sekunden eine Bewegung erkennen. Mit dem Hack (Pin auf Platine Brücken), kann er zwar alle 5 Sekunden eine Bewegung erkennen (Wert ist "true" wird aber aktualisiert), aber der Wert fällt weiterhin erst nach 60 Sekunden wieder auf false. Wenn ich also auf "wurde geändert" prüfe, geht zwar das einschalten, aber dann erst wieder nach 60 Sekunden -.-

                Ich versteh noch nicht ganz wie der timeout arbeitet. Ich bekomm regelmäßig 2x an oder 2x aus... Und bisher ist mir keine Vernünftige Lösung eingefallen, wie er sauber ohne spacken schaltet.

                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #7

                @szno sagte in Skript wird 2x ausgelöst:

                Der stop timeout wird doch immer gemacht? Angenommen das licht ist an und er triggert wieder. Dann ist SwitchState "true"(Bedinung erfüllt) und er macht den stop timeout?

                @szno sagte in Skript wird 2x ausgelöst:

                Wie zu sehen ist, wird das Licht 2x innerhalb ein paar ms angeschaltet.

                und der schaltaktor hat in den Millisekunden bereits geschaltet?

                kein Support per PN! - Fragen im Forum stellen -
                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                S 1 Antwort Letzte Antwort
                0
                • HomoranH Homoran

                  @szno sagte in Skript wird 2x ausgelöst:

                  Der stop timeout wird doch immer gemacht? Angenommen das licht ist an und er triggert wieder. Dann ist SwitchState "true"(Bedinung erfüllt) und er macht den stop timeout?

                  @szno sagte in Skript wird 2x ausgelöst:

                  Wie zu sehen ist, wird das Licht 2x innerhalb ein paar ms angeschaltet.

                  und der schaltaktor hat in den Millisekunden bereits geschaltet?

                  S Offline
                  S Offline
                  sZno
                  schrieb am zuletzt editiert von
                  #8

                  @homoran Ich habe versucht, das Verhalten mit Switch = false zu verriegeln. Ohne Erfolg. Würde mich auch stark wundern, wenn er innerhalb ein paar ms schalten würde. Er muss ja true schicken und den Wert zurück bekommen. Trotzdem verstehe ich nicht, warum er den Block 2x ausführt. Es kommt auch gelegentlich vor, dass er 2x aus sendet.

                  HomoranH AsgothianA K 3 Antworten Letzte Antwort
                  0
                  • S sZno

                    @homoran Ich habe versucht, das Verhalten mit Switch = false zu verriegeln. Ohne Erfolg. Würde mich auch stark wundern, wenn er innerhalb ein paar ms schalten würde. Er muss ja true schicken und den Wert zurück bekommen. Trotzdem verstehe ich nicht, warum er den Block 2x ausführt. Es kommt auch gelegentlich vor, dass er 2x aus sendet.

                    HomoranH Nicht stören
                    HomoranH Nicht stören
                    Homoran
                    Global Moderator Administrators
                    schrieb am zuletzt editiert von
                    #9

                    @szno wenn ein timeout erst mehr als einmal gestartet wurde kann er nicht wieder gestoppt werden.

                    kein Support per PN! - Fragen im Forum stellen -
                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                    Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    S 1 Antwort Letzte Antwort
                    0
                    • S sZno

                      @homoran Ich habe versucht, das Verhalten mit Switch = false zu verriegeln. Ohne Erfolg. Würde mich auch stark wundern, wenn er innerhalb ein paar ms schalten würde. Er muss ja true schicken und den Wert zurück bekommen. Trotzdem verstehe ich nicht, warum er den Block 2x ausführt. Es kommt auch gelegentlich vor, dass er 2x aus sendet.

                      AsgothianA Offline
                      AsgothianA Offline
                      Asgothian
                      Developer
                      schrieb am zuletzt editiert von Asgothian
                      #10

                      @szno sagte in Skript wird 2x ausgelöst:

                      @homoran Ich habe versucht, das Verhalten mit Switch = false zu verriegeln. Ohne Erfolg. Würde mich auch stark wundern, wenn er innerhalb ein paar ms schalten würde. Er muss ja true schicken und den Wert zurück bekommen. Trotzdem verstehe ich nicht, warum er den Block 2x ausführt. Es kommt auch gelegentlich vor, dass er 2x aus sendet.

                      Dieses Verhalten ist durch den Trigger begründet. Aus technischen Gründen aktualisiert der Aqara BWM den "occupancy" state in einigen Fällen doppelt. Dies liegt daran das der Sensor die Aktualisierung der occupancy manchmal verschluckt hat wenn gleichzeitig die Helligkeit gemeldet wurde. Ein Fix auf der Herdiman-Seite sorgt dafür das diese Aktualisierung automatisch dazu kommt.

                      Um zu verhindern das das klemmt kannst du das folgende Konstrukt versuchen:

                      Screenshot 2021-10-26 at 09.33.34.png

                      Der Baustein 'state value' kommt dabei aus dem Trigger Block und ist mit 'Objekt ID' vorbelegt. Er beinhaltet den Wert des triggernden Objektes.

                      Durch die Kombination "schalten mit delay" und "löschen falls läuft" entsteht beim anschalten eine "entprellung". Das Anschalten wird um 50 ms verzögert und blockiert damit die doppelte Aktualisierung seitens des Zigbee Adapters.

                      Das gleiche kann auch für das abschalten genutzt werden. Vorteil: Kein timeout explizit im Blockly. Nachteil: Kein log Eintrag.

                      An Stelle von
                      Screenshot 2021-10-26 at 09.31.35.png

                      kann daher auch

                      Screenshot 2021-10-26 at 09.31.51.png

                      stehen damit du ggf. auch noch den Logeintrag mit bekommst.

                      A.

                      Nachtrag: Fehlerteufel: In der Falls Bedingung habe ich statt Helligkeit < 6 Helligkeit = 6 geschrieben. Das ist natürlich nicht korrekt.

                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                      S 1 Antwort Letzte Antwort
                      0
                      • HomoranH Homoran

                        @szno wenn ein timeout erst mehr als einmal gestartet wurde kann er nicht wieder gestoppt werden.

                        S Offline
                        S Offline
                        sZno
                        schrieb am zuletzt editiert von
                        #11

                        @homoran Und was genau macht dann der Baustein "Stop timeout"?

                        AsgothianA HomoranH 2 Antworten Letzte Antwort
                        0
                        • AsgothianA Asgothian

                          @szno sagte in Skript wird 2x ausgelöst:

                          @homoran Ich habe versucht, das Verhalten mit Switch = false zu verriegeln. Ohne Erfolg. Würde mich auch stark wundern, wenn er innerhalb ein paar ms schalten würde. Er muss ja true schicken und den Wert zurück bekommen. Trotzdem verstehe ich nicht, warum er den Block 2x ausführt. Es kommt auch gelegentlich vor, dass er 2x aus sendet.

                          Dieses Verhalten ist durch den Trigger begründet. Aus technischen Gründen aktualisiert der Aqara BWM den "occupancy" state in einigen Fällen doppelt. Dies liegt daran das der Sensor die Aktualisierung der occupancy manchmal verschluckt hat wenn gleichzeitig die Helligkeit gemeldet wurde. Ein Fix auf der Herdiman-Seite sorgt dafür das diese Aktualisierung automatisch dazu kommt.

                          Um zu verhindern das das klemmt kannst du das folgende Konstrukt versuchen:

                          Screenshot 2021-10-26 at 09.33.34.png

                          Der Baustein 'state value' kommt dabei aus dem Trigger Block und ist mit 'Objekt ID' vorbelegt. Er beinhaltet den Wert des triggernden Objektes.

                          Durch die Kombination "schalten mit delay" und "löschen falls läuft" entsteht beim anschalten eine "entprellung". Das Anschalten wird um 50 ms verzögert und blockiert damit die doppelte Aktualisierung seitens des Zigbee Adapters.

                          Das gleiche kann auch für das abschalten genutzt werden. Vorteil: Kein timeout explizit im Blockly. Nachteil: Kein log Eintrag.

                          An Stelle von
                          Screenshot 2021-10-26 at 09.31.35.png

                          kann daher auch

                          Screenshot 2021-10-26 at 09.31.51.png

                          stehen damit du ggf. auch noch den Logeintrag mit bekommst.

                          A.

                          Nachtrag: Fehlerteufel: In der Falls Bedingung habe ich statt Helligkeit < 6 Helligkeit = 6 geschrieben. Das ist natürlich nicht korrekt.

                          S Offline
                          S Offline
                          sZno
                          schrieb am zuletzt editiert von
                          #12

                          @asgothian danke damit kann ich was anfangen. Das hilft auf jedenfall. Werde das heute Abend mal testen 👍

                          1 Antwort Letzte Antwort
                          0
                          • S sZno

                            @homoran Und was genau macht dann der Baustein "Stop timeout"?

                            AsgothianA Offline
                            AsgothianA Offline
                            Asgothian
                            Developer
                            schrieb am zuletzt editiert von Asgothian
                            #13

                            @szno sagte in Skript wird 2x ausgelöst:

                            @homoran Und was genau macht dann der Baustein "Stop timeout"?

                            Dazu muss erst einmal erklärt werden was der “timeout” Baustein macht:

                            • es wird eine Funktion erstellt die in eine Liste von später auszuführenden Funktionen eingetragen wird.
                            • es wird ein sogenanntes “Handle” zurück gegeben mit dem auf den Eintrag in der Liste zugegriffen werden kann.
                            • intern wird dieses Handle in der Variablen “timeout” (oder timeout2/3/4 wenn man mehrere unterschiedliche Timeouts braucht) gespeichert

                            Das “stop timeout” nimmt besagtes Handle und entfernt den Eintrag aus der Liste.

                            Wenn also der gleiche timeout 2 mal angelegt wird steht die Funktion doppelt in der Liste, das Handle des ersten Eintrags wird beim 2. Erzeugen durch das Handle des 2. Eintrags überschrieben und kann dann nicht mehr gelöscht werden.

                            A.

                            ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                            "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                            1 Antwort Letzte Antwort
                            0
                            • S sZno

                              @homoran Und was genau macht dann der Baustein "Stop timeout"?

                              HomoranH Nicht stören
                              HomoranH Nicht stören
                              Homoran
                              Global Moderator Administrators
                              schrieb am zuletzt editiert von
                              #14

                              @szno sagte in Skript wird 2x ausgelöst:

                              Und was genau macht dann der Baustein "Stop timeout"?

                              einen laufenden timeout stoppen.

                              sobald der timeout mehr als einmal gestartet wurde funktioniert es nicht mehr.
                              Deswegen sollte vor jedem timeout immer auch ein stop timeout sein

                              kein Support per PN! - Fragen im Forum stellen -
                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                              Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                              1 Antwort Letzte Antwort
                              0
                              • S sZno

                                @hydrotec @Kusi
                                Das Problem ist leider (s.o.), dass mein "motion detected" erst nach 60s wieder false wird. Deswegen geht das bei mir so leider nicht -.-

                                @hydrotec Der hue motion sensor von dir, was hat der für minimale Schaltzeiten? Momentan ist das zwar noch keine Option, aber wenn ichs mit dem Aquara gar nicht hin bekomme, muss evtl doch ein anderer Bewegungssensor her...
                                Der Aquara war aufgrund der Größe und (im Vergleich zum Hue gerade mal die Hälfte) des Preises sehr attraktiv.

                                hydrotecH Offline
                                hydrotecH Offline
                                hydrotec
                                schrieb am zuletzt editiert von
                                #15

                                @szno sagte in Skript wird 2x ausgelöst:

                                @hydrotec Der hue motion sensor von dir, was hat der für minimale Schaltzeiten? ...

                                Von true zu false ca. 10 Sekunden.

                                Kleine Gegenfrage, warum benötigst du so kurze Schaltzeiten?
                                Nach dieser Anleitung, wird eigentlich bei diesen BWM eine kürzere Schaltzeit als einer Minute nicht empfohlen.

                                IMPORTANT: occupancy_timeout should not be set to lower than 60 seconds. The reason is this: after detecting a motion the sensor ignores any movements for exactly 60 seconds. In case there are movements after this 60 seconds, a new message (occupancy: true) will be sent and the sensor will go to sleep for another minute, and so on. Therefore, in order to sustain occupancy: true, you need a reasonable window after this 60s sleep to determine continued occupancy. This is expected behaviour (see #270). To work around this, a hardware modification is needed.
                                

                                Aus meiner Erfahrung heraus, würde ich ein Timeout von zwei Minuten nehmen.
                                (Im Büro habe ich sogar zehn Minuten)
                                Zu kurze Schaltzeiten sind nicht unbedingt der Hit.
                                Wenn das Licht ständig an oder aus geht leiden auch deine Lampen darunter.

                                Gruß, Karsten

                                Ubuntu 22.04 LTS (LXD/LXC)
                                admin: v6.3.5
                                js-controller: v4.0.24
                                node: v18.16.1
                                npm: v9.5.1
                                repository: stable

                                S 1 Antwort Letzte Antwort
                                0
                                • S sZno

                                  @homoran Ich habe versucht, das Verhalten mit Switch = false zu verriegeln. Ohne Erfolg. Würde mich auch stark wundern, wenn er innerhalb ein paar ms schalten würde. Er muss ja true schicken und den Wert zurück bekommen. Trotzdem verstehe ich nicht, warum er den Block 2x ausführt. Es kommt auch gelegentlich vor, dass er 2x aus sendet.

                                  K Offline
                                  K Offline
                                  Kusi
                                  schrieb am zuletzt editiert von Kusi
                                  #16

                                  @szno sagte in Skript wird 2x ausgelöst:

                                  zu verriegeln

                                  Dafür ist die Variable zu nehmen.

                                  S 1 Antwort Letzte Antwort
                                  0
                                  • K Kusi

                                    @szno sagte in Skript wird 2x ausgelöst:

                                    zu verriegeln

                                    Dafür ist die Variable zu nehmen.

                                    S Offline
                                    S Offline
                                    sZno
                                    schrieb am zuletzt editiert von
                                    #17

                                    @kusi Du meinst den Wert? Hab ich gemacht. War am Handy nur schreibfaul.

                                    K 1 Antwort Letzte Antwort
                                    0
                                    • hydrotecH hydrotec

                                      @szno sagte in Skript wird 2x ausgelöst:

                                      @hydrotec Der hue motion sensor von dir, was hat der für minimale Schaltzeiten? ...

                                      Von true zu false ca. 10 Sekunden.

                                      Kleine Gegenfrage, warum benötigst du so kurze Schaltzeiten?
                                      Nach dieser Anleitung, wird eigentlich bei diesen BWM eine kürzere Schaltzeit als einer Minute nicht empfohlen.

                                      IMPORTANT: occupancy_timeout should not be set to lower than 60 seconds. The reason is this: after detecting a motion the sensor ignores any movements for exactly 60 seconds. In case there are movements after this 60 seconds, a new message (occupancy: true) will be sent and the sensor will go to sleep for another minute, and so on. Therefore, in order to sustain occupancy: true, you need a reasonable window after this 60s sleep to determine continued occupancy. This is expected behaviour (see #270). To work around this, a hardware modification is needed.
                                      

                                      Aus meiner Erfahrung heraus, würde ich ein Timeout von zwei Minuten nehmen.
                                      (Im Büro habe ich sogar zehn Minuten)
                                      Zu kurze Schaltzeiten sind nicht unbedingt der Hit.
                                      Wenn das Licht ständig an oder aus geht leiden auch deine Lampen darunter.

                                      Gruß, Karsten

                                      S Offline
                                      S Offline
                                      sZno
                                      schrieb am zuletzt editiert von sZno
                                      #18

                                      @hydrotec Das ist schnell erklärt. Das Licht ist auf dem Weg zum WC. Wenn ich nachts schnell pinkeln gehe braucht das nunmal keine 10 min 😅
                                      Und besagte Hardware Modifikation wurde gemacht.

                                      hydrotecH 1 Antwort Letzte Antwort
                                      0
                                      • S sZno

                                        @kusi Du meinst den Wert? Hab ich gemacht. War am Handy nur schreibfaul.

                                        K Offline
                                        K Offline
                                        Kusi
                                        schrieb am zuletzt editiert von
                                        #19

                                        @szno sagte in Skript wird 2x ausgelöst:

                                        Du meinst den Wert?

                                        Nein, die Überprüfung ob das Licht bereits eingeschaltet wurde. Du nutzt dafür einen eigenen Datenpunkt, welcher aber fürs Schreiben und danach Auslesen seine Zeit braucht.
                                        Die Variablle ist bedeutend schneller, habe ich gelernt.

                                        1 Antwort Letzte Antwort
                                        0
                                        • S sZno

                                          @hydrotec Das ist schnell erklärt. Das Licht ist auf dem Weg zum WC. Wenn ich nachts schnell pinkeln gehe braucht das nunmal keine 10 min 😅
                                          Und besagte Hardware Modifikation wurde gemacht.

                                          hydrotecH Offline
                                          hydrotecH Offline
                                          hydrotec
                                          schrieb am zuletzt editiert von
                                          #20

                                          @szno sagte in Skript wird 2x ausgelöst:

                                          ... Das Licht ist auf dem Weg zum WC. Wenn ich nachts schnell pinkeln gehe braucht das nunmal keine 10 min 😅

                                          Komm du erst mal ins Alter, da sind 10 min nichts 😜

                                          Ubuntu 22.04 LTS (LXD/LXC)
                                          admin: v6.3.5
                                          js-controller: v4.0.24
                                          node: v18.16.1
                                          npm: v9.5.1
                                          repository: stable

                                          S 1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          574

                                          Online

                                          32.8k

                                          Benutzer

                                          82.8k

                                          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