Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly: Präsenztimer

    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

    Blockly: Präsenztimer

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

      Hallo zusammen,

      ich habe jetzt erstmals meinen Deconz adapter und meine Mqtt Geräte mit iobroker verbunden und die ersten Blocklys gebaut, aber derzeit komme ich nicht weiter, evtl kann mir jemand auf die Sprünge helfen.

      Und zwar ich habe einen Bewegungsmelder in der Küche, dieser soll das Licht einschalten wenn sich jemand darin Befindet und nach 5 Minuten ausschalten wenn sich keiner darin befindet. Ich habe also einmal den Zustandswert des Bewegungsmelders den ich alle 60 Sekunden bekomme und einmal den Zustandswert der Lampe (An/Aus) über Mqtt.
      5045_test.jpg

      Nachdem ich aber die Zustandswerte vom Bewegungsmelder nur alle 60 Sekunden bekomme springt er von "es ist jemand da" zu "es ist niemand da" hin und her und erfüllt somit die "Ausschaltprozedur" (rechts).

      In der Praxis heißt das, das Licht geht kurz aus wenn sich jemand in der Küche befindet und gleich wieder an.

      Jemand tipps wie ich das vermeiden kann? :mrgreen:

      1 Reply Last reply Reply Quote 0
      • J
        Jan1 last edited by

        Beide Blöcke sind falsch. Beim ersten hast keine Bedingung angegeben "falls wahr". Ja was denn überhaupt. Im zweiten ist der interne Trigger ohne Funktion, weil da eine Fallsbedingung rein muss.

        1 Reply Last reply Reply Quote 0
        • J
          J Riemann last edited by

          Ich habe Ähnliches wie folgt gelöst (gekürzte Version)…

          Es wäre sogar noch kürzer möglich, z.B. ohne Gegenprüfung des aktuellen Schaltzustands und im "falls" bzw. "sonst falls" würde "Wert von Objekt ID - default" auch ausreichen.

          6696_bildschirmfoto_2018-11-16_um_10.05.53.png :

          1 Reply Last reply Reply Quote 0
          • T
            tscheerio last edited by

            @j Riemann

            Ehrlich gesagt steige ich da nicht so ganz durch.

            Nehmen wir an du verlässt die Küche und der Bewegungsmelder sagt da ist nichts mehr, jetzt fängt die Logik an zu laufen … Innerhalb dieser Zeit betrittst du wieder die Küche und der Bewegungsmelder sagt da ist doch jemand.

            Wird dann der erste Wert der sich in der Logik befindet gelöscht? Sonst hast du doch auch eine kurze Zeit in der das Licht ausgeschaltet wird oder!?

            1 Reply Last reply Reply Quote 0
            • J
              J Riemann last edited by

              Ganz einfach:

              Der Präsenzmelder ändert seinen Status egal zu welchem Zustand (Bewegung/keine Bewegung).

              Das ist der Trigger "Falls Objekt PIR - wurde geändert" der den Skriptdurchlauf startet.

              Fall 1: Der PIR wechselt von "Bewegung erkannt" zu "keine Bewegung"

              Das Skript startet und der blaue "prüfen-Block" wird abgearbeitet. Die Bedingung: "keine Bewegung erkannt" ist erfüllt und der "mache-Bolck" wird abgearbeitet. Hier steht übersetzt: Wenn der PIR "keine Bewgung" meldet starte eine Verzögerung (Timeout) von 5 Minuten nach der die Aktion innerhalb der Timeout-Klammer ausgeführt wird. Die Aufgabe lautet: Prüfe ob das Licht an ist und schalte es aus wenn es eingeschaltet ist.

              Nun läuft quasi eine eine Ausschaltverzögerung von 5 Minuten nachdem der PIR "keine Bewegung" gemeldet hat.

              Das Skript läuft weiter zum "sonst-falls-Block" und die Bedingung: "Bewegung erkannt" ist nicht erfüllt. Darum wird der "mache" Teil übersprungen und das Skript endet.

              Fall 2: Der PIR wechselt von "keine Bewegung" zu "Bewegung erkannt"

              Das Skript startet und der blaue "prüfen-Block" wird abgearbeitet. Die Bedingung: "keine Bewegung erkannt" ist nicht erfüllt und der "mache-Bolck" wird übersprungen. Weiter geht es im "sonst-falls-Block". Die Bedingung "Bewegung erkannt" ist jetzt erfüllt und der dazugehörige "mache-Block" wird abgearbeitet. Hier wird jetzt zuerst ein evtl. vorher gestarteter Timeout abgebrochen. Also wird ein evtl. durch das obere "falls" verzögert (Timeout) gesetzter Ausschaltbefehl gelöscht. Außerdem wird jetzt ein ausgeschaltetes Licht eingeschaltet.

              1 Reply Last reply Reply Quote 0
              • T
                tscheerio last edited by

                Also ich habe jetzt auch mal ein Update erstellt und ich bin mir nicht sicher warum es nicht funktioniert (einschalten klappt wunderbar).

                Ich habe irgendwie noch Logikfehler weil ich nicht weiß wie Blockly genau funktioniert.

                Also meiner Meinung funktioniert das jetzt so:

                Falls "Flurlicht An" springt er in die Ausschaltbedingung (unten) und da geht es eigentlich schon los, wann wird diese Bedingung abgerufen, die ganze Zeit? bei einer Änderung?

                Naja auf jeden Fall geht es dann weiter, falls der Bewegungsmelder "false" ist wird der timeout getriggert, ist dieser abgelaufen wird überprüft ob das Flurlicht "true" ist, falls das zutrifft wird es ausgeschaltet.

                Wenn der Bewegungsmelder "true" ist, wird überprüft ob das Licht "aus" ist, trifft dieses zu wird das Licht angeschaltet.

                Wo liegt der fehler?

                Oder was habe ich nicht verstanden?
                5045_221321.jpg

                1 Reply Last reply Reply Quote 0
                • J
                  Jan1 last edited by

                  Der zweite Block ist etwas unlogisch. Der Trigger wird bei wahr aktiv und alls Bedingungen hast den selben DP intern noch mal auf wahr geprüft. Ändere mal den Trigger auf "wurde geändert" oder aktualisiert, denn so mach die weitere Abfrage wieder Sinn. Ob's dann läuft ist was anderes 😄

                  1 Reply Last reply Reply Quote 0
                  • T
                    tscheerio last edited by

                    Ja das hatte ich schon geändert auf "wurde geändert" macht aber keinen unterschied

                    1 Reply Last reply Reply Quote 0
                    • J
                      Jan1 last edited by

                      Weil Dein Trigger Power ist und nur wenn sich da was ändert, dann wird der Inhalt dessen auch ausgeführt. Da Dein Bewegungsmelder im Trigger drin ist, kann der machen was er will ohne dass was passiert 😉

                      Du musst da schon auf den Bewegungsmelder triggern.

                      1 Reply Last reply Reply Quote 0
                      • J
                        J Riemann last edited by

                        6696_bildschirmfoto_2018-11-17_um_09.27.20.png

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        612
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        1212
                        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