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

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

SCOPI DEL PROGETTO:
  • Definire un automatismo che avvii la pulizia di casa a fronte dell’abbandono dell’ambiente da parte degli inquilini
  • Livello di difficoltà: basso
  • Costo: n.a.
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
PROGETTO INDICATO a UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
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
      - action: vacuum.clean
        entity_id: vacuum.robot_aspirapolvere
  vacuum_to_dock:
    sequence:
      - condition: state
        entity_id: vacuum.robot_aspirapolvere
        state: 'cleaning'
      - action: vacuum.stop
        entity_id: vacuum.robot_aspirapolvere
      - action: 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 eseguita l’azione vacuum.clean associata 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 (azioni 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: true
  trigger:
    platform: state
    entity_id: group.famiglia
    from: 'home'
  condition: []
  action:
    - action: script.turn_on
      entity_id: script.vacuum_on

- alias: "RIENTRO"
  initial_state: true
  trigger:
    platform: state
    entity_id: group.famiglia
    to: 'home'
  condition: []
  action:
    - action: 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.

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.