Usare i dati di un sensore dentro le Rule è semplice, vediamo come farlo insieme!
Introduzione
In questo post analizzerò i dati dei sensori collegati agli apparati in mio possesso, ovvero :
- Sonoff TH con sensore SI7021 (temperatura ed umidità)
- Sonoff TH con sensore DS1820 (temperatura)
- Sonoff POW (elettricità)
Se vuoi capire le differenze tra i sensori, ho scritto un post al riguardo : "Sensori per Sonoff".
I dati possono essere richiesti direttamente oppure si può aspettare pazientemente che arrivino grazie al TelePeriod, ora ci concentriamo esclusivamente sulla formattazione.
Impareremo insieme come estrapolare i dati utili e come usarli nella costruzione delle Rule.
Avevamo sfiorato il discorso nel post "Rule Tasmota - I confronti", ora lo approfondiamo decisamente!
Via che si inizia!
Come recuperare i dati
Il modo più veloce per recuperare i dati di un sensore è usare il comando Status 8.
Non ti spiegherò sicuramente cosa fa questo comando, ho scritto un post enorme che si intitola "Console Tasmota - Status",ti consiglio di leggerlo.
Sonoff TH - Sonda SI7021
Di queste sonde ne ho diverse in giro per casa, ecco cosa succede se lanciamo uno Status 8
19:01:32 CMD: status 8
19:01:32 MQT: tasmota/stat/th_bagno/STATUS8 = {"StatusSNS":{"Time":"2022-02-25T19:01:32","SI7021":{"Temperature":26.3,"Humidity":78.1},"TempUnit":"C"}}
Qui vediamo che il sensore è l'SI7021 ed abbiamo due dati utili, Temperature ed Humidity.
I nostri trigger, quindi, saranno i seguenti :
- SI7021#Temperature
- SI7021#Humidity
Una Rule veloce potrebbe essere la seguente :
ON SI7021#Temperature>25 DO Power=1 ENDON
Ovvero, se la temperatura rilevata dalla sonda SI7021 è maggiore di 25 accendi il carico collegato al relè1.
Sonoff TH - Sonda DS1820
Di queste ne ho solo due in giro per casa, ma il principio è lo stesso della sonda SI7021.
Iniziamo lanciando lo Status 8
19:25:46 CMD: status 8
19:25:46 MQT: tasmota/th_pesci/stat/STATUS8 = {"StatusSNS":{"Time":"2022-02-25T19:25:46","DS18B20":{"Id":"0417A2E4E3FF","Temperature":23.5},"TempUnit":"C"}}
Il sensore è ovviamente un DS18B20 ma ci dice anche il suo indirizzo sul bus I2c.
Visto che è quella la sua interfaccia e sul bus non possono (giustamente) esistere due indirizzi uguali, ci viene subito comunicato l'indirizzo.
A seguire, il dato della temperatura, unico dato disponibile.Del resto, essendo una sonda stagna, non si può pretendere di più :-) I due trigger che potremo usare, quindi, sono i seguenti
- DS18B20#Id
- DS18B20#Temperature
Come esempio di funzionamento, vale quanto scritto prima.
Sonoff POW
Di questi ne ho diversi nella mia lan, li ho usati molto per capire dove spendessi maggiormente di elettricità. Lanciando il solito Status 8 ci troviamo davanti ad un sacco di dati!
19:02:47 CMD: status 8
19:02:47 MQT: tasmota/stat/pow_frigo/STATUS8 = {"StatusSNS":{"Time":"2022-02-25T21:02:47","ENERGY":{"Total":468.099,"Yesterday":0.920,"Today":0.689,"Power":59,"Factor":0.79,"Voltage":234,"Current":0.318}}}
In questo caso, il nostro master trigger è ENERGY, mentre gli altri dati sono i sub-trigger.
I trigger completi sono i seguenti :
- Energy#Total
- Energy#Yesterday
- Energy#Today
- Energy#Power
- Energy#Factor
- Energy#Voltage
- Energy#Current
Un semplice esempio di Rule potrebbe essere
ON Energy#Today>0.700 DO Var1 %timestamp% ENDON
Ovvero salva nella variabile Var! il momento esatto nel quale è stato superato il consumo di 0.700.
Agire subito o aspettare?
Prima si parlava di andarsi a prendere i dati o aspettare che "passino" grazie al TelePeriod. Negli esempi che ho fatto sopra, i dati vengono presi direttamente.
Questo garantisce una reattività pressochè immediata, ma occupa memoria.
Si può aspettare che i dati transitino durante il TelePeriod, ma questo vuol dire che la reazione della Rule sarà legata al tempo impostato.
Il mio consiglio è decidere caso per caso, Rule per Rule.
Come dicevo tempo fa, standarizzare i parametri è per me la cosa più comoda, ma per alcuni dispositivi ha anche senso discostarsi dallo standard.
Tornando a noi, se vogliamo che la Rule venga scatenata ad ogni passaggio di dati durante il TelePeriod, bisogna anteporre al Trigger la scritta Tele-
I nostri trigger quindi saranno questi :
- Tele-SI7021#Temperature
- Tele-SI7021#Humidity
- Tele-DS18B20#Id
- Tele-DS18B20#Temperature
- Tele-Energy#Total
- Tele-Energy#Yesterday
- Tele-Energy#Today
- Tele-Energy#Power
- Tele-Energy#Factor
- Tele-Energy#Voltage
- Tele-Energy#Current
Ora che abbiamo visto anche questo dettaglio, è il momento per tirare le somme del tutto!
Conclusione
Questa parte credo sia la più utile nella costruzione delle Rule, ovvero usare i nostri dati ambientali. Con una semplice analisi del traffico JSON abbiamo capito quali sono i trigger ed ora possiamo creare delle Rule che rispondano velocemente ai mutamenti dell'ambiente. Ma non ci fermiamo qui, il discorso è ancora davvero ampio, torna spesso per restare informato!
Siccome sei arrivato a leggere fino a qui, immagino che ti interessi il firmware Tasmota :-)
Che ne diresti di vedere tutti gli altri post che ho fatto sempre sullo stesso argomento?
Questo post fa parte di un discorso ad ampio respiro sulle Rule utilizzabili in Tasmota.
Ti lascio il link al primo post, "Rule Tasmota - Introduzione alle rule", in caso tu abbia piacere di approfondire.
In merito ai sensori da collegare ai Sonoff, ecco il link al mio post intitolato Sensori per Sonoff.
Parlando del TelePeriod, l'ho citato diverse volte, ecco tutti i post che ne parlano
I comandi di Status, invece, si sono meritati un post tutto loro "Console Tasmota - Status"
Tutto quello che coinvolge i dati ottenuti da Status mi è servito per capire dove avevo dei "buchi" di segnale nella mia rete, se l'argomenti ti intriga fatti un giro verso questo post : "Console Tasmota - Usare i dati di Status".
Se invece non riesci a fare qualcosa, prova a lasciare un messaggio qui sotto. Di solito ogni giorno controllo le mail ed i commenti e ti do una mano ben volentieri!
Nessun commento:
Posta un commento
Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?