community italiana di domotica personale
 
Integrare un robot aspirapolvere tramite infrarossi via Broadlink e Home Assistant

Integrare un robot aspirapolvere tramite infrarossi via Broadlink e Home Assistant

SCOPI DEL PROGETTO:
  • Domotizzare un robot aspirapolvere non-domotico tramite Broadlink e Home Assistant
  • Livello di difficoltà: medio
  • Costo: ridotto (circa 20 € usando Broadlink)
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
  • Un robot aspirapolvere/lavapavimenti controllato tramite proprio telecomando infrarossi
  • Uno o più Broadlink RM4 Mini (o attuatore equivalente con emettitore infrarosso)
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: 2.1

Robot Aspirapolvere su parquet

Abstract

I robot aspirapolvere (e/o lavapavimenti) sono delle appliance domestiche sempre più apprezzate nelle nostre case: fanno infatti le pulizie per noi, o quantomeno ci sgravano dalla necessità di rimuovere quotidianamente polvere e detriti dai nostri pavimenti. Molti soggetti allergici – e non solo – beneficiano di questa nuova tecnologia che si fa ogni giorno più evoluta: robot che sanno riconoscere i dislivelli e le diverse tipologie di superficie, scanner laser per riconoscere ed evitare gli ostacoli, motori di aspirazione sempre più potenti, filtri HEPA e molto altro ancora.

La gamma dei prezzi varia molto: da unità acquistabili con una spesa sotto i 100 euro si può arrivare anche a prezzi che si avvicinano ai 1000: questi ultimi modelli dispongono del non-plus-ultra della tecnologia robotica, inclusa – spesso – la possibilità di controllare il dispositivo tramite app mobile, come per esempio gli ECOVACS.

Molti altri, invece, condividono solitamente un elemento semplice ma potente: un telecomando infrarossi.

La comodità di controllare un robot aspirapolvere tramite cellulare/tablet/computer è evidente: non solo programmare l’unità è particolarmente semplice ed agevole, ma spesso consente anche di avviare (anche automaticamente) la pulizia in assenza degli inquilini, annullando così il fastidio di avere un oggetto semovente – a volte rumoroso – per casa. Purtroppo, di base, queste funzionalità sono presenti solo nei più costosi modelli top di gamma.

Telecomando robot aspirapolvere
un esempio di telecomando.

Il presente progetto illustrerà come riuscire a domotizzare un robot aspirapolvere non-domotico (ovvero non dotato di fabbrica delle capacità di collegarsi alla Wi-Fi ed essere controllato tramite app e tutto ciò che ne consegue) al fine di poterne gestire il comportamento in modo manuale e/o automatico tramite la propria domotica personale basata su Home Assistant.

N.b Questo progetto, per essere attuato, prevede da parte dell’utente un minimo di cultura sul protocollo MQTT e sul funzionamento Node-RED. In merito a quest’ultimo tema specifico, consigliamo la lettura di questo progetto.

Si parte

Logica del progetto

Partiamo da un elementare sillogismo. Dato che:

  • Home Assistant è il nostro “ponte di comando” per il controllo della domotica (non sai cos’è? guarda, è fatto così);
  • Home Assistant, tramite un attuatore Broadlink (eg. RM3 Mini) può inviare segnali infrarossi/radiofrequenza;
  • il robot aspirapolvere e/o lavapavimento è controllabile tramite i segnali infrarossi del proprio telecomando,

è di conseguenza possibile controllare il robot attraverso Home Assistant, integrandolo così al resto della domoticaautomazioni incluse.

Per tradurre questo sillogismo in fatti concreti abbiamo bisogno di un elemento che “traduca” i comandi da Home Assistant in segnali infrarossi – in pratica, che sostituisca la nostra mano e il telecomando del robot.
Per provvedere a questa funzione ci verrà in aiuto, ancora una volta, quella magia applicativa che è Node-RED.

