Impostare l’ora legale e solare sul firmware Tasmota in modo automatico

5 minuti di lettura
SCOPI DELLA GUIDA:
  • Utilizzare i comandi relativi alla gestione dell’orario del firmware Tasmota in modo da innescare automaticamente l’orario standard (STD) e estivo, legale (DST)
  • Livello di difficoltà: basso
CONCETTI AFFRONTATI:
  • configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
  • qualunque componente domotico riprogrammato con firmware Tasmota (qui una MASTERGUIDE sulla procedura di riprogrammazione)
GUIDA maggiormente indicata per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 1.0

Tasmota logoCome noto, l’adozione del firmware Tasmota sui dispositivi basati su SOC ESP8266 (come quelli, per esempio, della famiglia ITEAD Sonoff “Smart Home” e molti altri) abilita tutta una serie di funzionalità che, di fabbrica, non sarebbero previste.

Innanzitutto, questo approccio libera questi dispositivi domotici dalla “gabbia” indirettamente imposta dal produttore nell’uso esclusivo della propria app “eWeLink” per configurarli e controllarli; inoltre, apre a funzionalità non previste (si pensi, banalmente, all’implementazione del protocollo MQTT) nonché ad ampissime possibilità di configurazione, ben oltre quelle di fabbrica.

Per alcune di queste funzioni è fondamentale che data e ora presenti sul dispositivo sul quale è in esecuzione Tasmota siano corrette, sia in termini di calendario che di ora, fuso orario e e applicazione (o meno) dell’ora solare estiva. Un esempio è quello dell’applicazione di Tasmota nel progetto per il conteggio dei consumi elettrici tramite PZEM: orari e date sbagliate causano un calcolo conseguentemente sbagliato dell’attribuzione dei consumi giornalieri e a cascata settimanali e mensili.

Per farlo, Tasmota ci aiuta con un semplice ma efficace meccanismo.

Si parte

Capire l’ora

Molti non sanno, di preciso, come si calcola l’orario in un dato luogo, sebbene sia piuttosto semplice. È bene quindi trattare brevemente il tema, perché altrimenti difficilmente si capiranno gli argomenti che seguono.


Amazon Echo Wall ClockSe un’astronave aliena avesse su una parete del ponte di comando degli orologi che indichino l’orario di ogni pianeta abitato, quello relativo alla Terra segnerebbe – sempre, in qualunque momento dell’anno – il cosiddetto orario di Greenwich, chiamato così per convenzione perché su quella località Inglese passa il cosiddetto “meridiano 0″. Quello di Greenwich è un orario che, parafrasando Vasco Rossi, “se ne frega di tutto sì”: è un orario scadenzato dagli orologi atomici di tutto il mondo (i quali tengono in considerazione vari fattori, per “tenere il passo”) e che va considerato come orario universale del pianeta Terra.

Non a caso il nome scientifico di tale orario è UTC, acronimo che significa “Tempo Coordinato Universale“.

Le località ad est di Greenwich adottano man mano che si ruota intono al paese una serie di fusi orari (da +1 a + 12), diventando poi negativi, concludendo il giro da ovest (da -12 a -1).

Il nostro paese è a un fuso orario da Greenwich UTC+1, quindi alle ore 12:00 UTC qui da noi sono le 13:00; a New York, UTC-5, sono le 08:00 del mattino, e così via. A Londra, dato che giace su zona a UTC-0, l’orario corrisponde all’UTC.

Orario così calcolato, località per località, è definito standard, o STD.

COS’È L’ORA SOLARE?

L’ora solare (o DST, Daylight Saving Time) è un offset di un tot di minuti (in più o in meno sull’orario STD) introdotto in certi momenti dell’anno da alcune nazioni dell’anno. Per esempio, l’Italia ha un DST di +60 minuti così come la maggior parte delle nazioni europee e come gli USA. Esistono però eccezioni: per esempio, nel caso dello stato americano delle Hawaii non viene applicato.

Questo offset viene applicato in un dato momento dell’anno e rimosso in un altro, ciclicamente. In Italia (e più genericamente in Europa) si entra in regime DST alle ore 2:00 del mattino dell’ultima domenica di marzo e si esce alle 3:00 del mattino dell’ultima domenica di ottobre.

A questo punto, calcolare l’orario è facile.

Ipotizziamo che sia il primo aprile e l’ora UTC siano le 12:00: in Italia saranno dunque le ore 14:00 per effetto dell’onnipresente UTC+1 e del DTS di +60 minuti. Si sommano quindi due ore all’ora UTC.

