Habe mir einen Homematic Handsender zugelegt.
Dieser sendet wie jeder Taster bei einem kurzen Tastendruck:
HANDSENDER_TASTE4 Short (to VCCU)
Dieser sendet wie jeder Taster bei einem Langen Tastendruck:
HANDSENDER_TASTE4 LongRelease 9_19 (to VCCU)
Beim Langen Tastendruck wird die Dauer desselben mitgesendet hier 9sec.
Kann man das irgendwie nutzen um die Beleuchtungsdauer zu setzen.
Quasi Lange gedrückt 5 => of-for-timer (5*60)sec = 5 Minuten Beleuchtung an ?
Bisher:
#WEGBELEUCHGUNG
define NOTIFY_HANDSENDER_TASTE4_SHORT notify HANDSENDER_TASTE4:Short.* set GARTEN_WEG_BELEUCHTUNG on-for-timer 150
attr NOTIFY_HANDSENDER_TASTE4_SHORT room _HANDSENDER
define NOTIFY_HANDSENDER_TASTE4_LONG notify HANDSENDER_TASTE4:Long.* set GARTEN_WEG_BELEUCHTUNG on-for-timer 300
attr NOTIFY_HANDSENDER_TASTE4_LONG room _HANDSENDER
So nach einigem Probieren bin ich nun selbst drauf gekommen.
Wer es nachbauen möchte nachfolgend die Lösung...
Funktion:
Kurzer Tastendruck = Lampe aus
Langer Tastendruck = Lampe entsprechend der Dauer des Tastendrucks an
Hier der Code aus der fhem.cfg
define NOTIFY_HANDSENDER_TASTE4_SHORT notify HANDSENDER_TASTE4:Short.* set GARTEN_WEG_BELEUCHTUNG off
attr NOTIFY_HANDSENDER_TASTE4_SHORT room _HANDSENDER
define NOTIFY_HANDSENDER_TASTE4_LONG notify HANDSENDER_TASTE4:LongRelease.* {myUtils_TasteLongPress($NAME,"GARTEN_WEG_BELEUCHTUNG");; }
attr NOTIFY_HANDSENDER_TASTE4_LONG room _HANDSENDER
Erklärung:
$NAME übergibt den Devicenamen HANDSENDER_TASTE4 an die Funktion.
GARTEN_WEG_BELEUCHTUNG ist die zu schaltende Lampe
Hier der Code aus der 99_myUtils.pm
sub
myUtils_TasteLongPress($$)
{
my($TasterDevice,$OnTimeDevice) = @_;
my $PressDeviceState = ReadingsVal($TasterDevice,"state","0");
my($OnTime) = $PressDeviceState =~ /(\d+)/;
$OnTime = int($OnTime * 17);
fhem("set $OnTimeDevice on-for-timer $OnTime");
}
Erklärung:
$PressDeviceState schreibt den State aus dem übergebenen $DEVICE in die Variable, Ersatzwert = 0.
Die Reguläre Expression filtert aus dem String "LongRelease 9_19 (to VCCU)" den ersten vorkommenden reinen numerischen Wert heraus also hier "9".
In $OnTime gibt es den Faktor 17 diesen habe ich eingeführt da die Fernbedienung in einer Sekunde nicht nur um eins hochzählt sondern mehrere Counts liefert.
Ermittelt wurde der so -> Taste 10 Sec gedrückt halten -> 600 sec durch den im LongPress angezeigten Wert teilen -> Ergebnis eintragen.