Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Blockly Licht über Bewegungsmelder, Dauerlicht über Taster

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Blockly Licht über Bewegungsmelder, Dauerlicht über Taster

    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      emmpee last edited by

      Alles bei "Falls Objekt" ist sozusagen "oder" verknüpft und schiebt alles was drunter ist erstmal an, wobei geschaut wird, was passt. Kann man auch was überspringen, nach der Art "Wenn das passt, springe gleich zum Übernächsten"?

      1 Reply Last reply Reply Quote 0
      • rantanplan
        rantanplan last edited by

        @emmpee:

        Alles bei "Falls Objekt" ist sozusagen "oder" verknüpft und schiebt alles was drunter ist erstmal an, wobei geschaut wird, was passt. Kann man auch was überspringen, nach der Art "Wenn das passt, springe gleich zum Übernächsten"? `
        Schau mal unter Funktionen.

        Da kannst Du schön mit "Unterroutinen" arbeiten.

        Grüße

        1 Reply Last reply Reply Quote 0
        • E
          emmpee last edited by

          Werd ich tun. Ich denke, wenn ich die Logik dahinter mal geschnallt habe, wird´s leichter :-).

          Kann ich nochmal ein paar blöde Fragen stellen, wenn ich nicht weiter komme?

          1 Reply Last reply Reply Quote 0
          • rantanplan
            rantanplan last edited by

            @emmpee:

            Kann ich nochmal ein paar blöde Fragen stellen, wenn ich nicht weiter komme? `
            Na klar…"Hier werden Sie geholfen...." 😄

            Grüße

            PS.

            Setzte mal in den Betreff Deines ersten Beitrages "[Frage] Blockly Licht über…...." rein.

            Da reagieren auch noch ein paar andere Blockly-Scriptler.

            1 Reply Last reply Reply Quote 0
            • E
              emmpee last edited by

              Moin allerseits,

              da bin ich wieder :-). Ich habe mal was zusammengeklickt, rein zum Verständnis für mich und verstehe es nicht.

              Variablen alle auf 0, Trigger absichtlich nur auf Bewegung, d.h. für mein Verständnis, Taster werden erst ausgewertet, wenn vorher Bewegung war.

              Jetzt kommt Bewegung, und NUR Bewegung, trotzdem wird einer der Taster ausgelöst. Es sollte doch so sein, dass der Bewegungsmelder triggert, es wird geschaut ob der Taster oben gedrückt ist -> nein -> Taster unten gedrückt? -> nein -> Ende, auf den nächsten Trigger warten.

              ~~![](</s><URL url=)http://up.picr.de/29825175bh.png" />

              ![](</s><URL url=)http://up.picr.de/29825182wy.png" />~~

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                Dem Datenpunkt (Taster….PRESS_SHORT) ist dein Skript vollkommen egal. Er weiß nichts davon, wann dein Skript startet, stoppt, oder wann du ihn in deinem Skript abfragst. Der bekommt bei Betätigung einen Wert. Wenn du denSchalter also vorher mal betätigt hast und damit der Datenpunkt-Wert auf true steht, wird die Abfrage in deinem Skript auch bei der Ausführung sofort reagieren.

                Wie du damit umgehst, hängt jetzt natürlich davon ab, wie sich bei Betätigung die States (Datenpunkte) ändern. Am besten schaust du dir mal genau an, was bei welchem Tastendruck passiert (welcher Datenpunkt in welchem Zustand welchen Wert hat) und überlegst dann, wie das Skript strukturiert sein muss.

                Prinzipiell würde ich bei deinem ersten Skript anfangen und die Trigger trennen, d.h. einen für jeden Datenpunkt ohne diese 3fach-Wenn-Dann-Abfrage. Interaktion dazwischen läuft dann am besten über extra Skript-Variablen (z.b. für manuellen Modus an/aus) oder (wenn das logisch funktioniert) durch Abfrage der Lichtschalter-Zustände im Bewegungs-Trigger.

                1 Reply Last reply Reply Quote 0
                • rantanplan
                  rantanplan last edited by

                  Hi,

                  habe es mal kurz überflogen.

                  Du triggerst den BM auf "Aktualisierung"

                  HM Aktoren werden häufig aktualisiert, auch ohne Zustandsänderung!

                  Da rennt Dein Trigger immer los.

                  Besser ist auf "wurde geändert".

                  Aber auch da aufpassen.

                  MOTION ändert sich auf TRUE wenn Bewegung erkannt

                  und dann wieder auf FALSE wenn keine Bewegung erkannt.

                  Wenn Du auf beide Zustände reagieren willst, musst Du den BM Zustand innerhalb des Triggers abfragen.

                  Falls BM = wahr

                  mache …...

                  sonst .......

                  Oder Du stellt den Trigger auf WAHR.

                  Dann rennt er nur los wenn der BM Bewegung erkennt.

                  Dir ist auch bewust, dass die Blöcke ausserhalb des Triggers NUR EINMALIG bei Scriptstart ausgeführt werden?

                  Grüße

                  1 Reply Last reply Reply Quote 0
                  • rantanplan
                    rantanplan last edited by

                    @AlCalzone:

                    Dem Datenpunkt (Taster….PRESS_SHORT) ist dein Skript vollkommen egal. Er weiß nichts davon, wann dein Skript startet, stoppt, oder wann du ihn in deinem Skript abfragst. Der bekommt bei Betätigung einen Wert. Wenn du denSchalter also vorher mal betätigt hast und damit der Datenpunkt-Wert auf true steht, wird die Abfrage in deinem Skript auch bei der Ausführung sofort reagieren. `
                    Soweit wie AlCalzone hatte ich gar nicht gelesen. :roll:

                    Er hat natürlich vollkommen recht.

                    Grüße

                    1 Reply Last reply Reply Quote 0
                    • E
                      emmpee last edited by

                      @Alcalzone: Ich hatte auch den Verdacht, das die Variable vom Taster vielleicht auf true steht, deswegen am Anfang des Scriptes das Setzen aller Variablen auf false. Aber auch nach dem Neustart des Scriptes hat sich das Verhalten nicht geändert.

                      @rantanplan: ich habe die Blöcke absichtlich außerhalb gelegt, weil ich ja nicht möchte, dass bei jedem Trigger die Variablen wieder auf 0 stehen. Auf beide Zustände möchte ich nicht triggern, da die Zeit, die dann ablaufen soll, immer 2x gestartet wird. Das die Homematic auch mal so aktualisiert wusste ich nicht und würde vielleicht auch erklären, warum nach 15s nochmal getriggert wurde.

                      Ich werde weiter testen und bin froh, Euch löchern zu können 🙂

                      1 Reply Last reply Reply Quote 0
                      • rantanplan
                        rantanplan last edited by

                        @emmpee:

                        @rantanplan: ich habe die Blöcke absichtlich außerhalb gelegt, weil ich ja nicht möchte, dass bei jedem Trigger die Variablen wieder auf 0 stehen. Auf beide Zustände möchte ich nicht triggern, da die Zeit, die dann ablaufen soll, immer 2x gestartet wird. `
                        Warum soll die Zeit dann 2x gestartet werden?

                        Dafür gibt es ja die Bedingungsabfragen.

                        Mal sehen, ob ich Dein Problem richtig verstehe.

                        1. es gibt KEINE Direktverknüpfungen zwischen Taster und Leuchte

                        2. es gibt KEINE Direktverknüpfungen zwischen Bewegungsmelder und Leuchte

                        3. wenn der BM Bewegung erkennt soll die Leuchte x Zeit angehen.

                        4. wenn einer der Taster gedrückt wird, soll Leuchte angehen und an bleiben bis wieder ein Taster gedrückt wird.

                        So richtig?

                        Grüße

                        1 Reply Last reply Reply Quote 0
                        • E
                          emmpee last edited by

                          Genau so ist es. Laut Log wird bei Bewegung getriggert und nach 15s nochmal. Wollen zu ich das nicht, aber es ist so.

                          Ich nehme nur der Einfachheit halber einen Taster zum ein und einen zum Ausschalten. 1. hab ich zwei Taster dran und

                          2. muss ich ja sonst wieder abfragen ob das Licht an ist oder nicht

                          1 Reply Last reply Reply Quote 0
                          • rantanplan
                            rantanplan last edited by

                            Ich hab da mal vorbereitet… 😉

                            Allerdings nicht getestet.
                            147_badlicht.png

                            ! <block xmlns="http://www.w3.org/1999/xhtml" type="procedures_defnoreturn" id="-Ts^et}f~sjE_@F_b@Zr" x="-287.6651715072096" y="462.5000152587891"><mutation><arg name="x"></arg></mutation> <field name="NAME">LeuchteSchalten</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"><block type="comment" id="*6FI2{TA*|L*sW+,L(}?"><field name="COMMENT">Funktion Leuchte ein- oder ausschalten</field> <next><block type="controls_if" id="9?aGD0/BVm_Gr=?2ms+r"><value name="IF0"><block type="logic_compare" id="Yv]yu9}8NM]KwDy7Dkc5"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="7DWzNGXN52r-5ejij|N%"><field name="ATTR">val</field> <field name="OID">ID auswählen</field></block></value> <value name="B"><block type="variables_get" id="WOJ,=X],[ZWF1cE5o.B#"><field name="VAR">x</field></block></value></block></value> <statement name="DO0"><block type="control" id="*B4#g]93@QAUExJcA+k4"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="variables_get" id="L}Bsm|]1G@6~G)e^!?(i"><field name="VAR">x</field></block></value></block></statement></block></next></block></statement></block> !

                            Grüße

                            1 Reply Last reply Reply Quote 0
                            • rantanplan
                              rantanplan last edited by

                              Upps

                              Mir ist noch ein kleiner Schönheitsfehler aufgefallen.

                              Wenn man im Bad hin und her läuft, kann es sein das der BM mehrmals Bewegung meldet.

                              In meinem Beispiel würde dann jedesmal ein neuer Timer von 3 Min. gestartet.

                              Kriegst Du das alleine hin?

                              Grüße

                              1 Reply Last reply Reply Quote 0
                              • E
                                emmpee last edited by

                                Denke schon. Ich guck mir das an wenn ich wieder zu Hause bin. Danke dir erstmal [emoji4]

                                Sind die Blöcke normal untereinander eingehängt oder können die auch solo stehen?

                                1 Reply Last reply Reply Quote 0
                                • AlCalzone
                                  AlCalzone Developer last edited by

                                  @emmpee:

                                  @Alcalzone: Ich hatte auch den Verdacht, das die Variable vom Taster vielleicht auf true steht, deswegen am Anfang des Scriptes das Setzen aller Variablen auf false. Aber auch nach dem Neustart des Scriptes hat sich das Verhalten nicht geändert. `
                                  Die Variable hast du selbst definiert und existiert nur innerhalb des Skripts. Ich meinte den tatsächlichen Datenpunkt "Taster oben….PRESS_SHORT", den du im Block

                                  Falls Objekt "Bewegungsmelder Bad.MOTION"
                                  

                                  abfragst. Der wird von Skript-Neustarts nicht beeinflusst, da es keine Skript-Variable ist, sondern ein Datenpunkt.

                                  1 Reply Last reply Reply Quote 0
                                  • E
                                    emmpee last edited by

                                    Ich meinte es mit der Variablen so, dass sie, aus welchen Gründen auch immer, vielleicht in einem undefinierten Zustand ist und habe deswegen am Anfang des Scriptes alles erstmal definiert auf 0 gesetzt. War nur so ein Gedanke. Ich kenne sowas aus meinem Job mit Alarm oder Brandmeldeanlagen. Wenn die in kurzer Zeit zu oft stromlos gemacht werden, können Ausgänge einen undefinierten Zustand annehmen, der weder 0 noch richtig 1 ist, und reagieren dann auch bis Neustart überhaupt nicht.

                                    1 Reply Last reply Reply Quote 0
                                    • E
                                      emmpee last edited by

                                      Also Rantanplan, was Du da mal vorbereitet hast…läuft. 🙂

                                      Super, danke dafür. Jetzt muss ich´s nur noch verstehen, sonst weiß ich beim nächsten Mal wieder nicht weiter.

                                      Den timeout stop habe ich eingefügt, somit ist Dein "Schönheitsfehler" weg. Wenn ich das richtig verstanden habe, läuft sonst bei jeder Bewegung ein Timer los und das Licht bleibt dann, gefühlt, ewig an.

                                      Ich zerpflück jetzt mal alles um zu verstehen, was da abgeht.

                                      Ich danke Euch Jungs, es wird nicht das letzte Mal sein, das wir uns "sehen" 🙂

                                      1 Reply Last reply Reply Quote 0
                                      • rantanplan
                                        rantanplan last edited by

                                        @emmpee:

                                        Ich danke Euch Jungs, es wird nicht das letzte Mal sein, das wir uns "sehen" 🙂 `
                                        Immer wieder gerne :!:

                                        Danke für die Rückmeldung.

                                        (Meinen kleinen Fehler hätte ich mit einer weiteren Hilfvariablen gelöst 😉 )

                                        Grüße

                                        1 Reply Last reply Reply Quote 0
                                        • AlCalzone
                                          AlCalzone Developer last edited by

                                          @emmpee:

                                          Ich meinte es mit der Variablen so, dass sie, aus welchen Gründen auch immer, vielleicht in einem undefinierten Zustand ist und habe deswegen am Anfang des Scriptes alles erstmal definiert auf 0 gesetzt. War nur so ein Gedanke. `
                                          In JavaScript (im Hintergrund von Blockly) sind Variablen zum Start tatsächlich undefined. Die sind dann aber nicht mal 0, mal 1, sondern haben einfach keinen Wert, bis man ihnen einen zuweist.

                                          Der "reset" am Anfang ist daher in einigen Fällen sogar angebracht.

                                          1 Reply Last reply Reply Quote 0
                                          • E
                                            emmpee last edited by

                                            @rantanplan: ich merk schon, das Du auf die Dinger stehst 🙂 🙂

                                            @Alcalzone: dann war mein Gedanke ja garnicht so verkehrt, geschadet hat´s auf alle Fälle nicht 🙂

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            720
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            48
                                            11323
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo