Autor Thema: userReading timedOnTill für Homematic Lichtschalter  (Gelesen 148 mal)

Offline Christian Uhlmann

  • Full Member
  • ***
  • Beiträge: 183
userReading timedOnTill für Homematic Lichtschalter
« am: 21 September 2017, 22:54:07 »
Hallo zusammen,

da mich das schon lange gewurmt hat und ich nichts passendes gefunden habe, habe ich als Perl DAU mal ein userReadings für Homematic Lichtschalter gebaut, welches anzeigt, bis wann das Licht an sein wird.
Gesteuert wird das bei Homematic über die Register [sh|lg]OnTime, da ich nur shOnTime nutze, ist dieser Code auch nur dafür Zuständig.
Da bei mir auch alle Peers ein shOnTime gesetzt haben ist der Fall dass dieser nicht gesetzt ist nicht vorgesehen.

Bei mir schalten die Schalter selbst, als auch 2 Bewegungsmelder einige Lampen mit unterschiedlichen Zeiten an.
Das möchte ich gerne einsehen können, einen weiteren Zweck hat das ganze bisher nicht.

attr <device> userReadings timedOnTill {\
my $start = "R";;\
my $minus = "-";;\
my $register = "shOnTime";;\
my $device = ReadingsVal($NAME,"trigLast",undef);; \
$device = substr($device,0,index($device,':')-0);;\
my $reading = $start.$minus.$device.$minus.$register;;\
my $ontime = ReadingsVal($NAME,$reading,undef);;\
my $trigLast = ReadingsTimestamp($NAME,"trigLast",undef);;\
$ontime = ((split / /, $ontime)[0]);;\
my $return = time_str2num($trigLast) + $ontime;;\
FmtDateTime($return);;\
}

Als Reading kommt dann folgendes:
2017-09-21 22:52:47   timedOnTill     2017-09-21 23:07:47
um 22:52 wird das letzte mal der on Trigger gefeuert und dann wird für 900 Sekunden (15 Minuten) eingeschaltet.

Wer Verbesserungsvorschläge hat oder Fehler findet, immer her damit.
Vor allem, wie man das kürzer schreiben könnte, das geht sicher aber ich bin zu sehr Perl DAU dafür :)

Ansonsten viel Spaß damit wer es gebrauchen kann.


Grüße

Christian
Host: Debian Stretch als XEN Guest
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, CUL FS20, CUL HM, HMLan, HM-USB 2, JeeLink LaCrosse
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, FS20 und andere

Offline ComputerZOO

  • Full Member
  • ***
  • Beiträge: 124
Antw:userReading timedOnTill für Homematic Lichtschalter
« Antwort #1 am: 21 September 2017, 23:38:51 »
Moin,
ungetestet, aber das sollte eigentlich etwas kürzer sein und trotzdem funktionieren:
attr <device> userReadings timedOnTill {\
my $device = ReadingsVal($NAME,"trigLast",undef);; \
$device = substr($device,0,index($device,':')-0);;\
my $ontime = ReadingsVal($NAME,"R-".$device."-shOnTime",undef);;\
my $trigLast = ReadingsTimestamp($NAME,"trigLast",undef);;\
$ontime = ((split / /, $ontime)[0]);;\
my $return = time_str2num($trigLast) + $ontime;;\
FmtDateTime($return);;\
}

 

decade-submarginal