Ciò che andremo a realizzare sarà:

  • definire un’entità “Vacuum” utilizzando la piattaforma “MQTT Vacuum“;
  • attivare il servizio remote.send_command presso Home Assistant e registrare i comandi del telecomando;
  • definire, tramite, Node-RED un “dispositivo virtuale” il quale traduca i comandi MQTT inviati Home Assistant (tramite l’entità “Vaccum” di cui sopra) in chiamate al servizio remote.send_command al fine di inviare i codici infrarossi.

Assunti

In questo progetto si assume che (maggiori spiegazioni a seguire):

  • Home Assistant sia installato e funzionante;
  • la configurazione del client MQTT su Home Assistant sia operativa;
  • il broker MQTT sia operativo;
  • Node-RED sia operativo.

Per attivare broker e funzionalità MQTT su Home Assistant si rimanda a questa guida specifica.

N.b. Per chiarimenti sul tema MQTT si consiglia di leggere la guida dedicata alla configurazione del protocollo MQTT per la propria domotica.

Per quanto riguarda Node-RED, gli utenti Home Assistant OS possono installarlo come semplice add-on, mentre per gli utenti Home Assistant Core@Raspberry Pi OS possono seguire questa guida.

Analisi

La prima cosa da fare è analizzare il telecomando del robot aspirapolvere (e/o lavapavimenti che sia).

Ogni appliance di questo tipo, infatti, prevede diverse funzioni legate al suo livello di evoluzione; le funzioni più tipiche sono l’avvio della pulizia in varie modalità (normale, pulizia spot, pulizia perimetri/bordi eccetera), l’interruzione della pulizia, il parcheggio automatico alla propria stazione di ricarica ed altro.

Quel che è necessario fare è “mappare” queste funzioni con i comandi effettivamente gestibili dall’entità modellabile tramite la piattaforma “MQTT Vacuum” di Home Assistant, i quali sono:

  • start – avvio pulizia
  • pause – interruzione temporanea della pulizia
  • return_home – ritorno alla base di ricarica
  • stop – interruzione della pulizia
  • clean_spot – avvio pulizia su un punto predeterminato della casa
  • locate – localizza il robot (solitamente tramite riproduzione da parte sua di un suono)
  • status – stato del robot

Inoltre è prevista anche la funzionalità “send_command“, la quale permette – solo programmaticamente e non da interfaccia Home Assistant – di inviare comandi personalizzati (la vedremo in chiusura di progetto).

Per effettuare la mappatura è necessario prendere come riferimento il telecomando del robot e cercare di capire quali tasti si avvicinino o corrispondano a una delle funzioni elencate sopra.

Home Assistant

Definire l’entità

Per questo progetto assumeremo (a mo’ di esempio) che il nostro telecomando – e quindi il nostro robot – supporti le seguenti quattro funzioni:

Funzione telecomando Funzione componente “MQTT Vacuum” Payload MQTT
Pulisci la stanza start start
Interrompi la pulizia stop stop
Torna alla base return_home return_to_base
Pulisci il perimetro* clean_spot clean_spot

*Dato che “MQTT Vacuum” non prevede la funzione “pulisci perimetro”, per scelta arbitraria mapperemo questa funzione con la funzione clean_spot“.

A questo punto il codice da aggiungere in configurazione su Home Assistant sarà:

mqtt:
  vacuum:
  - name: "ROBOT Aspirapolvere"
    schema: state
    supported_features:
      - start
      - stop
      - return_home
      - clean_spot
      - status
    command_topic: "vacuum/command"
    state_topic: "vacuum/state"

Dopo il riavvio di Home Assistant, una nuova entità sarà apparsa su Home Assistant: vacuum.robot_aspirapolvere la quale, presso l’interfaccia dell’HUB, apparirà grossomodo così:

Home Assistant - Vacuum

