Mittwoch, 19. August 2015

Zeitschalter mit Homematic Aktoren

Hier wird gezeigt wie man die Reaktion von internen Tasten an Homematic Aktoren am Beispiel einer Zeitschaltung beeinflussen kann. Eine normale Zeitschaltung innerhalb von FHEM sollte einfacher mit dem on-for-timer erfolgen!

Zustände

Die Homematic Aktoren (Schalter) schalten so wie es der verknüpfte (peering) Sender vorgibt. Sie haben dazu Registersätze die für jede Verknüpfung (peer) neu angelegt und gespeichert werden. Man kann also mit einem Taster ein und aus schalten. Mit einem anderen Taster eine Zeitschaltung für 10 sec starten. Dabei wird nicht der Taster oder der Schalter auf "Zeitschalter" programmiert, sondern die Verknüpfung Taster mit Schalter wird im Schalter entsprechend gespeichert. Der Schalter macht dabei dann das, was der letzte Tastendruck als Aktion hinterlegt hat. Kleines Beispiel:
 T1 schaltet S1 für 10 sec an  
 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.

Tasten sichtbar machen

Jeder Schalter hat interne oder eigene Tasten. Die Steckdose z.B. den Knopf der als Toggle funktioniert. Der Lichtschalter für Markensystem hat einen EIN und einen AUS Knopf.

Die internen Tasten kann man in FHEM sichtbar machen:
 set <device> regSet intKeyVisib visib  
 attr <device> expert 1  

normalerweise sieht man nach kurzer Wartezeit und Aktualiserung der Oberfläche jetzt die internen Register. Eventuell muss man noch die Register abholen:
 set <device> getConfig  

Zeitschalter direkt

Um z.b. eine Steckdose für 10 sec bei Knopfdruck lokal einzuschalten kann man folgendes programmieren:
 set <device> regSet shOnTime 10 self01  

shOnTime ist dabei das zuständige Register für kurzen (sh=short) Tastendruck. Es gibt auch Register für langen Tastendruck lg=long. Eine kurze Beschreibung der Register erhält man durch:
 get <device> regList  

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 übrigens 111600 und bedeutet unendlich. 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  

Tastendruck simulieren
Das geht mit
 set <device> press short self01  

Kurz oder lang

Die internen Taster sind oft als Toggle und config Taster ausgelegt. Ein langer Tastendruck (4 sec) versetzt den Schalter in den config/Anlern Modus. Damit scheint es so zu sein, das bei diesen Schaltern kein long press von außen vorgesehen ist, obwohl die Register existieren und man lang press auch simulieren kann.

Praktisches Beispiel: Pool für eine Stunde schalten

Ich habe einen HM-LC-SW4-DR und der channel_01 schaltet die Poolzirkulationspumpe. Dies passiert Zeit gesteuert 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 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.

2 Kommentare:

  1. Moin Otto,

    das setzen der interna ist interessant.
    Ich hab ein Thermostat mit dem HM-LC-SW4-DR gepeert und beide ( Thermostat + hutschienenrelai ) mit fhem gepairt.

    Was passiert denn, wenn ich nun den timer setze, am relai/oder in fhem "drauf drücke" mit dem Signal der thermostats ?
    Dies wird ja dann merken, eigentlich soll das Relai aus sein.
    Schaltet er mir das relai aus?

    AntwortenLöschen
    Antworten
    1. Die Frage sehe ich leider erst jetzt. Ich antworte trotzdem noch...
      Die Aktoren halten Registersätze pro Peer, mein Beispiel ändert das Verhalten das lokalen Knopfes sonst nichts.
      Die Betätigung des Aktors ist aber von allen Seiten relativ gleichberechtigt, d.h. ein On von FHEM wird die Zeitsteuerung über shOnTime übersteuern.
      Mit inhibit kann man die lokale Bedienung unterbinden.

      Löschen