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
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.
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