Pycom MicroPython: Probleme mit der Uhrzeit seit Firmware-Upgrade auf 1.20.2.r2

Mit meinem Board BOB-Strom-V2 mit 1 x RTC DS3231 und 2 x Strommesser INA219 messe ich die Solar-Ladeleistung und die Leistung der Last vom LiPo-Akku 2000 mAh und schalte die Last für 30 sec ein. Das wiederhole ich je nach Akkuspannung 60 bis 1 mal pro Stunde. Angesteuert werden die ICs von einem WiPy, der die Messdaten jede Sekunde auf SD-Karte schreibt.

Leider läuft das System nicht stabil und rebootet oft. GarbageCollector und Watchdog sind eingeschaltet.

Leider hängt das System manchmal ganz und ist erst wieder mit Reset oder gar Strom aus/ein wieder zu beleben. Ich verwendete die Firmware: 1.20.2.r1.

Ich hoffte, mit einen Update auf neueste Firmware wird es besser:

Firmware: 1.20.2.r2
Pybytes: 1.6.1
Initialized watchdog for WiFi and LTE connection with timeout 1260000 ms
WiFi connection established
Connected to MQTT mqtt.pybytes.pycom.io
Pybytes connected successfully (using the built-in pybytes library)
Pybytes configuration read from /flash/pybytes_config.json

Doch nun funktionieren die Methoden von time() und utime() nicht mehr richtig.

Das Setzen der RTC mit NTP ist noch OK, aber das Setzen auf CET ( CentralEuropeanTime ) oder CEST ( summertime ) nicht mehr. Das ist sehr ärgerlich.

utime.timezone              3600
RTC:    2020-12-17 22:45:04
utime.gmtime:           +0  (1970, 1, 1, 0, 0, 6, 3, 1)
rtc.now                 +0  (2020, 12, 17, 22, 45, 4, 433764, None)
utime.localtime:        +1  (1970, 1, 1, 1, 0, 6, 3, 1)
utime.time              +0  6 (1970, 1, 1, 0, 0, 6, 3, 1)
mktime: utime.gmtime    +1  -3594 (1969, 12, 31, 23, 0, 6, 2, 365)
mktime: rtc.now         +1  1608241504 (2020, 12, 17, 21, 45, 4, 3, 352)
mktime: utime.localtime +2  6 (1970, 1, 1, 0, 0, 6, 3, 1)
RTC:    2020-12-17 22:45:04
time.gmtime:           +0  (1970, 1, 1, 0, 0, 6, 3, 1)
rtc.now                +0  (2020, 12, 17, 22, 45, 4, 469893, None)
time.localtime:        +1  (1970, 1, 1, 1, 0, 6, 3, 1)
time.time              +0  6 (1970, 1, 1, 0, 0, 6, 3, 1)
mktime: time.gmtime    +1  -3594 (1969, 12, 31, 23, 0, 6, 2, 365)
mktime: rtc.now        +1  1608241504 (2020, 12, 17, 21, 45, 4, 3, 352)
mktime: time.localtime +2  6 (1970, 1, 1, 0, 0, 6, 3, 1)

Es sollte überall das Jahr 2020 und nicht 1970 auftauchen.
In der Firmware 1.20.2.r1 funktioniert alles.

Wo ist der Fehler?

Die Methoden rtc.init(), utime.timezone() usw. funktionieren bei Firmware 1.20.2.r2 nicht immer so wie bei Firmware 1.20.2.r1.
Abhilfe: die interne RTC wird per NTP auf UTC gesetzt. Nur bei der Ausgabe wird auf CETS umgerechnet. Die RTC des DS3231 wird auf CETS gesetzt. Man muss aufpassen, was man wie ausliest.
Dieses Problem scheint auch anderswo auf zu tauchen: Bei FileZilla habe ich lange gebraucht, bis das Filedatum auf dem FiPy und dem PC korrekt angezeigt wurden.

1 Like

Inzwischen teste ich die Firmware 1.20.2.r3.

Je nach Boot-Modus wird die interne RTC nicht richtig initialisiert und die Methoden time.time() und time.localtime() geben die Zeit vom Anfang der Epoche aus (1970-01-01 00:00:00).

Abhilfe: rtc.init(rtc.now()). Das ist zwar Unsinn, funktioniert aber.

1 Like

Im Issue-Tracker bei Pycom wird ebenfalls von entsprechenden Problemen seit der Version 1.20.2.r2 berichtet.

Trivia: Der Autor @gruenwaldi arbeitet an GitHub - ubirch/ubirch-elevate-application: This is the application for the elevate delta elevator sensor, based on GPy and PySense.

1 Like

Vielen Dank, Didi! Dein Workaround wurde bereits dankbar von anderen aufgenommen, siehe rtc time sync is not properly working with the newest release 1.20.2.r2 · Issue #500 · pycom/pycom-micropython-sigfox · GitHub.

Scheinbar existieren Probleme rund um die Zeiteinstellung bereits seit der Version 1.20.2.rc11, siehe auch:

Im gerade eben erfolgten Release v1.20.2.r4 by peter-pycom · Pull Request #514 · pycom/pycom-micropython-sigfox · GitHub wurde das hier beschriebene Problem u.U. behoben. Danke, @gijsio und @peter-pycom!

Bei RTC.ntp_sync() bug introduced in 1.20.2.rc11 · Issue #478 · pycom/pycom-micropython-sigfox · GitHub wurde nun bestaetigt, dass das Problem durch o.g. Fix behoben wurde.