ATTENZIONE PERÒ: non saranno le 14:00 UTC+2, bensì le 14:00 UTC+1 DST. L’UTC infatti non cambia mai – al più interviene, appunto, il regime estivo DST.

Ipotizziamo infine che sia il primo dicembre e siano le 12:00: in Italia saranno le ore 13:00, per effetto del solo UTC+1 in quanto non siamo in regime DST ma STD. Saranno dunque le 13:00 UTC+1 STD.

Capito questo, regolare l’orario di un dispositivo diventa semplice.

Data e ora esatti

La prima cosa da fare su un dispositivo e far sì che sappia che giorno è e che ore sono sul pianeta Terra. Per farlo, da tempo immemore si utilizza un protocollo chiamato NTP il quale, con meccanismi che non spiegheremo in questa sede, fornisce via rete la data e l’ora UTC precisi, facendo riferimento agli orologi atomici che tengono sotto controllo il tempo di Greenwich.

Il firmware Tasmota viene già fornito di indicazioni relative a quali server interpellare per sapere che giorno e ora è. Eseguendo infatti da console Tasmota (o via broker MQTT) il seguente comando:

cmnd/NOME_TASMOTA/NtpServer

(dove ovviamente “NOME_TASMOTA” indica il nome attribuito al dispositivo in fase di configurazione) il firmware risponderà elencando quali siano i server NTP in uso, i quali dovrebbero essere:

{“NtpServer1″:”pool.ntp.org”,”NtpServer2″:”nl.pool.ntp.org”,”NtpServer3″:”0.nl.pool.ntp.org”}

confermando quindi la capacità del dispositivo di conoscere data e ora UTC corretti (beninteso: sempre che la rete sul quale giace sia in grado di raggiungere Internet).

TimeSTD e TimeDST

Questi due comandi permettono di impostare l’inizio dei due periodi, lo STD (standard, invernale, l’ora solare che dir si voglia) e il DST (daylight saving, estiva, legale che dir si voglia), indicano quale offset (totale) applicare.

Sì, perché lo sviluppatore ha deciso di applicare direttamente all’orario UTC un offset “complessivo”, il quale contempli anche quello eventualmente previsto dall’UTC della propria nazione.

Nel caso dell’Italia, quindi, all’innesco del DST in marzo verrà applicato un offset di +120 minuti; in ottobre, l’innesco dell’STD soltanto +60.

Entrambi i comandi prevedono un payload che indica appunto quando innescare il periodo relativo al comando e l’offset. I parametri sono:

H,W,M,D,h,T
H = emisfero (0 = boreale / 1 = australe)
W = settimana (0 = ultima settimana del mese, 1..4 = dalla prima alla quarta)
M = mese (1..12)
D = giorno della settimana (1..7 1 = domenica 7 = sabato)
h = ora (0..23)
T = offset da applicare

Sulla base di questo schema, i comandi per impostare su Tasmota i giusti calcoli sono:

cmnd/NOME_TASMOTA/TimeSTD 0, 0, 10, 1, 3, 60
cmnd/NOME_TASMOTA/TimeDST 0, 0, 3, 1, 2, 120

Finito? No.

Timezone

Esiste un altro parametro, su Tasmota, che indica quale sia lo scostamento dell’UTC della propria nazione (eg. Italia +1). Ovviamente questo parametro va disabilitato, perché altrimenti non verrebbero applicati i calcoli relativi a STD e DST.

Per disabilitarlo e abilitare le impostazioni precedentemente impostate, eseguire il comando:

cmnd/NOME_TASMOTA/Timezone 99

Da qui in poi, l’orario sui Tasmota sarà sempre, automaticamente, corretto.

Aggiornamento massivo

Per aggiornare tutte le impostazioni di tutti i Tastmota presenti sulla propria rete ci viene in aiuto il comando GROUPTOPIC. ma, ovviamente, prevede che tutti i Tasmota siano collegati a un broker MQTT.

Prima aggiorniamo eventuali Tastmota che avessero ancora il vecchio GROUPTOPIC “sonoffs” nel nuovo, ufficiale “tasmotas“:

cmnd/sonoffs/GROUPTOPIC tasmotas

Ciò fatto, sarà sufficiente utilizzare i seguenti tre comandi:

cmnd/tasmotas/TimeSTD 0, 0, 10, 1, 3, 60
cmnd/tasmotas/TimeDST 0, 0, 3, 1, 2, 120
cmnd/tasmotas/Timezone 99

per garantirsi l’aggiornamento su tutti i dispositivi accesi e collegati al broker MQTT.



Telegram News Channel