domenica 7 febbraio 2021

L'entità filter di Home Assistant - Parte 3

Qui la seconda parte.

Orbene, ci eravamo lasciati (se ben ricordi. Se non ricordi bene, guardati le altre puntate) su altri due parametri da analizzare la precision (cioè l'arrotondamento) e la combinazione di più filtri. Il problema infatti era che pur avendo attenuato la curva fino a renderla più continua ed eliminando i picchi, restava comunque il fatto che le letture erano sempre troppo frequenti. 

Precision

Questo parametro indica semplicemente la quantità di cifre dopo la virgola. Ho applicato il filtro TSMA con precision 1 e valori di window_size a 1, 5. 30 e 60 minuti.
Solo ora mi accorgo che avevo configurato il sensore con window_size a 1 minuto con la precision era a 0. My fault...
In ogni caso, è evidente il minor numero di scritture, che è sostanzialmente identico a quello del sensore grezzo. A valori di windows_size elevati (30 e 60) è ancora minore (ma come abbiamo visto nelle puntate precedenti si perde molto dei picchi iniziali). L'errore sul window_size a 1 minuto, dove avevo impostato precision a 0, mostra chiaramente come il valore viene scritto solo se cambia di stato, il che spiega molte cose: con la precision non impostata, i filtri danno quasi sempre risultati con 2 cifre significative, il che porta ad avere valori quasi sempre differenti ad ogni lettura. Diminuendo la precision le probabilità che il valore sia simile al precedente (evitando quindi una scrittura) aumentano decisamente.
Passiamo alla potenza.


In questo caso la precision era impostata a 0. Valori di window_size  di 30 e 60 sono inutili, mentre con gli altri valori la precision non cambia la situazione: i valori in ingresso sono sempre molto aleatori, dunque basta una variazione di 1W per causare una scrittura. Si potrebbe modificare il template del sensore per diminuire la precisione alle decine invece che alle unità, ma lo trovo eccessivo.

Filtri combinati

Vediamo ora come si comportano più filtri combinati assieme. Per la temperatura ho scelto i filtri che avevano dato maggior impatto, ovvero TSMA e lowpass, rispettivamente con window_size a 10 minuti e time_constant a 10. Ho creato due sensori, invertendo i due filtri per capire se l'ordine di applicazione avesse qualche influenza sul risultato (lascia perdere il nome della card, è un errore).

Come vedi, nessuna influenza: i tracciati rosso e verde sono identici. La curva è meno precisa rispetto al solo tsma, mentre il numero di lettura è identico (ricordo che qui non ho usato precision). Ipotizzo che utilizzando valori più ridotti per i filtri ma impostandone la precision a 1, potrei ottenere il risultato ottimale.

Vediamo sulla potenza.

In questo caso l'ordine ha invece una certa incidenza: il picco infatti viene tagliato di quasi 30W se si imposta prima tmsa rispetto ad outlier. Inoltre la durata del "drop" è maggiore. Meglio quindi metterli in questo ordine. Il comportamento è comunque piuttosto buono: pur perdendosi il picco iniziale, poi il grafico è abbastanza lineare ed il "drop" è molto breve, rispetto all'applicazione di uno solo dei filtri. Anche in questo caso, non avendo impostato la precision, il numero delle scrittura è invariato. 

Ancora qualche prova

Mi sento vicino alla meta. Imposterò il filtro di temperatura con valori di window_size a 1 minuto e time_constant a 5, ma stavolta impostando anche la precision a 1. Riguardo la potenza, imposterò l'oulier  a 8/4, ma porterò il tsma a 1, regolando anche qua la precision (a 0, però).

Nessun commento:

Posta un commento