Par contre, reste toujours un probleme : il tient compte du dst fournit dans la structure TM plutot que de le calculer en fonction de la date donnée.
Ainsi, en mettant DST = 0, on a
pour 20201202.030201
01:02:27.182 -> Setting GMT time to : 2020/12/02 02:02:01
01:02:27.182 -> 2020/12/02 03:02:01
alors que
20200702.030201
01:00:51.322 -> Setting GMT time to : 2020/07/02 02:02:01
01:00:51.322 -> 2020/07/02 04:02:01
En fait, je ne sais pas s'il y a une solution propre pour l'éviter. Sinon, je vais calculer une fois un mktime()/gmtime(); juste pour déterminer le DST puis calculer la vraie heure (enfin, pas encore tester).
Bon, je vais laisser tomber : il faudrait que je recode plusieurs fonctions de la librairie pour stocker de l'UTC dans la RTC ... mais surtout le chip n'est surtout pas prévu pour et donc faudrait que bidouille un max pour garder une certaines cohérences dans la gestion de l'alarme.
Bref, le jeux n'en vaut pas la chandelle : je vais donc y stocker la localtime comme tout le monde.
Après tout, le seul risque est 1 fois dans l'année au passage de l'heure d'été, et je met aussi mon téléphone pour le pas louper le car du ski club
Je rebondis sur ce vieux sujet car je me suis penché sur le NTP ... et là surprise, il semblerait que la mise à jour de l'heure ne s'applique pas immédiatement.
14:47:02.808 -> Time synchronisation requested
14:47:02.808 -> sys : Sun Jan 2 03:04:28 2000
14:47:03.040 -> sys : Sun Jan 2 03:04:28 2000
14:47:03.306 -> sys : Sun Jan 2 03:04:28 2000
14:47:03.538 -> sys : Sun Jan 2 03:04:29 2000
14:47:03.803 -> sys : Sun Jan 2 03:04:29 2000
14:47:04.068 -> sys : Sun Jan 2 03:04:29 2000
14:47:04.301 -> sys : Sun Jan 2 03:04:29 2000
14:47:04.566 -> sys : Sun Jan 2 03:04:30 2000
14:47:04.798 -> sys : Sun Jan 2 03:04:30 2000
14:47:05.063 -> sys : Sun Jan 2 03:04:30 2000
14:47:05.295 -> sys : Sun Jan 2 03:04:30 2000
14:47:05.561 -> sys : Sun Jan 2 03:04:31 2000
14:47:05.793 -> sys : Sun Jan 2 03:04:31 2000
14:47:06.058 -> sys : Sun Jan 2 03:04:31 2000
14:47:06.290 -> sys : Thu Apr 22 14:47:05 2021
14:47:06.555 -> sys : Thu Apr 22 14:47:05 2021
14:47:06.820 -> sys : Thu Apr 22 14:47:05 2021
14:47:07.052 -> sys : Thu Apr 22 14:47:06 2021
14:47:07.317 -> sys : Thu Apr 22 14:47:06 2021
14:47:07.549 -> sys : Thu Apr 22 14:47:06 2021
Soit plus de 3 secondes après
Comme si le ntp se faisait de manière asynchrone.
Étonnant non ?
Après tout, c'est pas plus mal car ca évite de bloquer le programme si le NTP est long a répondre (DNS, tousa).
Mais comment du coup savoir si l'heure a réelement et mise à jour ?
Maintenant, se pose la même question pour MQTT : je vais regardé s'il existe une librairie qui peut aussi le faire en asynchrone (dans le cas contraire, je le lancerai dans une tache dédiée).
[Edit]J'ai trouvé async-mqtt-client qui a l'aire de faire ce que je cherche [/Edit]