HomeMatic Register programmieren: Unterschied zwischen den Versionen
K (→Kamine und Ventilation - nur bei offenem Fenster!: anderes Beispiel) |
|||
Zeile 119: | Zeile 119: | ||
=== Es werde Licht! Automatisches Licht mit Tor oder Tür === | === Es werde Licht! Automatisches Licht mit Tor oder Tür === | ||
Im Kühlschrank geht das Licht ja schon praktischerweise automatisch an und aus, aber es gibt auch andere Situationen, in denen ein automatisches Licht sehr nützlich sein kann - in dunklen Abstellräumen oder Garagen. Vor allem weil man nicht vergessen kann es auszuschalten, weil es auch von allein ausgeht. Eine solche Funktion, so könnte man meinen, wird ganz einfach erreicht, indem man das Licht mit einem Aktor schalten lässt und diesen mit einem Tür- oder Fensterkontakt verknüpft. Hat man die beiden dann mit ''peerChan'' verknüpft, so wird man feststellen, dass das Licht mitnichten das Gewünschte tut: | Im Kühlschrank geht das Licht ja schon praktischerweise automatisch an und aus, aber es gibt auch andere Situationen, in denen ein automatisches Licht sehr nützlich sein kann - in dunklen Abstellräumen oder Garagen. Vor allem weil man nicht vergessen kann es auszuschalten, weil es auch von allein ausgeht. Eine solche Funktion, so könnte man meinen, wird ganz einfach erreicht, indem man das Licht mit einem Aktor schalten lässt und diesen mit einem Tür- oder Fensterkontakt verknüpft. Hat man die beiden dann mit ''peerChan'' verknüpft, so wird man feststellen, dass das Licht mitnichten das Gewünschte tut: es schaltet sich beim Öffnen der Tür abwechselnd ein und aus und ignoriert das Schließen der Tür komplett. | ||
Verantwortlich für dieses "Fehlverhalten" sind die Register ''shCtOn'' und ''shCtOff''. Beide stehen nach der Verknüpfung auf "geLo". Wie bei den Registern oben erläutert, führt in diesem Fall nur die "offen"-Meldung des Türkontaktes zu einer Aktion. Das Öffnen der Tür soll den Aktor einschalten, das klappt. Das Schließen der Tür soll den eingeschalteten Aktor aber ausschalten. Also muss die Schaltbedingung im On-Zustand geändert werden (die Bezeichnungen natürlich durch die realen Namen des Schaltaktorkanals und des Türkontaktes ersetzen): | Verantwortlich für dieses "Fehlverhalten" sind die Register ''shCtOn'' und ''shCtOff''. Beide stehen nach der Verknüpfung auf "geLo". Wie bei den Registern oben erläutert, führt in diesem Fall nur die "offen"-Meldung des Türkontaktes zu einer Aktion. Das Öffnen der Tür soll den Aktor einschalten, das klappt. Das Schließen der Tür soll den eingeschalteten Aktor aber ausschalten. Also muss die Schaltbedingung im On-Zustand geändert werden (die Bezeichnungen natürlich durch die realen Namen des Schaltaktorkanals und des Türkontaktes ersetzen): |
Version vom 21. Oktober 2017, 11:20 Uhr
An dieser Seite wird momentan noch gearbeitet. |
Ein HomeMatic-Gerät besitzt mehr oder weniger umfangreiche Registersätze, mit denen das Verhalten des Gerätes vielfältig feinkonfiguriert werden kann. Die damit erreichbare Funktionsvielfalt geht weit über die standardisierten Vorgaben einer einfachen Direktverknüpfung (Peering) hinaus.
Grundlagen (in Auszügen)
Im folgenden werden nur exemplarisch einige Grundlagen und einfache Beispiele benannt, ohne jeden Anspruch auf Vollständigkeit.
FHEM unterstützt die Programmierung der Register mit dem Befehl regSet. <peer> entfällt bei rein gerätebezogenen Programmierungen.
set <name> regSet <register> <value> [<peer>]
Darüberhinaus gibt es vor- oder selbstdefinierte Templates (Vorlagen), die alle erforderlichen Änderungen für standardisierte Anwendungen wie Treppenhauslichtschalter beinhalten. Die Anwendung von Templates auf Geräte wird protokolliert und der Registerzustand kann überprüft werden. Für viele Anwendungen genügt jedoch auch die einmalige Anwendung einer direkten Programmierung. Das genaue Verständnis der Vorgänge und Zusammenhänge ist nicht trivial, das Erlernen wird aber mit einer enormen erreichbaren Funktionsvielfalt belohnt. Viele wissenswerte Zusammenhänge sind im Homematic-Anhang der bekannten Einsteiger-Dokumentation erläutert, deren Lektüre zu Recht immer wieder empfohlen wird. Dieser Beitrag ist auch nur als Ergänzung zu verstehen!
Die HomeMatic Aktoren (Schalter, Dimmer, ...) arbeiten so, wie es für verknüpften (peering) Sender vorgegeben ist. Sie nutzen Registersätze, die für jede Verknüpfung (peer) neu angelegt und gespeichert werden. Man kann also mit einem Taster ein- und ausschalten (toggeln), mit einem Tastenpaar gezielt ein- und ausschalten und mit einem weiteren Taster eine Zeitschaltung für 10 Sekunden starten. Dabei wird niemals der Taster oder der Schalter auf eine globale Aktion programmiert, sondern im Schalter (Aktor) die gewünschte Aktion für jeden verknüpften Taster separat gespeichert. Die auszulösende Aktion ist zudem abhängig vom aktuellen Zustand des Aktors und von der Länge des Tastendruckes (kurz oder länger - short or long).
Kleines Beispiel:
T1 schaltet S1 für 10 sec an T2 schaltet S1 an oder aus T3 schaltet S1 an T4 schaltet S1 aus.
Diese Tabelle ist im Schalter S1 gespeichert.
Schaltet man mit T3 den S1 an und drückt dann nach beliebiger Zeit kurz T1 geht S1 nach weiteren 10 sec aus. Schaltet man mit T1 kurz den S1 für 10 sec an, aber innerhalb dieser Zeit mit T3 nochmal an, dann bleibt S1 nach Ablauf der 10 sec an.
Die verfügbaren Register unterscheiden sich im Gerät und in den jeweiligen Kanälen. Eine kurze Beschreibung der Register inklusive der erlaubten Werte erhält man durch:
get <name> regList
Dabei kann <name> ein Gerät oder ein separater Gerätekanal sein.
Spezielle Register (Auswahl)
Im folgenden sollen einige Register vorgestellt werden, die in vielen Geräten vorhanden sind. Ergänzungen sind ausdrücklich erwünscht!
Gerätebezogene Register
Gerätebezogene Register existieren für jedes HomeMatic-Gerät nur einmal und werden in der sogenannten List0 gespeichert (in der FHEM-Oberfläche als Hexbytefolge unter RegL_00. zu finden).
confBtnTime - Kurz oder lang und der Konfigurationsmodus
Nicht immer sind die internen Tasten eines Gerätes ohne weiteres mit Aktionen für kurzen und langen Tastendruck programmierbar. Bei allen Hutschienen-Aktoren sowie den Zwischensteckern (mit nur einem Bedienknopf) versetzt ein langer Tastendruck (4 Sekunden) den Schalter normalerweise in den Konfigurations- bzw. Anlern-Modus, bei den in Unterputzdosen versenkbaren Schalt- und Dimmaktoren (-FM ohne PBU in der Bezeichnung) ohne eigenen Konfigurations-Button gilt dies sogar für die zur normalen Funktion extern angeschlossenen Taster. Dieses Verhalten kann man mit dem Register confBtnTime beeinflussen. Bis zum Ablauf der dort einstellbaren Zeit (in Minuten) nach dem Versorgen mit Strom (powerUp) erreicht man den Konfigurationsmodus wie bisher, danach interpretiert der Aktor die Tastendrücke stets als kurz (short) oder lang (long). Beispiel:
set <name> regSet confBtnTime 2
Möchte man den Aktor später zurücksetzen oder lokal konfigurieren, so erreicht man das ursprüngliche Verhalten in diesem Beispiel für die ersten zwei Minuten, nachdem man den Aktor (ausreichend lange) stromlos gemacht hat.
intKeyVisib - Interne Tasten sichtbar machen
Die internen "Tasten" eines Aktors (z.B. die Schaltwippe bei Wandschaltern/-tastern, der Bedienknopf bei Zwischensteckern, aber auch die angeschlossenen externen Taster bei Aktoren für Unterputzdosen oder die von außen zugängliche "Notbedientaste" etwa bei Zwischendecken-Dimmern) sind logisch ebenso mit dem Aktor verknüpft wie externe Bedienelemente wie Funkfernbedienungen oder per Funk verknüpfte Wandtaster. Ihre Betätigung wird (außer mit präparierter Firmware) zwar nicht gesendet (und kann daher von FHEM nicht "gelesen" werden), die vom Hersteller vorgesehenen Funktionen lassen sich aber genauso frei programmieren. Allerdings sind diese internen Verknüpfungen zur Vermeidung versehentlicher Programmierungen zunächst verborgen und müssen daher explizit sichtbar gemacht werden.
Dies geschieht mit
set <name> regSet intKeyVisib visib attr <name> expert 1
Anschließend sind der oder die internen Taste(n) mit der Bezeichnung self01 (self02, ...) sichtbar und ihre Aktionen können gezielt umprogrammiert werden.
ledMode - Funktion der Onboard-LED bei Bausätzen
(wird ergänzt)
Kanalbezogene Register
Kanalbezogene Register existieren für jeden Kanal eines Gerätes einmal und werden in der sogenannten List1 gespeichert (in der FHEM-Oberfläche als Hexbytefolge unter RegL_01. zu finden).
powerUpAction - Automatischer Knopfdruck bei (wiederkehrender) Stromversorgung
Mit diesem Register (default off) kann erreicht werden, dass ein Schaltaktor nach einem Stromausfall sich bei Wiederkehr der Versorgungsspannung automatisch einschaltet. Dies ist z.B. sinnvoll für Zwischenstecker mit Messfunktion (HM-ES-PMSw1-Pl), wenn dieser als Langzeitmonitor etwa für Kühlgeräte verwendet wird - nach einem Stromausfall bliebe der Kühlschrank sonst aus und der Inhalt würde verderben.
set <name> regSet powerUpAction on
Achtung: Das Setzen dieses Registers auf on bedeutet nicht immer einen eingeschalteten Aktor nach der Wiederkehr der Stromversorgung. Vielmehr wird nur ein short-Ereignis auf den zugehörigen internen Taster ausgelöst, was nur im Normalfall zum Einschalten des Aktors führt - nicht aber wenn die Funktion dieses kurzen Tastendruckes gezielt verändert wurde, denn dann wird eben diese Aktion ausgeführt! Das gilt zum Beispiel auch für zeitlich begrenztes Einschalten. Als Alternative für eine lokale Schaltmöglichkeit bietet sich in solchen Fällen der lange Tastendruck an, sofern er vom Aktor unterstützt wird (so lässt sich die Einschaltzeit bei langem Tastendruck mit lgOnTime begrenzen). Dessen Aktion wird bei powerUp nicht ausgeführt.
Verknüpfungsbezogene Register
Diese Register sind am umfangreichsten und werden für jeden Verknüpfungspartner einzeln separat angelegt in der List3 (RegL_03.<peer>). Die grundsätzlichen Funktionen und ihre Zusammenhänge sind ausführlich in der Einsteigerdokumentation erklärt, inklusive Skizzen für die sogenannte state machine. Hier sollen daher nur die in den folgenden Beispielen verwendeten Register erklärt werden.
shOnTime und lgOnTime - das interne on-for-timer von Schaltern oder Dimmern
Das wohl populärste Register begrenzt die Einschaltzeit eines Aktors. Um z.B. eine Steckdose für 10 sec bei Knopfdruck lokal einzuschalten kann man folgendes programmieren:
set <name> regSet shOnTime 10 self01
shOnTime ist dabei das zuständige Register für die Einschaltzeit bei kurzem (sh=short) Tastendruck, entsprechend gilt lgOnTime für einen langen Tastendruck.
In den Readings werden die Register mit dem jeweiligen verknüpften Taster angezeigt, in unserem Fall also:
R-self01-shOnTime
Der Defaultwert für shOnTime ist 111600 und bedeutet unendlich (von FHEM mit "unused" dargestellt), d.h. die maximale einstellbare Zeit ist 111599 sec (knapp 31 Stunden). So kann man die Zeit löschen:
set <device> regSet shOnTime 111600 self01
oder
set <device> regSet shOnTime unused self01
shCtOn und shCtOff - Bedingtes Schalten mit Schwellwerten
Fernbedienungen (im weitesten Sinne, remote) von HomeMatic übermitteln je nach Betätigungsdauer short- oder long-Trigger. Zustandsübermittelnde Sensoren (etwa ein Fensterkontakt oder Neigungssensor sowie Bewegungsmelder) senden ausschließlich short, gekoppelt mit einem Wert zwischen 0 und 200, entsprechend 0-100% in 0,5-%-Schritten. Ob ein solcher Trigger vom Aktor verarbeitet wird, kann vom gesendeten Wert abhängen.
HomeMatic kennt dazu (für jeden Peer und Triggertyp (short/long) separat) zwei Schaltschwellen Lo und Hi, die default bei 50 und 100 liegen. Ob ein Trigger in Relation zu diesen Schwellen verarbeitet wird, regeln u.a. die shCtxxx-Register. Wie auch bei den allgemeinen Schaltbedingungen stehen On und Off jeweils für den aktuellen Schaltzustand (nicht den, der erreicht werden soll). Ihr Wert beträgt default "geLo" (greater or equal Lo), hier 50 und höher. Trigger für Werte darunter werden bei der Einstellung "ltLo" (less than Lo) verarbeitet. Diese Schwellen gibt es entsprechend auch für den Hi-Wert, also "geHi" oder "ltHi". Besonders interessant sind aber auch die Werte "outside" und "between", bezogen auf die beiden Schwellen Lo und Hi. In letzterem Fall wird der Trigger verarbeitet, wenn der Wert zwischen 50 und 100 liegt, bei "outside" entsprechend bei 0-49 oder 101-200.
Sogenannte Three-State-Sensoren wie Fensterkontakt- oder -griffsensoren senden 0 für "closed" (geschlossen), 100 für "tilted" (gekippt) und 200 für "open" (offen). Gleiches gilt für Schalterkontaktinterfaces, die den Zustand eines angeschlossenen Schaltkontaktes übermitteln. Im Grundzustand (Auswahlbedingung auf "geLo") führt daher nur der Trigger "offen" (200) zu einer Aktion. Ändert man die Auswahlbedingung auf "ltLo", so wird lediglich "closed" ausgewertet, bei "between" ist es "tilted". Mit "outside" führt sowohl "closed" als auch "open" zu einer Aktion.
Bei Bewegungsmeldern wird der mit übermittelte Helligkeitswert im Zusammenhang mit den (dann variabel einzustellenden) Schwellen als Kriterium für das Einschalten des Aktors mit herangezogen.
shSwJtOn & Co. - Was soll passieren?
Nachdem wir nun kennengelernt haben, wie man auswählt, welcher Anstoss von außen zu einer Aktion führt, hier ein kleiner Exkurs in die Beeinflussung, was daraufhin passieren soll. Diese Frage regelt die jump table und liefert damit das Regelwerk für die Abfolge der Aktionen, die state machine. Ein HomeMatic-Aktor geht nämlich keineswegs einfach nur an oder aus. Vielmehr hangelt er sich nacheinander an einer Reihe von Zuständen entlang - auch das ist in der Einsteigerdokumentation erschöpfend beschrieben und soll hier nicht wiederholt werden. Ein Schalter durchläuft aber mindestens die Zustände
Aus > Einschaltverzögerung > Ein > Ausschaltverzögerung > Aus > (usw)
Hier soll reichen, dass am Ende jeder (Teil-)Kette in der Regel ein dauerstabiler Zustand bleibt, in der Regel ist das der Aus-Zustand und auch der Ein-Zustand, wenn dessen Laufzeit nicht durch shOnTime & Co. begrenzt ist. Ein- und Ausschaltverzögerung sind aber in der Regel 0 (Sekunden), so dass effektiv nur "Ein" und "Aus" übrig bleiben.
Das Register shSwJtOn regelt, wohin die Reise geht, wenn ein gültiger short-Trigger im eingeschalteten Zustand eintrifft, sinngemäß ...Off im Auszustand und lg... für die long-Trigger. Für shSwJtOn ist normalerweise als nächstes die Ausschaltverzögerung "dlyOff" vorgesehen. Da die Ausschaltverzögerung in der Regel 0 ist, folgt darauf, in shSwJtDly festgelegt, "off" usw. Die Zustände bilden so quasi einen Kreis, dessen Durchlauf von außen gelegentlich "angeschubst" wird. Mit diesen Registern kann man den Kreislauf aber auch umbiegen oder sogar unterbrechen, so dass ein eintreffender Trigger eben nicht zu einer Aktion führt. Als Ziele bieten sich, quasi selbstsprechend, "on", "dlyOff", "off" und "dlyOn" an - oder eben "no", was nichts anderes bedeutet, als dass der betreffende Trigger an dieser Stelle zu keiner Aktion führt.
Bei einem Dimmer heißen die Register statt ..Sw.... nur ..Dim.... und es gibt ein paar mehr Bedingungen - die Funktion ist aber entsprechend gleich.
(wird ergänzt)
Praktische Beispiele
Die folgenden Beispiele beschreiben nur in Kurzform die erforderlichen Aktionen. Weiterführende Informationen sind der Einsteigerdokumentation oder den o.g. Registerbeschreibungen zu entnehmen. Übrigens: ein einmal konfigurierter Vorgang für eine Verknüpfung kann aus FHEM auch bequem fernausgelöst (bzw. simuliert) werden. Der Aktor führt dabei genau die Aktion aus, die für die benannte Verknüpfung vorgesehen ist. Der kurze Knopfdruck auf den internen Knopf eines Aktors wird beispielsweise so simuliert:
set <device> press short self01
Lokal bedienbarer Zeitschalter mit HomeMatic Aktoren: Pool für eine Stunde schalten
Ich habe einen HM-LC-SW4-DR und der channel_01 schaltet die Poolzirkulationspumpe. Dies passiert zeitgesteuert zweimal am Tag. Manchmal möchte ich im Keller diese Pumpe einfach für eine Stunde aktivieren, der Aktor ist bequem erreichbar an der Wand. Die internen Tasten vom Hauptdevice (der Aktor hat vier Kanäle (channel), die in FHEM einzeln dargestellt werden) sichtbar machen:
set LichtKeSW1 regSet intKeyVisib visib attr LichtKeSW1 expert 1
Jetzt sieht man im Channel 01 - LichtKeSW1_Sw01 den internen peer self01. (Channel 02 ist self02 usw.) Also jetzt einfach die Zeit eintragen:
set LichtKeSW1 regSet shOnTime 3600 self01
Die Toggle Funktion der Taste bleibt erhalten. Ein zweiter Tastendruck schaltet die Pumpe auch sofort wieder aus. Während die Zeit läuft, blinkt die Status LED des Kanals. Die Zeitbegrenzung funktioniert in diesem Beispiel ohne jedes Zutun von FHEM und damit auch bei einem Ausfall des Servers.
Es werde Licht! Automatisches Licht mit Tor oder Tür
Im Kühlschrank geht das Licht ja schon praktischerweise automatisch an und aus, aber es gibt auch andere Situationen, in denen ein automatisches Licht sehr nützlich sein kann - in dunklen Abstellräumen oder Garagen. Vor allem weil man nicht vergessen kann es auszuschalten, weil es auch von allein ausgeht. Eine solche Funktion, so könnte man meinen, wird ganz einfach erreicht, indem man das Licht mit einem Aktor schalten lässt und diesen mit einem Tür- oder Fensterkontakt verknüpft. Hat man die beiden dann mit peerChan verknüpft, so wird man feststellen, dass das Licht mitnichten das Gewünschte tut: es schaltet sich beim Öffnen der Tür abwechselnd ein und aus und ignoriert das Schließen der Tür komplett.
Verantwortlich für dieses "Fehlverhalten" sind die Register shCtOn und shCtOff. Beide stehen nach der Verknüpfung auf "geLo". Wie bei den Registern oben erläutert, führt in diesem Fall nur die "offen"-Meldung des Türkontaktes zu einer Aktion. Das Öffnen der Tür soll den Aktor einschalten, das klappt. Das Schließen der Tür soll den eingeschalteten Aktor aber ausschalten. Also muss die Schaltbedingung im On-Zustand geändert werden (die Bezeichnungen natürlich durch die realen Namen des Schaltaktorkanals und des Türkontaktes ersetzen):
set <Schalter> regSet shCtOn ltLo <Türkontakt>
Nun führt auch das Schließen der Tür wunschgemäß stets zu einem Abschalten des Lichts. shCtOff muss auf "geLo" bleiben!
Kombinieren ließe sich das noch mit einer Laufzeitbegrenzung etwa für eine Stunde - sollte man die Tür versehentlich offenlassen, so brennt das Licht nicht stundenlang. Vor allem geht das Licht dann auch aus, wenn aus welchem Grund auch immer die Schließmeldung verloren geht.
set <Schalter> regSet shOnTime 3600 <Türkontakt>
Lampe mit Kippschalter(n) fernschalten - eindeutig oder als Wechselschaltung
Oft besteht der Wunsch, eine Lampe mit einem herkömmlichen Schalter (statt eines Tasters) fernzuschalten. So kann man einen herkömmlichen Schalter mit einer Schließerkontaktinterface wie dem HM-SCI-3-FM ergänzen (oder einem Kanal des 8-Kanal-Sendemoduls in der Betriebsart sensor) und wiederum die Verknüpfung mit dem Lampen-Aktor setzen. Ganz ähnlich wie bei der vorgenannten Kaminaufgabe führt nun aber das Schließen des Schalters nicht zu einem Einschalten. Daher ist nun
set <Lampenaktor> regSet shCtOff ltLo <Sensorkontakt>
das Mittel der Wahl, shCtOn muss dieses Mal auf "geLo" bleiben. Jetzt folgt der Aktor dem (sichtbaren) Schaltzustand des Schaltes - zumindest solange er nicht anderweitig ein- oder ausgeschaltet wird.
Nun kann man auch mehrere Schalter so mit der Lampe koppeln. Das ergibt aber keine Wechselschaltung im herkömmlichen Sinn - um eine Lampe ein- oder auszuschalten, muss man den Schalter möglicherweise einmal zusätzlich auf die aktuelle Schaltposition kippen, ehe die nächste Betätigung den gewünschten Effekt bringt. Für Wechselschaltungen bietet sich daher das Kontaktinterface HM-Swi-3-FM (oder das erwähnte 8-Kanal-Sendemodul in der Betriebsart switch) an. Hier führt jede Zustandsänderung zu einem Schaltvorgang.
Hat man hingegen nur ein HM-SCI-3-FM zur Hand, lässt sich dieses Verhalten auch erreichen:
set <Lampenaktor> regSet shCtOn outside <Sensorkontakt>
set <Lampenaktor> regSet shCtOff outside <Sensorkontakt>
Gezieltes Schalten eines (unsichtbaren) Aktors mit nur einer Taste
Für so etwas braucht man gewöhnlich zwei Tasten. Koppelt man einen Schalt-Aktor mit nur einer Taste ("single" beim peerChan-Kommando), so führt sowohl ein kurzer als auch ein langer Tastendruck immer nur zu einem Umschalten des Zustandes. Das ist unschön, wenn man den aktuellen Zustand nicht einsehen kann.
Üblicherweise sind die Schaltabfolgen für eine Eintasten-Verknüpfung sowohl für kurze als auch lange Betätigungen gleich (bei Dimmern wird auf langen Tastendruck hingegen abwechselnd auf- oder abgedimmt).
shSwJtOff = dlyOn # Ist Gerät aus, wird Einschaltverzögerung gewählt (die aber normal 0 ist) lgSwJtOff = dlyOn # dito, für lang shSwJtOn = dlyOff # Ist Gerät an, wird Ausschaltverzögerung gewählt (die aber normal 0 ist) lgSwJtOn = dlyOff # dito, für lang
Hier kann man sich zunutze machen, dass man mit einem gezielten "no" oder "dlyOn" bzw. "dlyOff" im richtigen Register die Schaltfolge abbrechen oder umbiegen kann. Möchte man das Gerät <aktor> mit einem kurzen Tastendruck auf <button> ein- und mit einem langen Tastendruck ausschalten, so ändere man:
set <aktor> regSet shSwJtOn dlyOn <button>
set <aktor> regSet lgSwJtOff dlyOff <button>
So laufen die entsprechenden Aktionen quasi ins Leere, wenn der Aktor bereits den gewünschten Zustand hat.
Den umgekehrten Effekt (lang schaltet ein, kurz aus) erreicht man entsprechend mit
set <aktor> regSet shSwJtOff dlyOff <button>
set <aktor> regSet lgSwJtOn dlyOn <button>
Welche Bedienhaptik man nun bevorzugt, muss man selbst entscheiden. In der Regel sollte die normale (sichere) Aktion "kurz" und die gefährlichere "lang" sein - eine PC-Stromversorgung mit einem kurzen Tastendruck versehentlich einzuschalten ist bestimmt besser als auszuschalten (das dann eben nur über lang) - für ein potentiell gefährliches Arbeitsgerät wie einen Heizofen wird es sicher andersherum sein.
Sinngemäß verwendet der Autor sozusagen eine Hälfte davon als "Sicherheitsaktion" für einen HM-LC-Sw2PB-FM Schaltaktor mit Tasteraufsatz 2fach - der gewöhnliche Tastendruck auf die zugehörige Wippenseite schaltet den Aktor abwechselnd ein und aus, ein langer Tastendruck immer aus, dafür reicht:
set <aktor> regSet lgSwJtOff dlyOff <button>
Übrigens: Nichts anderes wird normalerweise auch automatisch beim Verknüpfen eines Aktors mit einem Tastenpaar an der entsprechenden Stelle gemacht - ist eine Taste nur zum Ausschalten gedacht, so wird in beiden Schaltzuständen entsprechend "dlyOff" eingetragen. Als "Sprungziel" müsste aber genauso gut auch "no" funkionieren.