Quali tecnologie vengono usate? Google Home (Un assistente vocale made in google, competitor dell’Echo di Amazon), Un aspirapolvere robot xiaomi e poi uso l’assistente Home-Assistance in esecuzione in un Raspberry Pi, come hub principale, per automatizzare tutti i miei dispositivi smart home. È impostato per connettersi al mio aspirapolvere Xiaomi Mi Roborock, con un’interfaccia di base per avviare, mettere in pausa o stoppare l’aspirapolvere. L’app Mi Home è più avanzata, in grado di mappare il piano della mia casa mentre scansiona e pulisce il luogo.

L’aspirapolvere funziona molto bene nel pulire automaticamente tutta la casa. Ma se volessi pulire solo una stanza in particolare, devo usare l’app Mi Home per disegnare un rettangolo (zona) intorno alla stanza nel piano della casa per avviare la pulizia della zona. L’app non salva questa info, pertanto ogni volta che voglio pulire una stanza diversa, devo ripetere gli stessi passaggi.
Non sarebbe bello se potessi automatizzare tutto questo? Questo post ti fa capire che potrebbe non essere difficile riuscirci.

Hey Google, pulisci la camera da letto

L’obiettivo è essere in grado di inviare un comando a Google Home per comunicare all’aspirapolvere di pulire solo una piccola area a casa. Ecco che ho fatto passo dopo passo:

  • Scoprire le coordinate di un angolo di una stanza per capire la scala delle coordinate;
  • Mappare le coordinate di ogni stanza a casa;
  • Creare come trigger una ricetta IFTTT con l’Assistente Google e il webhook come azione per chiamare il mio server Home-Assistance.

Test del comando app go to target nello strumento di sviluppo del servizio in Home assistant

Lo strumento Home Assistance può essere utilizzato per chiamare i servizi per tutti i dispositivi ad esso collegati. Esiste un comando chiamato app_goto_target il quale può essere adoperato per inviare l’aspirapolvere verso qualsiasi coordinate.

Il punto di aggancio dell’aspirapolvere ha sempre la coordinata [25500, 25500]. Questo corrisponde a qualche parte nella mia stanza di studio. Attraverso vari tentativi ed errori, ho trovato le coordinate di un angolo della mia stanza di studio. Può essere qualsiasi punto della casa, e darà un riferimento per disegnare una mappa in un secondo momento con scala successiva.

Schermata dell'app Mi Home che viene utilizzata per controllare l'aspirapolvere Xiaomi

L’app Mi Home ha mappato la mia intera planimetria. Ho preso uno screenshot di quello, aperto in Sketch e sovrapposto le griglie per disegnare l’asse X e Y. Questo fornisce una stima approssimativa per tutte le coordinate della casa.

L’aspirapolvere supporta un comando per la pulizia delle zone denominato app_zoned_clean. Esso prende in una serie un numero a 5 cifre. Ognuna di queste descrive un rettangolo chiamato zona: Le prime due cifre sono le coordinate dell’angolo in basso a sinistra della zona, le seconde due cifre quelle dell’angolo in alto a destra della zona e l’ultima cifra il numero di volte per pulire una zona.

Con tutte le coordinate della stanza mappate, le ho testate in Home-Assistant e apportato piccole modifiche se necessario. La zona può essere leggermente più grande della stanza, ma non dovrebbe sovrapporsi ad un’altra stanza.

 Test del comando app zoned clean nello strumento di sviluppo del servizio in Assistente domiciliare

Con tutte le stanze della mia casa mappate, lo step successivo era la creazione di ricette IFTTT per consentire a Google Home di comunicare con Home-Assistant, per inviare questi comandi al mio aspirapolvere. Ogni ricetta è stata creata scegliendo Assistente Google come trigger IFTTT e un webhook come azione.

Nell’immagine sopra, Assistente Google come IFTTT Trigger e Webhook come azione per chiamare l’API in Home-Assistant.

È anche possibile creare una ricetta per far si che l’aspirapolvere pulisca l’area alcune volte, dato che la quinta cifra imposta il numero di volte per pulire l’area. Dunque avere l’Assistente Google come Trigger IFTTT, con possibilità di pronunciare una frase con un numero.

Hey Google, pulisci la cucina 3 volte

Il campo params comprende una serie di zone, quindi è possibile creare un’automazione che pulisce un’area con una forma personalizzata. Ad esempio, quando l’aspirapolvere sta asciugando il pavimento nel mio salotto, vorrei escludere l’area in cui si trova il tappeto.

Hey Google, asciuga il mio salotto

Questo è tutto. Ora posso chiedere a Google Home di pulire le stanze di casa, tramite delle “ricette” IFTTT.