Hallo zusammen,
ich wurde von meintechblog.de inspieriert Geofences mit FHEM zu installieren.
https://www.meintechblog.de/2017/10/loxone-mit-anwesenheitserkenung-geofences-ueber-fhem-nutzen/
Hierzu benutze ich
define geofancy GEOFANCY geo
Bis vor der Zeitumstellung letzten Samstag/Sonntag war hat alles super funktioniert.
Nun nach der Zeitumstellung geht die Zeit aber um eine Stunde nach.
FHEM und Loxone haben beide Seiten jedoch die Sommer/Winterzeit richtig umgestellt.
Mit folgendem Code in der Datei 99_myUtils.pm werden dann die relevanten Daten an Loxone per UDP übergeben:
#AnwesenheitToLoxone
sub ResidentToLoxone ($)
{
my ($device) = @_;
my $state = ReadingsVal("$device","state","-1");
if ($state eq "absent") {
$state = "0";
}
if ($state eq "home") {
$state = "1";
}
my $arrival=time_str2num(ReadingsVal("$device","lastArrival","-1"));
my $departure=time_str2num(ReadingsVal("$device","lastDeparture","-1"));
my $wayhome=ReadingsVal("$device","wayhome","-1");
UDP_Msg("192.168.178.245" , "7200" , "$device: $state $arrival $departure $wayhome");
}
Nun meine Frage:
Kann es sein, dass man mit ReadingsVal der Human-Readable Visu-String - ohne Zeitzonenbereinigung - in epoch umgerechnet? Der Visu-String ist Lokalzeit, nicht epoch UTC. Somit rechnest das Skript mit FHEM-Lokalzeit, und vermutlich macht Loxone auch nochmal Lokalzeit-Umrechnung? - oder?
Ich hab keine Ahnung! :o
Was muss ich für einen Befehl anstatt "ReadingsVal" wählen um die "richtige Zeit" im Sommer und Winter an Loxone zu übergeben?
Ich freue mich sehr auf Euer Feedback.
VG
Logol01
Wenn die mobile App eine Zeit mit überträgt, wird diese Zeit übernommen. Ggf. ist die Zeit auf dem Gerät falsch
Hallo,
die mobile App ist Geofency auf iPhone. Die Zeit auf dem Gerät stimmt.
Die Zeit wird auch richtig im FHEM Geo Modul angezeigt.
Die Frage von mir ist, wird mit dem Wert "ReadingsVal" die Zeit inkl. Zeitzonen Korrektur übertragen? Sprich eine Stunde weniger in Winterzeit und entsprechend Sommerzeit eine Stunde mehr?
Das Problem entsteht für mich - welcher Wert an Loxone mit dem Skript übertragen wird.
ReadingsVal() gibt die Zeit als Textstring so wieder, wie er drin steht. Es handelt sich also um die lokale Zeit deines Rechners, auf dem FHEM läuft.