Max: Thermostate laufen in UTC und nicht lokaler Zeit

Ich habe das Problem, dass meine Max-Thermostate offensichtlich alle auf UTC laufen, obwohl das Admin-UI korrekt die lokale Zeit anzeigt. Erkennbar ist das am Wandthermostat mit Uhrzeitanzeige, aber insgesamt bringt das natürlich die Heizprogramme durcheinander.

Letzten Winter hatte ich Homegear noch “nativ”, da war das Problem nicht da. Seit einiger Zeit habe ich auf Docker umgestellt, und ziehe mir in unregelmäßigen Abständen das Nightly-Image. Da die Heizperiode gerade erst beginnt, weiß ich nicht, seit wann das Problem auftritt, und ob es mit Homegear oder mit Docker zusammenhängt.

Im Docker-Compose-File setze ich sowohl die Environment-Variable TZ, und ich verwende /etc/localtime und /etc/timezone vom Host-System. Wie gesagt, im AdminUI stimmt auch alles, nur die Thermostate laufen auf UTC.

Was kann ich gegen das Problem unternehmen?

Ich möchte das noch mal nach oben schieben, da die Heizperiode naht ;-).
Ich habe jetzt verschiedene Varianten durchprobiert bzgl. der Einbindung von /etc/localtime und /etc/timezone in den Docker-Container. Da das alles nichts bringt, mache ich es jetzt wieder wie in der Anleitung beschrieben und setze für den Container nur die TZ-Environment-Variable.
Ich habe auch die aktuelleste Nightly installiert.

Wie kommt es, dass die Max-Thermostate ihr Heizprogramm in UTC und nicht in Lokalzeit fahren, wenn scheinbar die Zeitzone im Docker-Container völlig korrekt gesetzt ist?

Da muss @sathya gucken, der ist nur gerade in Urlaub.

Ich schiebe das mal nach oben. Es scheint am Docker-Image zu liegen.

/etc/timezone: korrekt
/etc/localtime: falsch formatierter Link: /etc/localtime -> ‘/usr/share/zoneinfo/“Europe/Berlin”’
…wobei es auch egal ist, wenn ich den Link durch einen korrekt formatierten Link ersetze, oder vom Host-Rechner in den Container einbinde.

Environmentvariable TZ: korrekt
Anzeige im Homegear Admin-UI: korrekt

aber:

Thermostate: UTC
“date” im Docker-Container: UTC (!)

2 Likes

Hallo @Larx,

sorry für die späte Antwort. Also: Zur Ermittlung der Zeit wird die Posix-Funktion localtime_r verwendet (localtime, localtime_r, localtime_s - cppreference.com). Entsprechend verwendet Homegear die Zeit, welche das System als lokale Uhrzeit angibt. Das Problem muss also in Docker liegen. Ich schaue mir das direkt mal an.

Viele Grüße

Sathya

So, ich habe jetzt mal geschaut. Hier sieht es soweit gut aus. Zumindest date gibt die lokale Zeit aus. Ich denke, des Rätsels Lösung sind die Anführungszeichen um die Zeitzone. Ich habe das Startskript mal angepasst, um diese zu entfernen. Magst du es noch einmal mit dem neuen Dockerabbild probieren?

Viele Grüße

Sathya

Danke für die Rückmeldung, hatte sich aber erledigt. Wie von dir vermutet waren die Anführungszeichen das Problem.

1 Like