Étape 2: Heure avancée
Si cette étape est assez technique et peut être ignorée si vous n’êtes pas intéressé :
OK, donc il n’y a écrite pour gérer une bibliothèque d’Arduino Daylight Savings Time change :
https://github.com/JChristensen/TimeZone
Cependant, il ne serait pas compiler lorsque vous utilisez la bibliothèque de ESP8266. (Quelque chose à voir avec EEPROM.) Donc j’ai écrit mon propre code.
Voici les règles américaines actuelles pour l’heure d’été :
https://en.wikipedia.org/wiki/Daylight_saving_time_in_the_United_States
"Actuellement, heure d’été commence le deuxième dimanche en mars et se termine le premier dimanche de novembre, avec les changements de temps qui se déroulent à 02:00, heure locale. Avec un jeu de mot mnémonique faisant référence aux saisons, horloges « printemps ici et se replier » — autrement dit, au printemps (techniquement fin de l’hiver) les horloges sont déplacés vers l’avant à partir de 02:00 à 03:00, et à l’automne qu’ils sont déplacés retour de 02:00 à 01:00. »
Eh bien, si vous avez fait des émissions, cela devient assez compliqué. Voici ce que j’ai fait.
La bibliothèque Arduino, comme de nombreux ordinateurs utilise ce qu’on appelle le temps Unix :
https://en.wikipedia.org/wiki/Unix_time
Temps d’UNIX (également connu sous le nom de POSIX temps ou à temps de l’époque) est un système permettant de décrire les instants dans le temps, défini comme le nombre de secondes écoulées depuis 00:00:00 temps universel coordonné (UTC), jeudi 1er janvier 1970
Maintenant, NTP et GPS utiliser UTC. UTC n’est pas un fuseau horaire, mais il est basé sur le temps en Angleterre, donc vous devez le convertir en heure locale et régler heure avancée de.
J’ai donc créé deux variables appelées SpringChange et FallChange dans le format de l’heure Unix.
Puis l’utilisation de NTP, j’ai trouvé l’année en cours.
De l’année, j’ai ensuite calculé les deux temps unix pour les deux variables. C’est délicat car le deuxième dimanche de mars et le premier dimanche de novembre ne sont pas le même jour d’une année à l’autre. Mais une chose que peut dire que la bibliothèque est donnée un temps Unix, il peut déterminer le jour de la semaine. Donc en utilisant le mois, le jour et le jour de la semaine, j’ai été en mesure de déterminer les jours de changement pour l’année.
Ainsi, lorsque le programme obtient une nouvelle heure UTC, s’il est supérieur ou égal à (> =) SpringChange et inférieur (<) FallChange que ne le Daylight Saving Time (DST). Dans le cas contraire, il n’est pas DST. Maintenant, pour obtenir l’heure locale actuelle, j’ajuste pour (dans mon cas) heure des Rocheuses et la lumière du jour heure d’été.