[Twilight] - userReadings basiernd auf ss [gelöst]

Begonnen von Christian Uhlmann, 17 April 2016, 22:37:26

Vorheriges Thema - Nächstes Thema

Christian Uhlmann

Hallo zusammen,

ich möchte gerne ein eigenes Reading haben, welches den Inhalt von "ss" + 15 Minuten enthält.
Dafür habe ich folgendes Code verwendet, es kommt aber zu einem Fehler:

userReadings:
ss_individual { ReadingsVal("SYS.twilight","ss",0)+00:15:00;; }

Fehler:
Error evaluating SYS.twilight userReading ss_individual: syntax error at (eval 68877) line 1, near "00:"

Das ganze liegt vermutlich an meine geringen Perl Kentnissen bzw. der Unkentniss, wie ich zu dem Readings "ss" (welches Format ist das intern?) 15 Minuten hinzuzählen kann.
Habe auch schon mit time_str2num  experimentiert, aber zu keinem brauchbaren Ergebnis gekommen.

Kann mir da jemand weiterhelfen?


Danke und Grüße

Christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
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, ESPEasy, Sonoff mit Tasmota

Hans Franz

#1
ss_individual {
my ($h,$m,$s) = split(/:/,ReadingsVal("SYS.twilight","ss",""));
my ($mdate,undef) = split(/ /,ReadingsTimestamp("SYS.twilight","ss",""));
my ($y,$mo,$d) = split(/-/,$mdate);
my $d = DateTime->new(year=>$y, month=>$mo, day=>$d, hour=>$h, minute=>$m);
$d->add(minutes => 15);
return $d->hour.":".$d->minute}


Gibt bestimmt aber auch noch andere Möglichkeiten.

Gruß
Hans

Edit:
Falsche Berechnung korrigiert.
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Christian Uhlmann

Hallo Hans,

danke für die Hilfestellung, es klappt :).

Für alle, es kamen zwei Fehler, die ich wie folgt behoben habe:

  • Installation libdatetime-perl
  • use HTTP::Date; in die 99_myUtils.pm eingetragen
  • use DateTime; in die 99_myUtils.pm eingetragen
  • FHEM neugestartet

Mein Userreading sieht aber nun wie folgt aus, damit auch die Sekunden verwendet werden (und es sind doch nur 10 Minuten :)):
ss_individual {
my ($h,$m,$s) = split(/:/,ReadingsVal("SYS.twilight","ss",""));
my ($mdate,undef) = split(/ /,ReadingsTimestamp("SYS.twilight","ss",""));
my ($y,$mo,$d) = split(/-/,$mdate);
my $d = DateTime->new(year=>$y, month=>$mo, day=>$d, hour=>$h, minute=>$m + 10);
return $d->hour.":".$d->minute.":".$s}



Vielen Dank und Grüße

Christian

Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
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, ESPEasy, Sonoff mit Tasmota