| Ligne 175 : |
Ligne 175 : |
| | # '''Chime Time''' est la représentation, sous forme de tuple, de l'information '''Chime at'''. Le format est, cette fois, sensiblement différent avec {{fname|(Année, Jour, Mois, Heures, Minutes, Secondes, Jour_de_la_semaine, Jour_de_l_annee)}} puisqu'il provient de la fonction {{fname|time.localtime()}} | | # '''Chime Time''' est la représentation, sous forme de tuple, de l'information '''Chime at'''. Le format est, cette fois, sensiblement différent avec {{fname|(Année, Jour, Mois, Heures, Minutes, Secondes, Jour_de_la_semaine, Jour_de_l_annee)}} puisqu'il provient de la fonction {{fname|time.localtime()}} |
| | | | |
| − | === Quelques explications === | + | === Le corps du script === |
| | Commençons par analyser le corps du programme du s'étend des lignes 49 à 80. | | Commençons par analyser le corps du programme du s'étend des lignes 49 à 80. |
| | | | |
| Ligne 198 : |
Ligne 198 : |
| | * '''Ligne 80''' : Une pause de 5 secondes est insérée à chaque itération de la boucle {{fname|while}}. | | * '''Ligne 80''' : Une pause de 5 secondes est insérée à chaque itération de la boucle {{fname|while}}. |
| | | | |
| | + | === La fonction next_chime() === |
| | + | |
| | + | Pour rappel, en voici la définition: |
| | + | |
| | + | <syntaxhighlight lang="python" > |
| | + | def next_chime( _now ): |
| | + | """ Calculate Next 1/2 H and Next Hour chimes time |
| | + | |
| | + | Parameters: |
| | + | _now : rtc datetime (Y,M,D,wD,h,m,s,ms) |
| | + | |
| | + | returns: |
| | + | Time in seconds (since Jan 1, 2000) |
| | + | """ |
| | + | # mktime datetime (Y,M,D,h,m,s,wD,yD) |
| | + | if _now[5]<30: # Minutes < 30 => Chimes at next 30 mins |
| | + | mktime_data = ( _now[0], _now[1], _now[2], _now[4], 30, 0, _now[3], 0 ) |
| | + | chime_type = HALF_HOUR_CHIME |
| | + | hour = _now[4] |
| | + | else: # Shime next Hour |
| | + | chime_type = HOUR_CHIME |
| | + | if _now[4]+1 > 23: # > 23H |
| | + | # Next day at 00:00 |
| | + | # Transform in seconds |
| | + | mktime_data = ( _now[0], _now[1], _now[2], _now[4], _now[5], _now[6], _now[3], 0 ) |
| | + | secs = time.mktime( mktime_data ) |
| | + | # Add a day |
| | + | next_day_secs = secs + 24*60+60 + 30*60 |
| | + | # Decode this new date |
| | + | mktime_data = time.localtime( next_day_secs ) |
| | + | # Zeroing the Hours, Minutes (shime the at first second) |
| | + | mktime_data = ( mktime_data[0], mktime_data[1], mktime_data[2], 0, 0, 1, 0, 0 ) |
| | + | hour = 0 |
| | + | else: |
| | + | # Next Hour & Zeroing minutes, seconds |
| | + | mktime_data = ( _now[0], _now[1], _now[2], _now[4]+1, 0, 0, 0, 0 ) |
| | + | hour = _now[4]+1 |
| | + | |
| | + | # Return seconds, Half or full Hour chime, related Hour |
| | + | return time.mktime( mktime_data ), chime_type, hour |
| | + | </syntaxhighlight> |
| | | | |
| | {{P2E-TRAILER}} | | {{P2E-TRAILER}} |