Dedurre lo stato di un elettrodomestico non-domotico con Home Assistant (tramite vibrazioni)

6 minuti di lettura
SCOPI DEL PROGETTO:
  • Utilizzare un approccio deduttivo per determinare lo stato operativo di un elettrodomestico non-domotico
  • Livello di difficoltà: basso
  • Costo: nullo (al netto del sensore di rilevazione)
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
  • Il dispositivo in cui è in esecuzione Home Assistant, oltre, ovviamente, all’elettrodomestico da censire
  • Un sensore di vibrazione (eg. LUMI Aqara)
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.
Revisione progetto: 1.1

Abstract

Gli elettrodomestici tradizionali – ovvero quelli non dotati di un’anima domotica – non sono esclusi a priori dalla possibilità “di essere domotizzati”: le tecniche per domotizzare il non-domotico sono infatti le più disparate. Basti pensare ai condizionatori: in pochi e semplici passi è possibile renderli pienamente domotici pur non essendo concepiti per essere sfruttati in questo modo.

Ciò che invece è spesso più difficile da ottenere è lo stato operativo di un elettrodomestico non domotico: tornando all’esempio dei condizionatori, piuttosto facile è riuscire a comandarli, difficile è capire se quel comando sia andato a buon fine o meno.

Robot Aspirapolvere su parquet
un aspirapolvere robot.

Per stato operativo dell’elettrodomestico, va da sé, si intende “ciò che sta facendo in un dato momento“. Quantomeno, arrivare a determinare se sia operativo o no.

Conoscere lo stato operativo di un elettrodomestico è utile (se non necessario) per dotare la propria domotica personale di ulteriori “sensi” ai fini di notifica, di automazione (per esempio se togliere / non togliere alimentazione all’elettrodomestico in caso di abbandono dell’ambiente da parte degli inquilini), di monitoraggio.

Home Assistant, tramite il proprio modello a entità, ci permette di definire dei sensori virtuali i quali assumano uno stato (arbitrario) piuttosto che un altro partendo dall’analisi di assorbimento dell’elettrodomestico stesso. Ogni elettrodomestico, infatti, assorbe energia elettrica: il modo in cui lo fa può aiutarci a capire cosa l’elettrodomestico stia facendo in un dato istante. Questo è stato l’approccio di un’altra guida della quale certamente consigliamo la lettura attenta.

Altrimenti…

Un altra strada – quella perseguita dalla presente guida – è quella di utilizzare tutt’altro approccio deduttivo, ovvero quello volto a comprendere cosa un elettrodomestico stia facendo in base… alle vibrazioni che emette. Sembra una battuta, ma non la è affatto.

Alcuni elettrodomestici – molto specifici – hanno infatti la caratteristica di non essere facilmente “leggibili” in termini di assorbimento elettrico, pertanto utilizzare le letture di questo tipo diventa spesso inutile, o quasi. Diversamente, altri comportamenti sono più facilmente comprensibili, e quindi modellabili all’interno della domotica come, per l’appunto, le vibrazioni.

Un esempio calzante riguarda i robot aspirapolvere. Nel progetto che illustra come domotizzare un robot aspirapolvere non-domotico con Home Assistant, abbiamo evidenziato quanto sia facile renderne domotiche le funzioni di accensione tanto quanto sia difficile dedurne il ritorno alla base, e quindi lo spegnimento, lo stato di quiete.

Bene: con la presente guida otterremo il risultato di definire un sensore binario virtuale che indichi se un dato elettrodomestico sia (quantomeno) acceso o spento in base alle sue vibrazioni cosa che, nell’esempio del robot aspirapolvere (e non solo) sarebbe estremamente comodo da implementare.

Cosa ci serve

Aqara sensore di vibrazione
Sensore di vibrazione LUMI Aqara.

Semplice: innanzitutto ci serve un un sensore che, una volta posizionato sull’elettrodomestico, rilevi la quantità di vibrazioni prodotte dall’elettrodomestico sul quale è posizionato; in secondo luogo è necessario che tale sensore sia integrato con Home Assistant, il quale appunto riceva le misure e, tramite esse, condizioni lo stato di un sensore binario definito in configurazione.

Sensori ne esistono molti; noi suggeriamo l’adozione del sensore di vibrazione LUMI AQARA, il quale si distingue per economicità, affidabilità e integrabilità. Tale sensore (come molti sensori ZigBee della sua razza) può essere integrato a Home Assistant in vari modi (tramite il BRIDGE/Gateway Xiaomi, tramite ConBee/deCONZ o CC2531/zigbee2mqtt eccetera).

Per la presente guida daremo per assodata la presenza sul nostro Home Assistant del sensore sensor.bed_activity, il quale è solitamente l’entità che appare tramite integrazione di questo sensore via Gateway Xiaomi; in caso si utilizzino altre integrazioni sarà sufficiente identificare l’entità che contenga, nel proprio stato, la magnitudo della vibrazione e usarlo come faremo in questa guida.

N.b. Per magnitudo si intende un valore intero (lo 0 indica lo stato di quiete) che rappresenta il livello di vibrazione (pressoché) istantaneo del sensore.

Analisi

STATO OPERATIVO ACCESO/SPENTO

La teoria ci dice che un elettrodomestico spento sia, ovviamente, in stato di quiete. Questo è solitamente vero, ma abbiamo appurato che spesso, a prescindere, i sensori di vibrazione siano talmente sensibili da non raggiungere mai il valore 0, anche quando perfettamente immobili.

