Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Timer nicht objektorientiert?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Timer nicht objektorientiert?

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

      Hallo zusammen,

      habe folgendes Experiment:
      Nach Türöffnung macht das Skript das Licht an & schaltet einen Timer, der das Licht nach 10sek wieder ausmacht.
      Das klappt jeweils mit jeder Tür einzeln.

      Mit mehreren Türen jedoch nicht, falls die Timer gleichzeitig laufen müssten. Die letzte Tür hijackt dann den laufenden Timer, was ich denke daran zu sehen, dass das licht bereits nach weniger Zeit z.B. 5sek ausgehen.

      -> Sind die Timer in Blockly nicht objektorientiert, sodass jeder Trigger(Tür) einen eigene Timer(Tür) haben sollte?
      -> Oder anders gefragt: wie sähe hier eine Lösung aus? (kann mehr beschreiben falls nötig dafür)

      (Bin schon anderweitig auf das Thema gestoßen.)

      e739a16f-c6a5-45cd-8bea-b7fcb64d2ed2-image.png

      Nebenergänzung:

      • hinter der Funktion anwesenheit_dp_aktualisieren, steckt nur eine Zeile: Aktualisiere ObjektID mit Wert ohne verzögerung inkl. löschen falls läuft.... sollte egal sein für das Timer-Thema?
      • Variable "+tuer_pfade+" = "alias.0.*.opened" -> darüber werden alle Türen erfasst.

      Vielen Dank schonmal für die Hilfe!

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @ptr last edited by

        @ptr sagte: jeder Trigger(Tür) einen eigene Timer(Tür) haben sollte?

        Ja.

        @ptr sagte in Timer nicht objektorientiert?:

        wie sähe hier eine Lösung aus?

        Array of timer - aber nicht in Blockly.

        P 2 Replies Last reply Reply Quote 0
        • P
          ptr @paul53 last edited by ptr

          @paul53 Ok, danke Dir!
          Also Timer in einem Array schreiben. Über JS habe ich da schon einen Angriffspunkt. Muss mir das dann also darüber mal anschauen: Thema dazu im JS-Forumsteil:
          https://forum.iobroker.net/topic/59907/dynamisch-erstellte-variablen/36

          P 1 Reply Last reply Reply Quote 0
          • P
            ptr @ptr last edited by

            Auf dem Weg dahin habe ich folgendes Element bei mir in einem Skript gefunden:
            f4cbdd0d-50cb-4a07-8aa8-3471db1bf696-image.png

            -> 1. Dieser Javascript-Funktionsblock, wie bekomme ich den wieder aus dem Blockly-Menü her? Keine Ahnung wie ich das gemacht hatte... verrückt....

            -> 2. wenn ich timer_multi aufrufe führt er mir das JS-Skript innerhalb des Blockes auf. Nicht den Block der zuzusagen lila "halb umrahmt" ist. Das lässt vermuten, dass ich hier im JS-Code den "halb umrahmten"-Blockly-Code explizit per Befehl aufrufen muss. Wie mache ich das?

            paul53 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @ptr last edited by

              @ptr sagte: per Befehl aufrufen muss. Wie mache ich das?

              Die erstellte Funktion wird unter "Funktionen" angeboten.

              Bild_2022-11-24_204018862.png

              P 2 Replies Last reply Reply Quote 0
              • P
                ptr @paul53 last edited by

                @paul53 Hallo Paul, ja das ist gut zu finden. Das ruft den JS-Code (hier nicht sichtbar) innerhalb des lila Blocks auf.

                Was noch unklar ist, ist wie rufe ich diesen Teil auf:
                d24e1d99-9bff-4e43-80b9-0326019fd41d-image.png

                1 Reply Last reply Reply Quote 0
                • P
                  ptr @paul53 last edited by

                  @paul53 und die erste Frage war: wie finde ich GENAU diesen JS-Funktion-Block?
                  Im Menü sehen sie alle anders aus. Keiner hat Code UND Blockly mit drin...:
                  00088993-e345-4952-a552-2f7a2d65f1c8-image.png

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @ptr last edited by

                    @ptr sagte in Timer nicht objektorientiert?:

                    Keiner hat Code UND Blockly mit drin...:

                    dafür gibt es ja weitere Optionen hinter dem Zahnrad.
                    nimm mal den ersten Block

                    P 1 Reply Last reply Reply Quote 0
                    • P
                      ptr @Homoran last edited by

                      @homoran stehe da wohl irgendwie auf dem Schlauch. Sehe da nichts...
                      0ae362c0-0ca9-4055-b87a-642051d1abee-image.png
                      Variablen definieren ja, JS-Code hinzufügen geht nicht. Das liegende "U" des Blocks sieht auch anders aus. Hm...

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @ptr last edited by

                        @ptr sagte: Javascript-Funktionsblock, wie bekomme ich den wieder aus dem Blockly-Menü her? Keine Ahnung wie ich das gemacht hatte

                        Ich auch nicht.
                        Nur mit einer "normalen" Blockly-Funktion bekomme ich es hin.

                        Bild_2022-11-24_211230758.png

                        P 1 Reply Last reply Reply Quote 0
                        • P
                          ptr @paul53 last edited by

                          @paul53 ich erinnere mich, dass es irgendein drop-down war - glaube ich - mit "Anweisungen erlauben" oder irgendsowas... hm...

                          P 1 Reply Last reply Reply Quote 0
                          • P
                            ptr @ptr last edited by

                            @ptr falls das Element "doch nicht geht". Dann hätte ich noch eine andere Idee fürs Ziel einen Multi-Timer-Block selber zu bauen:

                            Eine JS-"Multi-Timer"-Funktion erstellen, die nur eine JS-Funktions-Block (als "Ausführung nach Timeout") aufruft - der dann eben wieder Blockly-Anweisungen enthält. So wäre man dann wieder "zurück" in Blockly für die Definition, welche Anweisungen durch einen Timeout verspätet werden sollen...

                            1 Reply Last reply Reply Quote 0
                            • P
                              ptr @paul53 last edited by

                              @paul53 doch nochmal die Frage dazu: Du sagst "Ja." zu jedem Trigger folgt hier ein eigener Timer.
                              jedoch sagst Du auch, dass man einen Timer-Array braucht. Nicht zwingend dann oder?

                              Meine Experimente würden Deinem ersten "ja" Wiedersprechen. Falls ich da nicht irgendwo einen anderen Fehler mache - was ich versuche rauszufinden.

                              Nach meinem Verständnis müsste im Hintergrund eine UID erstellt werden die die variable timeout2 PRO TRIGGER unterscheidbar macht(Objektorientierung). Das würde dazu führen, dass folgende Annahme richtig wäre:

                              1. Tür1 öffnen, Licht geht an. 1sek warten
                              2. Tür2 öffnen, Licht geht an.
                                -> nach 10sek geht Licht in Raum1 aus.
                                -> eine Sekunde später geht das Licht in Raum2 aus.

                              Meine Experimente unterstreichen das leider nicht. Daher die Frage.
                              Im Experiment bleibt Raum1-Licht an und Raum2-Licht geht nach 9sek Brenndauer aus. Ist das nachvollziehbar?

                              Irgendwas habe ich da noch nicht verstanden. Ich bin gespannt was...

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              790
                              Online

                              32.0k
                              Users

                              80.5k
                              Topics

                              1.3m
                              Posts

                              3
                              13
                              485
                              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