Taster-Abfolge zum Auslösen eines Ereignisses

Ich habe ein Paneel mit 4 Zigbee-Tastern, welche ich als A-T-G-C bezeichne (Nukleotide :blush: ). Nun möchte ich dieses Paneel als digitalen Schloss verwenden: eine bestimmte Abfolge von Taster-Ereignissen (z.B. A-T-G) sollte einen Vorgang auslösen. Meine Frage ist: wie kann ich dies im IPS umsetzen? Ich denke, mit einem Skript, aber welche Funktionen/Befehle sind dazu geeignet? Ich kann mir vorstellen, dass „A“ einen Skript aufruft, welcher ein Ereignis „B“ aktiviert, usw. Das ist aber sehr unelegant und umständlich, und vermutlich auch fehleranfällig. Wie kann ich das besser machen?Vielen Dank im Voraus!

Eine wesentlich andere Möglichkeit wirst du nicht haben als der Reihe nach das jeweils nächste Ereignis freizuschalten.
Oder eine art kleine State Machine machen, kommt aber letztendlich aufs gleiche raus.
„C“ würde ich verwenden um um alles zurückzusetzen und mit der Eingabe von vorne zu beginnen.
Funk ist ja doch net so zuverlässig.

bb

1 „Gefällt mir“

vielleicht könnte jeder Taster eine Buchstabe hinzufügen zu einer String-Variable. Nach ein Paar Sekunde wird das gelöscht. Wenn die String-Variable einen Wert xyz erreicht, wird ein Ereignis ausgelöst. Macht das Sinn?

Kommen die Tastsignale alle über dieselbe Variable oder sind das unterschiedliche?
Je nachdem, könntest du entsprechend viele Ereignisse erstellen und dann einfach den vorherigen und aktuellen Wert der Variablen auf Einhaltung einer bestimmten Reihenfolge prüfen, ggf. in Kombination mit dem Zeitstempel der letzten Änderung, wenn du nicht willst, dass zwischen den einzelnen Tastvorgänge 5 Minuten liegen dürfen.

1 „Gefällt mir“

Ich würde das via Ablaufplan und einer Hilfsvariablen machen. Die Hilfsvariable gibt an, wie viele Stellen bereits korrekt eingegeben wurden. Im Ablaufplan hast du dann Bedingungen nach der Stelle. Dort prüfst du jeweils, ob die nächste Stelle korrekt ist. Wenn ja, zählst du die Stelle einen weiter, ansonsten setzt du sie auf 0. Pass nur mit der Reihenfolge der Bedingungen auf, da es bisher kein „sonst“ im „Wenn …, dann“ gibt, also zuerst die höchste Stelle und dann abwärts. Sonst rutscht du nach dem Händeln einer Stelle noch in die nächste rein.

Abschließend prüfst du, ob du bei der letzten Stelle angekommen bist und führst ggfs. aus, was du möchtest und setzt die Stelle zurück.

…mir gruselts…
Mit ein paar Zeilen Script ist so eine Statemachine aber deutlich robuster und vor allem lesbarer zu bauen.

bb

Haha, da treffen sie wieder aufeinander, die Verfechter der Skripte und die Liebhaber der Ablaufpläne. :wink:

Ich gehöre ja auch eher zu ersteren, aber beides hat seine Daseinsberechtigung und es ist gut, dass es beides gibt. :loveips:

1 „Gefällt mir“

… ok… mein Ansatz:

  • Hilfsvariable als Integer mit 4 definierten Werten, einen Wert pro Taste
    (der Tastendruck setzt den ‚für die Taste definierten Wert‘ in der Hilfsvariable)
  • zur Hilfsvariable ein ‚ActionScript‘… in das die State Machine reinkommt

und dann vorab mal modellieren was Abfolge und Timing anbetrifft… damit das dann auch in der StateMachine was wird…

homa