A questo punto ogni azione attuata su tale entità innescherà la pubblicazione di topic MQTT verso il broker, topic che intercetteremo con Node-RED in modo da trasformarli in impulsi infrarossi inviati tramite uno o più attuatori Broadlink e in topic MQTT telemetrici di ritorno, a conferma dell’esecuzione dell’azione.

Creazione TOKEN lunga vita

A questo punto è necessario creare un “TOKEN a lunga vita“, ovvero una chiave d’accesso valida per 10 anni.
Per far ciò, da interfaccia Home Assistant cliccare sul circolo colorato contenente la prima lettera del vostro username posta in basso a sinistra nella colonna dell’interfaccia Home Assistant:

Nome utente su Lovelace UI Home Assistant

Una volta acceduto alla pagina, scollare sul fondo fino a trovare la seguente box:

Home Assistant - Token di accesso lunga vita

Cliccare ora su “CREA TOKEN” e, alla richiesta del nome del token da creare, inserire “node-red“.
A questo punto salvare da qualche parte la stringa che verrà prodotta da Home Assistant (attenzione: non sarà possibile recuperarla successivamente, quindi salvarsela subito da parte).

Servizio “Remote”

A questo punto è necessario che il servizio “remote.send_command” sia presente su Home Assistant. Per farlo è necessario, in breve, che:

  • l’unità (o le unità) Broadlink sia configurate sulla Wi-Fi domestica;
  • l’integrazione presso Home Assistant sia stata opportunamente effettuata.

Sarebbe ridondante riportare qui ciò che è descritto nel dettaglio nella guida di implementazione del Broadlink presso Home Assistant. Qualora non si fosse già provveduto a configurare sia il Broadlink che il relativo componente presso Home Assistant, la guida di riferimento è quindi questa:

Integrare attuatori a infrarossi/radiofrequenza Broadlink a Home Assistant

Cattura dei codici comando

Arrivati a questo punto sarà necessario catturare i codici infrarossi , registrandoli su Home Assistant sotto forma di comandi di device virtuali.

Gestire telecomandi virtuali su Home Assistant via Broadlink (parte 1)

Home Assistant su Node-RED

Affinché il progetto possa essere attuato è necessario dotare il proprio Node-RED dei nodi aggiuntivi necessari per collegare Node-RED a Home Assistant. Per far ciò è necessario installare il pacchetto “Node-RED integration with Home Assistant through the WebSocket and HTTP API“.

Per installarlo su Raspberry Pi OS (Raspbian), il comando è semplicissimo:

cd ~/.node-red
sudo npm install node-red-contrib-home-assistant-websocket
sudo systemctl restart nodered.service

Per gli utenti Home Assistant OS che abbiano implementato Node-RED come add-on la cosa è ancora più facile: non c’è bisogno di far nulla. I sopracitati nodi sono infatti già disponibili a bordo.

Chi utilizza Node-RED sotto Docker, accedere al container (si assume si chiami “nodered“) con:

docker exec -it nodered sh

poi:

cd node_modules
npm install node-red-contrib-home-assistant-websocket
exit

infine

docker restart nodered

Node-RED

Ora che Home Assistant è stato configurato (sia per l’integrazione del componente “MQTT Vacuum” sia “Broadlink”) e che siamo nella disponibilità dei codici infrarossi necessari, quel che dobbiamo fare in ultimo è realizzare, tramite Node-RED, una black-box tale da trasformare i comandi MQTT provenienti dall’entità definita su Home Assistant in un invio di codici infrarossi e di relativi topic MQTT telemetrici di risposta (di avvenuta esecuzione della sequenza).

Per far questo utilizzeremo la tecnica già precedentemente descritta presso “Trasformare più elementi MQTT in un unico dispositivo virtuale tramite Node-RED” guida che si consiglia vivamente di leggere prima di proseguire oltre. Quel che segue ricalca quella guida, ma dà per scontato che i concetti che sono alla base si siano già fatti propri, almeno sul piano teorico.

