lunedì 30 settembre 2019

I comandi del tempo in Tasmota


Avevo già affrontato l'argomento "tempo" sotto Tasmota con il post "Parliamo un pochino di Tasmota e della console" ma grazie ad un utente anonimo ho visto una inesattezza. Ora correggo e già che ci sono, approfondisco!

Ho già scritto un bel po di roba su Tasmota, se vuoi approfondire : Tasmota su MinoModdng

Grazie a Tasmota possiamo settare dei time server che forniranno sempre l'ora corretta ai nostri dispositivi.
Sulle prime non pare una cosa fondamentale, ma è decisamente utile. Specie se volete fare dei confronti sull'energia consumata ieri e quella consumata la settimana scorsa...

Si possono settare fino a tre server NTP, per vedere quali sono i server NTP settati attualmente basta lanciare i seguenti comandi :

NtpServer1
NtpServer2
NtpServer3

Per settare i server, invece, basta lanciare i comandi di prima seguiti dal nome del server. Ho scritto nome, ma ovviamente viene anche accettato l'indirizzo IP. Alcuni dei server che io uso sono time.google.com (216.239.35.8)  , ntp1.inrim.it (193.204.114.232) e 0.europe.pool.ntp.org .

Al momento, quindi, i miei Tasmota sono settati così :

NtpServer1 216.239.35.8
NtpServer2 193.204.114.232
NtpServer3 91.121.61.132

Personalmente (anche se è concettualmente sbagliato) ho settato l'indirizzo IP dei server. Non ho idea del perchè, ma con il nome DNS non mi si sincronizzavano. Eppure dal router pingo regolarmente il nome dns, ma sulle release 6.1.1 dei miei Sonoff Tasmota non mi digerisce correttamente il nome. Amen, poco male, ma ho ritenuto carino mettere tre server NTP in caso uno fallisse.
L'errore che mi si presentava era che a spot l'orario mi si resettava a questo default :

Time":"1970-01-01T00:00:03"

Cosa scomoda, decisamente. Ho provato a vedere se ci fossero problemi di rete (a livello di qualità segnale wifi, come segnalato in un thread di GitHub) ma nulla, ho controllato che fosse raggiungibile dalla mia LAN il nome del server NTP, anche qui nulla. 
Ho scollegato un device Sonoff con a bordo la versione 6.1.1 e lo ho portato alla 6.6.0 , ma senza alcun risultato apprezzabile. 
Alla fine, ho deciso di usare l'indirizzo ip e tutto gira perfetto.

Ripeto, è concettualmente sbagliato perchè se un domani un server NTP cambia indirizzo il DNS continuerà a fare il suo lavoro (se non hai idea di cosa sia un dns, avevo scritto una roba intitolata "L'importanza del DNS nella nostra vita", ti consiglio di leggerlo!).

Nel complesso, credo sia una cosa con la quale posso convivere, avendo altri due server NTP da usare in caso di bisogno.

Andando oltre con la configurazione, ci sono altri comandi relativi al tempo che credo sia utile conoscere.

Per esempio, ci sono due comandi che consentono di impostare sia quando entra in vigore l'ora legale (detta DST, Daylight Saving Time) che quando si torna all'ora solare (detta STD, ovvero Standard Time) in modo da programmare con esattezza in che modo aggiornare l'orario di bordo. 

C'è poi un terzo comando, strettamente legato ai due precedenti, per settare un "fuso" orario che tenga conto dei due comandi precedenti, ma ne parliamo per ultimo.

Entrambi i comandi hanno delle variabili standard, vediamo quali sono :

0 = resetta i parametri a default del firmware

H,W,M,D,h,T

H = emisfero: se messo a 0 fa riferimento all'emisfero nord, se messo a 1 si parla dell'emisfero sud
W = settimana del mese:  i valori vanno da 1 (prima settimana del mese) a 4 (quarta settimana del mese) ma si può anche usare lo 0 per specificare l'ultima settimana del mese.
M = mese: specifica il mese, 1 sta per Gennaio, 2 Febbraio e via dicendo
D = giorno: giorno della settimana, siccome Tasmota è internazionale il giorno 1 è la domenica, il giorno 7 è il sabato.
h = ora: i valori accettati vanno da 0 a 23
T = differenza UTC: specifica il differenziale in minuti rispetto all'orario UTC 