Prima cosa da fare, dunque, è posizionare il sensore sull’elettrodomestico “in stato di attesa” (standby) e verificare quale sia la lettura di vibrazione, così da avere un valore minimo da assumere come valore di riferimento per lo stato “spento“. Qualunque valore maggiore del valore minimo verrà dunque attribuito allo stato “acceso – operativo“.

Questo approccio è il più elementare ed è solitamente utilizzato per realizzare sensori virtuali binari, i quali posseggano appunto un semplice stato on/off.
Più avanti vedremo come fare.

STATO OPERATIVO DETTAGLIATO

L’ottenimento di dati dettagliati relativi allo stato operativo è tanto più complesso quanto la è la variabilità del comportamento dell’elettrodomestico stesso e dal grado di dettaglio che si vuole ottenere.

La cosa da fare, in primis, è osservare il comportamento dell’elettrodomestico durante un ciclo completo d’utilizzo, quale sia l’elettrodomestico, quale sia l’utilizzo e la sua durata. In questo ci viene in soccorso lo storico di Home Assistant: durante e dopo l’esecuzione del ciclo sarà possibile capire se le varie fasi dell’operatività dell’elettrodomestico forniscano o meno un’evidenza “di modello” nel grafico relativo alle vibrazioni rilevate.

Home Assistant - Aqara sensore di vibrazione - bed activity
un esempio di rilevazione dal sensore LUMI.

Se il sensore fosse posizionato su un elettrodomestico che presenti diversi schemi di vibrazione in base a varie funzioni (si pensi alla lavatrice), sarebbe possibile, sul piano teorico, definire dei sensori virtuali più evoluti rispetto al semplice acceso/spento, esattamente seguendo lo stesso approccio del progetto basato sulla definizione di sensori a partire dall’assorbimento elettrico.

Possiamo però affermare che tale approccio non sia, nella maggior parte dei casi, concretamente attuabile, data la difficoltà nel modellare un vero e proprio “modello comportamentale” di un elettrodomestico tramite le sole vibrazioni. Certamente ci si può provare, ma non aspettatevi grandiosi successi.

Come creare il sensore

Assunzioni

In questo progetto assumiamo di avere a disposizione – come spiegato sopra – una entità sensore che fornisca la magnitudo di vibrazione misurata sull’elettrodomestico chiamata sensor.bed_activity.

Sensore acceso/spento

Dato che lo stato operativo è rappresentato di base da due possibili condizioni (acceso/spento – 1/0) utilizzeremo un “Template Binary Sensor” per definire un’entità che appunto rappresenti, automaticamente, lo stato dell’elettrodomestico a partire dai dati di magnitudo istantanei forniti da sensor.bed_activity. Assumeremo (ma è davvero un’assunzione teorica) che in quiete il sensore misuri 0.

In configurazione andremo ad aggiungere:

binary_sensor:
      stato_operativo_elettrodomestico:
        delay_on:
          seconds: 5
        delay_off:
          seconds: 5
        value_template: "{{ states('sensor.bed_activity')|int > 0 }}"

Il significato è semplice: quando il sensore sensor.bed_activity misurerà una vibrazione (valore di magnitudo rilevato >0) per più di cinque secondi, il sensore binario virtuale assumerà lo stato acceso (“on“);  viceversa, tornerà su spento (“off“) quando il valore scenderà a 0.

Avremo quindi definito un sensore chiamato binary_sensor.stato_operativo_elettrodomestico, il quale assumerà valore “on” quando l’elettrodomestico starà lavorando e “off” quando sarà in quiete.

SENSORE DI DETTAGLIO

Come spiegato, la definizione di un sensore di dettaglio basato su uno schema di comportamento ricorsivo dell’elettrodomestico (in termini di vibrazioni) è un approccio che non ci sentiamo di supportare. C’è un limite anche alla fantasia, dopotutto. Ciò nonostante, chi volesse tentare può – ovviamente – liberamente farlo: uno spunto può sicuramente venire dal progetto basato sugli assorbimento, paragrafo “Sensore di dettaglio“.

Automazione

A questo punto, essendoci dotati di sensori in grado di rilevare lo stato operativo dell’elettrodomestico non-domotico, oltre a consultarne gli stati e gli andamenti nel tempo potremo provvedere a utilizzarli come trigger, condizioni e/o oggetto di azioni nelle nostre automazioni.

Un esempio è quello di fare in modo di venire allertati al cambio di stato (da “on” a “off” e viceversa – o altro) dell’elettrodomestico.

Nell’automazione che segue, lo stato semplice dell’elettrodomestico (censito tramite “binary_sensor.stato_operativo_elettrodomestico“) è l’innesco (trigger) di un’automazione che provvede ad allertare un utente tramite una notifica Pushbullet convogliata tramite un’entità chiamata “notify.marco“:

- alias: "Notifica per cambio di stato"
  trigger:
    platform: state
    entity_id: binary_sensor.stato_operativo_elettrodomestico
  condition: []
  action:
     service: notify.marco
     data_template:
       title: "Elettrodomestico"
       message: "L'elettrodomestico è passato da {{ trigger.from_state.state }} a {{ trigger.to_state.state }}"


Home Assistant Official LogoATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Please comment below