Realizzeremo pertanto dei flussi su Node-RED tali da gestire le seguenti sequenze di azioni (basandoci sull’esempio che portiamo avanti nel progetto, ma che andranno eventualmente personalizzate) a partire dalla ricezione dei topic inviati da Home Assistant:

Topic MQTT inviato da Home Assistant Azione Topic telemetrico MQTT di risposta
vacuum/command start invio codice che avvia la pulizia vacuum/state cleaning
vacuum/command stop invio codice che interrompe la pulizia vacuum/state idle
vacuum/command return_to_base invio codice che comunica al robot di tornare alla base di ricarica vacuum/state docked*
vacuum/command clean_spot invio codice che interrompe la pulizia in un punto specifico vacuum/state cleaning

*vedi, in fondo al progetto, il paragrafo “perfezionamenti“.

Apriamo dunque Node-RED e, in alto a destra, premeremo su “+” per creare un nuovo flusso che chiameremo “Flow 1” (o come meglio si crede).

La colonna a sinistra rappresenta l’elenco delle tipologie di “nodi” disponibili. Cerchiamo e troviamo nell’elenco (sotto la voce “Input”) un nodo “mqtt in“:

Node-RED - Flusso domotica - dispositivi - mqtt in

trasciniamolo nello spazio vuoto della dashboard e clicchiamoci sopra due volte per aprire sulla destra la dialog box relativa alla sua configurazione, denominata “Edit mqtt in node“:

Node-RED - Flusso domotica - dispositivi - mqtt in - dettagli

A questo punto è necessario indicare:

  • a quale server (broker MQTT) collegarsi (se Node-RED è in esecuzione sul medesimo computer di Home Assistant, indicare “127.0.0.1”);
  • a quale topic iscriversi, ovvero su quale topic “far stare in ascolto” il nostro nodo.

Iniziamo col definire un nuovo server (broker mqtt).
Clicchiamo su “Add new mqtt:broker“:

Node-RED - Flusso domotica - dispositivi - mqtt in - edit broker

Nel campo “Name” indichiamo un nome qualunque, nel caso dell’esempio “Mosquitto LOCAL” (per per caso il broker in uso sia Mosquitto, magari installato sullo stesso computer in cui è in esecuzione Node-RED).

indichiamo poi, alla voce “Server“, l’IP del broker (se è in esecuzione sullo stesso computer di Node_RED, ovviamente indicheremo “127.0.0.1“, altrimenti l’IP del nostro broker esterno a Node-RED). Indicheremo poi la porta ed eventuali credenziali d’accesso presso la tab “Security“.

Al termine della configurazione, clicchiamo su “Update“.

Tornati alla dialog “Edit mqtt in node” è il momento di indicare al nodo “mqtt ip” appena aggiunto alla dashboard quale topic monitorare.

Nel campo “topic” inseriremo quindi il topic che utilizzeremo per comandare sul piano logico il nostro dispositivo virtuale, ovvero (come da configurazione dell’esempio):

vacuum/command

Impostiamo QoS a “1” e, nel campo “Name“, sempre “vacuum/command“.
Al termine della configurazione, clicchiamo su “Done” per tornare alla dashboard.

Se tutto è corretto, il nodo “mqtt in” acquisirà nome “vacuum/command” e sparirà il triangolo rosso, segno che la connessione verso l’MQTT Broker sia andata a buon fine.

Ora è necessario identificare e trascinare in dashboard un nodo di tipo “Switch” il quale, in sostanza, permette di introdurre delle logiche condizionali. Una volta posizionato il nuovo nodo sulla dashboard, lo colleghiamo al primo nodo trascinando il circolo grigio posto sul lato destro del primo (l’output) al circoletto grigio posto sul lato sinistro del nodo del secondo (l’input).