L'orario UTC (Coordinated Universal Timeè in buona sostanza il "nuovo nome" del tempo GMT, che era conosciuto da tutti come il tempo rispetto al Meridiano di Greenwich, ma poi si è deciso di "delocalizzare" l'ora e seguire degli orologi atomici. 
Rispetto all'UTC, l'Italia è +60 minuti quando c'è l'ora solare e +120 minuti quando c'è l'ora legale.

Tornando a noi, in Italia l'ora legale parte alle 2:00 del mattino dell'ultima domenica di marzo e finisce alle 3:00 del mattino dell'ultima domenica di ottobre, come mi ricorda Wikipedia.

Quindi, il comando per settare l'ora legale è il seguente :

TimeDST 0,0,3,1,2,120

Ovvero il comando TimeDST seguito da 0 per l'emisfero nord, 0 per l'ultima settimana, 3 per il mese di marzo, 1 per la domenica, 2 per le ore 2:00 del mattino. Poi c'è il 120 che specifica i minuti da aggiungere al tempo UTC

Il comando gemello, per decidere quando inizia l'ora solare, è il seguente :

TimeSTD 0,0,10,1,3,60

Il comando TimeSTD seguito sempre da 0 per l'emisfero nord, 0 per l'ultima settimana, 10 per il mese di ottobre, 1 per la domenica, 3 per le ore 3:00 del mattino. Poi c'è il 60 che specifica i minuti da aggiungere al tempo UTC.

Entrambi i comandi sarebbe meglio che fossero seguiti dal comando Timezone 99.
Questo comando serve a forzare Tasmota ad usare i valori specificati nei comandi TimeDST e TimeSTD per calcolare le differenze rispetto al fuso orario di riferimento.

Ricapitolando, con questi tre comandi abilitate l'ora solare e l'ora legale in automatico su ogni dispositivo con Tasmota a bordo :

TimeDST 0,0,3,1,2,120
TimeSTD 0,0,10,1,3,60
Timezone 99
Restart 1

Si, un riavvio alla fine ci sta sempre bene, specie quando si va a giocare con gli orarii...

Per vedere che tutti i cambiamenti siano andati a buon fine, accediamo nuovamente alla console e di Tasmota e digitiamo il seguente comando :

Status 7

Questo è l'output che ci troveremo davanti :

12:37:59 RSL: tasmota/stat/pow_lavastoviglie/STATUS7 = {"StatusTIM":{"UTC":"Tue Sep 03 10:37:59 2019","Local":"Tue Sep 03 12:37:59 2019","StartDST":"Sun Mar 31 02:00:00 2019","EndDST":"Sun Oct 27 03:00:00 2019","Timezone":99,"Sunrise":"07:09","Sunset":"20:29"}}


Ci fa vedere tutte quelle che sono le impostazioni di data, ora, DST e la sua fine, la Timezone e l'orario nel quale sorge e tramonta il sole.
Direi che tutto quello che riguarda il tempo sotto Tasmota lo ho raccolto, ora sta a voi metterlo in pratica!

Grazie ancora all'utente anonimo che mi ha dato modo sia di correggermi che di approfondire il discorso!

Devo ammettere che il  modo di calcolare il tempo ed i giorni è totalmente diverso da quello che si usa sotto OpenWRT, ci avevo scritto una cosa qualche tempo fa, l'articolo era 
Il demone cron, OpenWrt e WinSCP per il reboot

Se hai trovato questo post su Tasmota utile, sappi che ho scritto tanti altri articoli sempre sul firmware Tasmota, li trovi tutti raggruppati qui!

4 commenti:

  1. splendido articolo, leggendo solo il manuale non mi era cosi chiaro. il tool è veramente potente

    RispondiElimina
  2. Grazie del commento Dexter! Se ti è piaciuto, condividilo e mi farai un enorme favore :-)

    RispondiElimina

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre