Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Tipp zur Programmierung

    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

    Tipp zur Programmierung

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

      Hallo,

      ich benötige einen Tipp.
      Ich möchte eine Variable auf true setzen wenn ein Event N mal in einem Zeitraum t geschehen ist.

      Das ganze soll ungefähr so funktionieren:

      Auslöser für Events = 3
      Zeit = 5 Minuten

      Event 1 0:00
      Event 2 4:00
      Event 3 5:01

      Es wird nichts ausgelöst, aber nun sollen die Events auf 2 gesetzt werden und 4:00 als Beginn für das 1. Event gesetz werden.
      Bei Auslösung soll alles wieder auf null gesetzt werden.

      VG

      Krodon

      OliverIO Asgothian 2 Replies Last reply Reply Quote 0
      • OliverIO
        OliverIO @krodon last edited by

        @krodon

        Ich denke bei jedem Event was den Kriterien entspricht das es potentiell was auslösen könnte muss ein Timer gestartet werden. Alle nachfolgenden Events müssen für alle laufenden Timer gezählt werden bis entweder die Max Anzahl erreicht ist, dass dann die Aktion ausgelöst wird oder wenn die Max Zeit erreicht wird, das der Timer dann vergessen/gelöscht wird.
        Das heißt zum gleichen Zeit laufen mehrere Timer, falls innerhalb der Messeturm mehrere Events auftreten

        1 Reply Last reply Reply Quote 1
        • Asgothian
          Asgothian Developer @krodon last edited by Asgothian

          @krodon Ich würde das so lösen:

          • eine Variable definieren, als leere Liste initialisieren
          • im Trigger den Zeitstempel der aktuellen Änderung als letzten in die Liste setzen
          • Sofern die Liste mehr als 2 Elemente hat:
            -- pruefen ob der erste Zeitstempel länger als n Minuten her ist. Wenn ja, aus der Liste entfernen. Das ganze wiederholen, bis die Bedingung nicht mehr erfüllt ist.
          • Hat die Liste immer noch mehr als 2 Elemente: Wert auf Wahr, dann Liste leeren.

          Screenshot 2025-06-14 at 16.25.35.png

          Ohne die Liste zu leeren entfällt der 'reset'

          A.
          Nachtrag: warum so und nicht mit Timern ? Weil bei Timern letztendlich bei jeder Änderung ein Timer notwendig werden würde. Beispiel:
          Event tritt ein bei:
          T=0,
          T=3,
          T=6,
          T=9,
          T=10
          Man hat also immer 2 Timeouts laufen, und erst wenn der Event eintritt wenn beide laufen darf gestartet werden. Da ist die Liste dann doch die Option mit weniger Ressourcen.

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

          Support us

          ioBroker
          Community Adapters
          Donate

          640
          Online

          31.7k
          Users

          79.9k
          Topics

          1.3m
          Posts

          3
          3
          142
          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