Clicchiamo ora due volte sul nodo appena trascinato per aprire la relativa dialog box di configurazione chiamata “Edit switch node“: qui definiremo il nome del nodo, quale proprietà “valutare” al suo ingresso, infine quale condizione considerare corretta.

Nel campo nome indichiamo “AZIONE” lasciando invariata la proprietà da valutare in ingresso (ovvero msg.payload); nel riquadro sotto “Property” indichiamo poi quattro condizioni valorizzate rispettivamente “start” e “stop“, “return_to_base” e “clean_spot” (ovvero i payload che ci aspettiamo arrivino da Home Assistant insieme al topic vacuum/command)

Node-RED-Flusso-domotica-dispositivi-switch-condizioni

Clicchiamo infine su “Done“.

A questo punto Node-RED avrà modificato il nodo switch (“AZIONE“) fornendogli quattro uscite (quattro pallini grigi sul bordo destro del nodo stesso), le quali rappresenteranno i due punti d’uscita (output) presso il quale il flusso si canalizzerà in base al payload.

In primo pallino grigio in alto rappresenta l’uscita in caso presenza di payload “start“, il secondo “stop“, il terzo “return_to_base” e infine il quarto, “clean_spot“.

Arrivati qui è necessario identificare il nodo di tipo “call service” nel sottoinsieme dei nodi “Home Assistant“, il quale serve fondamentalmente ad evocare il servizio remote.send_command, ovvero per inviare i codici infrarossi. Trascinarne quattro in dashboard e collegarne l’input ai quattro output del nodo “AZIONE” (uno per ciascuno):

Node-RED - Flusso azione - call service HA

Come si nota è presente un triangolo rosso su ciascuno: questo perché il nodo non è ancora stato opportunamente configurato. Quel che andremo a fare è quindi indicare a ciascun nodo “call service” quale sia l’istanza Home Assistant al quale far riferimento, quale sia il servizio da evocare (“remote.send_command“), quale sia l’attuatore Broadlink da usare e infine il codice infrarosso da fargli inviare.

