Pulire automaticamente casa quando si esce tramite la domotica di Home Assistant

4 minuti di lettura
SCOPI DEL PROGETTO
  • Utilizzare un approccio deduttivo per determinare lo stato di addormentamento di una famiglia
  • Livello di difficoltà: basso
  • Costo: n.a.
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
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.0

Abstract

L’idea di una casa che si pulisce da sé è da sempre una chimera irraggiungibile, il sogno proibito di vincere una volta per tutto l’eterna guerra dell’uomo contro lo sporco domestico. Lo diciamo subito: questo progetto non ha presunzione di risolvere la questione in modo definitivo, ma quella semmai di vincere una battaglia di questa guerra.

Ogni giorno i robot aspirapolvere di più le nostre case: affidabili, ormai non troppo costosi, sono elettrodomestici che consentono di mantenere i pavimenti il più possibile puliti. Di contro, hanno necessità di essere messi in funzione mentre si è in casa, con conseguente fastidio (bisogna stare attenti a non inciamparvi e tollerarne il rumore) oppure essere pianificati temporalmente (i modelli che lo supportano, e comunque la pianificazione può talvolta essere inadeguata alle proprie abitudini).

Non sarebbe bello se, quando tutta la famiglia esce di casa, il robot partisse automaticamente?

In questo progetto vedremo come gli utenti che abbiano introdotto Home Assistant quale proprio HUB personale per la propria domotica e che posseggano un aspirapolvere robot possano realizzare un’automazione tale da consentire questo tipo di automatismo.

Assunti

Al fine di realizzare il presente progetto è necessario, sostanzialmente, l’avvenuta integrazione del proprio robot aspirapolvere col proprio Home Assistant. A tale scopo, le strade sono sostanzialmente due:

iLife V5s Robot Aspirapolvere

In pratica, qualcosa che si realizza facilmente nel 99,99% dei casi. Per il presente progetto, si assume la presenza di un’entità rappresentante l’avvenuta integrazione del robot aspirapolvere chiamata “vacuum.robot_aspirapolvere“, indipendentemente dalla piattaforma di integrazione scelta. Tale entità sarà indiretta figlia del componente “Vacuum“, pertanto utilizzeremo i servizi di controllo ad esso collegati.
Di robot aspirapolvere ne esistono ormai a bizzeffe.

Secondo elemento distintivo del presente progetto, la necessità di utilizzare degli entità di tipo “Device Tracker” per determinare la presenza/assenza degli inquilini in casa. Per il presente progetto assumeremo l’esistenza in configurazione dell’entità “group.famiglia” derivante dal raggruppamento di tali entità. Un approfondimento su questo specifico tema è disponibile qui.

Infine: definiremo l’automazione di “pulizia automatica” in modo che venga eseguita solo quando sia passato “sufficiente tempo” dall’ultima pulizia automatica.

Durata della pausa

Cominciamo col definire un sensore che misuri da quanto l’aspirapolvere sia fermo nel proprio dock di ricarica, quindi in pausa, utilizzando lo stato “docked” della corrispondente entità “vacuum.robot_aspirapolvere“.

Per far questo utilizzeremo la piattaforma “History Statistics Sensor” figlia del componente “Sensor”. Aggiungiamo in configurazione il seguente codice:

sensor:
  - platform: history_stats
    name: Durata ciclo aspirapolvere
    entity_id: vacuum.robot_aspirapolvere
    state: 'docked'
    type: ratio
    end: '{{ now() }}'
    duration:
      hours: 12

L’entità sensore derivante (“sensor.durata_ciclo_aspirapolvere“) monitora lo stato “docked” dell’entità “vacuum.robot_aspirapolvere“. Tale sensore indica come 12 le ore di lasso temporale preso in analisi e lo confronta con il tempo passato dall’entità “vacuum.robot_aspirapolvere” in stato “docked“. Quando il sensore riporta 100%, tale valore indica che sono passate (almeno) 12 ore in stato “docked“.

Script di pulizia e rientro

A questo punto definiamo due script:

  • uno che avvi la pulizia;
  • uno che la termini – se in corso – e invii il robot alla propria stazione di ricarica.

La prima la utilizzeremo poi nel blocco action dell’automazione che viene eseguita quanto si esce di casa, la seconda nel blocco action di quella eseguita quando si rientra (se rientriamo in casa mentre il robot sta pulendo, vogliamo smetta automaticamente):

script:
  vacuum_on:
    sequence:
      - condition: state
        entity_id: vacuum.robot_aspirapolvere
        state: 'docked'
      - condition: numeric_state
        entity_id: sensor.durata_ciclo_aspirapolvere
        above: 90
      - service: vacuum.clean
        entity_id: vacuum.robot_aspirapolvere
  vacuum_to_dock:
    sequence:
      - condition: state
        entity_id: vacuum.robot_aspirapolvere
        state: 'cleaning'
      - service: vacuum.stop
        entity_id: vacuum.robot_aspirapolvere
      - service: vacuum.return_to_base
        entity_id: vacuum.robot_aspirapolvere

Il primo script (“script.vacuum_on“) verifica in sequenza che il robot risulti nel proprio dock e poi che la durata della pausa sia superiore al 90% (utilizzando lo stato del sensore “sensor.durata_ciclo_aspirapolvere” precedentemente definito): se si superano le due condizioni, viene eseguito il servizio vacuum.clean associato alla nostra entità “vacuum.robot_aspirapolvere“, avviandolo.

Il secondo script (“script.vacuum_to_dock“), invece, quando evocato, verifica che “vacuum.robot_aspirapolvere” sia effettivamente in fase di pulizia e, in caso, la interrompa e lo invii alla base di ricarica (servizi vacuum.stop e vacuum.return_to_base).

Automazione

A questo punto non manca che definire le due automazioni relative alle azioni da eseguire in uscita e al rientro in casa (qui un approfondimento) in base agli assunti e alle realizzazioni sin qui definite:

automation:
- alias: "USCITA"
  initial_state: 'on'
  trigger:
    platform: state
    entity_id: group.famiglia
    from: 'home'
  condition: []
  action:
    - service: script.turn_on
      entity_id: script.vacuum_on

- alias: "RIENTRO"
  initial_state: 'on'
  trigger:
    platform: state
    entity_id: group.famiglia
    to: 'home'
  condition: []
  action:
    - service: script.turn_on
      entity_id: script.vacuum_to_dock

Le due automazioni (“automation.uscita” e “automation.rientro“) vengono innescate dal cambio di stato dell’entità “group.famiglia“, ovvero quando la famiglia esce o rinentra a casa (di nuovo, qui c’è un approfondimento).

Conclusioni

Ovviamente le esigenze del singolo possono essere nello specifico le più disparate, e anche in questo caso la regola de “il limite è la fantasia” è più vera che mai. Banalmente, nell’esecuzione dei due script (specialmente quello di attivazione del robot) è possibile aggiungere specifiche condizioni relative alle proprie abitudini: magari non è sufficiente avviarlo quando si esce, ma è necessario anche verificare che ci si trovi in uno specifico momento della giornata. Anche la durata della pausa, ovviamente, è regolabile: noi abbiamo proposto 12 ore, ma chiaramente si tratta di una regolazione personale.

Ovviamente l’automazione proposta potrebbe essere applicata liberamente anche ad entità non solo di tipo “Vacumm” ma anche di altra natura.


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.

🔻 Clicca QUI per commentare l'articolo. 🔻