Effettuare doppio clicco sul primo in alto (quello collegato al ramo relativo al payload “start“) e configurare come segue:

  • Name: Start
  • Server: Add new server…
    • Name: Home Assistant
    • Base URL: l’indirizzo del proprio Home Assistant (tipicamente l’indirizzo locale, inclusivo di “http(s)://“)
    • Access Token: il token lunga-vita precedentemente definito
    • Cache Autocomplete Results: no
  • Domain: remote
  • Service: send_command
  • Data: dati strutturati spiegati a seguire

Per “dati strutturati” si intende un payload in formato JSON che contenga:

  • il nome dell’entità “Remote” dell’attuatore Broadlink da usare (generata in fase di integrazione);
  • il codice infrarosso da fargli inviare, ovvero il binomio telecomando virtuale/comando.

Un esempio è il seguente:

{"entity_id":"remote.NOME_DEL_BROADLINK","device":"nome_del_device","command":"nome_del_comando"}

tenendo a mente che:


Nei quattro nodi che andremo quindi a definire, nel primo andrà quello dell’avvio pulizia, il secondo l’interruzione, nel terzo quello di ritorno alla base, nel quarto quello di pulizia di un punto preciso della casa.

Provvedere a configurare i quattro nodi come spiegato per il primo (“Start”), variando il nome del nodo (“Stop”, “Return Home”, “Clean Spot”) e la configurazione appropriata nel campo “Data“.

A questo punto, tra i nodi di tipologia “Function” troviamo quello di tipo “Change” e trasciniamone quattro sulla dashboard, collegandone l’input ad ognuno degli output:

Node-RED - Flusso azione - change

Effettuare doppio click su ognuno e configurarli come segue:

  • il primo dall’alto (collegato a “Start“)
    • Name: Cleaning
    • to: {“state”: “cleaning”}
  • il secondo (collegato a “Stop“)
    • Name: Idle
    • to: {“state”: “idle”}
  • il terzo (collegato a “Return Home“)
    • Name: Returned Home
    • to: {“state”: “docked”}
  • il quarto (collegato a “Clean Spot“)
    • Name: Cleaning spot
    • to: {“state”: “cleaning”}

Trattandosi il quarto sostanzialmente della stessa cosa del primo, è possibile non usarlo e collegare direttamente l’output del quarto nodo “call service” al primo nodo “change” appena creato.

N.b. così facendo l’attuatore Broadlink che invierà i codici sarà uno e uno solo. Trattandosi il robot di un’appliance che si muove autonomamente per casa è facile che servano più Broadlink per coprire più stanze. In questo caso il passaggio sopra prevederà un raddoppio, un triplicare e via così di nodi di tipo “call service” per far sì che tutti i Broadlink inviino contemporaneamente lo stesso codice. Basterà creare gruppi di nodi “call service” (i quali nodi differiscano nella configurazione solo nel campo “host” del campo “Data“, non nel campo “packet“) collegati ai singoli output del nodo “Change”.

Node-RED - Broadlink multipli
un esempio di ramificazione con più attuatori Broadlink.

Ultimo passo: far sì che i payload definiti nei nodi “change” (“cleaning“, “idle“, “docked“) vengano inviati come payload di un topic telemetrico MQTT chiamato “vacuum/state“.

A questo punto, nella lista delle tipologie di nodi, troviamo e trasciniamo in dashboard un nodo di tipo “MQTT out” e collegarne l’input ai quattro output dei quattro nodi di tipo “change” appena configurati:

Node-RED - Flusso azione - MQTT Out

effettuiamo doppio click sul nodo appena aggiunto e configuriamolo come segue:

  • Server: lo stesso indicato nel primo nodo del flusso
  • Topic: vacuum/state
  • QoS: 1
  • Name: vacuum/state

Fine!
Infine, per rendere operativo il flusso – che ora spiegheremo riassumendolo – cliccare in alto a destra il tasto “Deploy“.

Da qui in poi ogni topic di comando vacuum/command ricevuto sul broker (inviato da Home Assistant tramite l’uso dell’entità di tipo “MQTT Vacuum”, o da qualunque client MQTT ad esso collegato) che presenti un payload a scelta tra “start“, “stop“, “return_to_base” e “clean_spot” verrà tradotto nell’azione di inviare il corretto codice infrarosso e di inviare un topic telemetrico di conferma (con paylod appropriato tra “cleaning“, “idle“, “docked“) che, a sua volta, verrà ricevuto da Home Assistant, il quale lo interpreterà come un “comando eseguito”, variando di conseguenza lo stato dell’entità.

Perfezionamenti

Ritorno alla base

Il presente progetto è una versione semplificata di ciò che si può ottenere utilizzando queste tecniche miste. Banalmente, abbiamo assunto che all’invio del comando “return_to_home” l’entità assuma direttamente lo stato “Docked“, quando in realtà sarebbe stato più corretto fargli assumere lo stato “returning“, previsto dalla piattaforma “MQTT Vacuum” e, successivamente, al rilevamento dell’avvenuto docking – e solo in quel momento – variarlo a “Docked“.

Si può realizzare facilmente: è sufficiente posizionare uno strumento di rilevazione di assorbimento elettrico a monte della stazione di ricarica e, tramite tecniche come quelle descritte qui, definire un’entità “Binary Sensor” il cui stato diventi “on” quando viene rilevato un certo assorbimento (il che deduca che il robot si stia ricaricando – e quindi sia tornato alla base). Analogamente potrebbe essere una buona idea ottenere il medesimo risultato utilizzando un sensore di vibrazione per capire se l’aspirapolvere stia lavorando o meno in base alle sue vibrazioni.

A questo punto sarebbe sufficiente definire una banale automazione su Home Automation (oppure un flusso Node-RED) che, al cambio dello stato del “Binary Sensor” (da “off” a “on“), pubblichi un topic MQTT “vacuum/state docked“. Ovviamente andrebbe modificato anche il flusso principale Node-RED al fine di correggere il payload del topic telemetrico (del ramo dedicato al “Return Home”) da “docked” a “returning“.

Ipotizziamo quindi che il “Binary Sensor”, definito (tramite la misurazione di assorbimento elettrico o delle vibrazioni dell’aspirapolvere, è indifferente) si chiami binary_sensor.vacuum_status:

- alias: "Vacuum dock"
  trigger:
    platform: state
    entity_id: binary_sensor.vacuum_status
  condition: []
  action:
  - service: mqtt.publish
    data:
      topic: vacuum/state
      payload: >
        {% if trigger.to_state.state == 'on' %}
        {"state": "cleaning"}
        {% else %}
        {"state": "docked"}
        {% endif %}
      retain: true

 

N.b. Inoltre, dopo aver inviato il comando di avvio pulizie e lasciando l’aspirapolvere lavorare autonomamente (cioè fino a fine batteria/fine programma) non si potrebbe solitamente conoscere il termine pulizia: introdurre un “Binary Sensor” che rilevi lo stato operativo permetterebbe di aggiornare, come spiegato sopra, lo stato da “Cleaning” a “Docked” e viceversa (sempre tramite la pubblicazione di un topic MQTT “vacuum/state“), come nell’automazione illustrata qui sopra.

Ulteriori perfezionamenti possono essere ottenuti tramite l’adozione della funzionalità “send_command” prevista dalla piattaforma “MQTT Vacuum”, la quale permette di inviare comandi extra i quali possono tornare utili in presenza di funzionalità evolute attivabili tramite telecomando le quali non mappino non quelle, di base, presenti sull’entità.

Percentuale carica batteria

Analogamente al “ritorno alla base”, la percentuale di carica della batteria è un parametro accettato dalla piattaforma “MQTT Vacuum“. Ovviamente anche in questo caso andrebbe utilizzato un sensore che, su base deduttiva, calcoli empiricamente la quantità di carica della batteria in base al tempo trascorso dall’ultimo “Docked”.

Uso

L’entità vacuum.robot_aspirapolvere sarà ora pienamente operativa: se si è configurato tutto correttamente, usandola tutti i comandi verranno eseguiti in modo corretto, inviando i codici infrarossi opportuni.

Ovviamente, come spiegato nell’abstract, la cosa forse più interessante del domotizzare un robot aspirapolvere è quella di poter programmare tramite le automazioni la sua attivazione/disattivazione sfruttando i servizi tipici del componente Home Assistant dal quale tale entità deriva, ovvero “Vacuum”.

Poniamo per esempio il caso di voler attivare la pulizia tutti i giorni alle 8:00 del mattino. L’automazione sarebbe a grandi linee la seguente:

automation:
  alias: "Auto-start ROBOT"
  trigger:
    platform: time
    at: '08:00:00'
  condition: []
  action:
    service: vacuum.start
    entity_id: vacuum.robot_aspirapolvere

Un’altra interessante possibilità è quella di innescare la pulizia (magari utilizzando la funzione “Clean Spot”) quando la famiglia esce di casa.

Assumendo di avere a disposizione un gruppo di entità di tipo “Device Tracker” (che determinino quindi lo stato di presenza degli inquilini) chiamato group.awesome_people, l’automazione sarebbe la seguente:

automation:
  alias: "Auto-start ROBOT"
  trigger:
    platform: state
    entity_id: group.awesome_people
    from: 'home'
  condition: []
  action:
    service: vacuum.clean_spot
    entity_id: vacuum.robot_aspirapolvere

e così via. Il limite, come sempre, è la fantasia.

Integrare un climatizzatore tradizionale a Home Assistant via Broadlink e SmartIIR (v2)

⚠️ 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.