Guida: come installare e configurare Home Assistant su Raspberry Pi

Quando mi hanno regalato il Raspberry Pi 3, non ho avuto dubbi su quale sarebbe stato il suo utilizzo, ho seguito questa guida di Massimiliano e mi sono buttato nel mondo della smarthome installando Domoticz. Nel giro di qualche mese ho capito due cose importantissime: che la caratteristica base di qualunque impianto domotico dovrebbe essere l’affidabilità (ed ogni volta che provavo ad installare un plug-in peggioravo la situazione) e che dalla mia Casa Smart volevo molto di più. Frequentando il canale #smarthome sullo Slack di SaggiaMente ho scoperto dell’esistenza di Home Assistant, un sistema alternativo da installare sul Raspberry (ma non solo) per gestire la nostra casa, le cui tre caratteristiche principali sono stabilità, supporto nativo a numerosissimi dispositivi (qui la lista in continua evoluzione) e una bella interfaccia.

In questa guida spiegherò come procedere all’installazione di Home Assistant su Raspberry e come iniziare ad organizzare i dispositivi domotici nella schermata principale. Oltre al Raspberry ed una microSD, consigliamo come base una buona scheda da 16GB come questa SanDisk, oppure se si vuole  stare più tranquilli con i backup si può optare per una da 32GB. Ci vorrà un po’ di pazienza, ma prometto che non dovrete digitare neanche un comando da Terminale.

Preparare la microSD per l’installazione

Per prima cosa procuriamoci l’immagine di Hass.io da questa pagina, da flashare sulla microSD con il software gratuito Etcher. Per farlo dobbiamo semplicemente avviare Etcher ed inserire la microSD nel lettore del nostro PC/Mac, poi scegliere l’immagine disco di Hass.io appena scaricata e premere su Flash. L’operazione durerà meno di 5 minuti, al termine dei quali bisognerà togliere e reinserire la scheda microSD. Siamo quasi pronti, ma se intendiamo usare il collegamento Wi-Fi (io ho preferito collegarlo via cavo) dobbiamo editare il file system-connections/resin-sample inserendo SSID (nome della rete) e password di protezione, quindi la microSD sarà pronta da inserire nel Raspberry.

Inseriamo la scheda microSD nel Raspberry, colleghiamo il cavo di rete (oppure no, se si è scelto il Wi-Fi) e diamo corrente alla board (consigliamo un alimentatore da almeno 2,5A come questo, che ha anche un comodo interruttore sul cavo). Una volta acceso, il Raspberry comincerà a scaricare l’ultima versione di Home Assistant e procederà con l’installazione vera e propria. Possono essere necessari anche fino a 20 minuti, quindi abbiate pazienza e andate a fare altro. Per verificare lo stato dell’installazione vi potete collegare all’indirizzo http://hassio.local:8123 dove comparirà una schermata che segnala che l’installazione è in corso (ma senza una barra di progresso o un ETA) e quando questa sarà terminata verremo rediretti all’interfaccia principale del nostro nuovo sistema domotico.

Intanto, se ancora non lo avete fatto, procuratevi un buon editor di testo che servirà più avanti: la scrittura dei file di configurazione si basa infatti su YAML,in cui la formattazione e l’indentazione del testo sono importanti almeno quanto il testo stesso (io vi consiglio atom.io che mi ha semplificato notevolmente la vita). Procediamo quindi ad assegnare, tramite la pagina di configurazione del router, la prenotazione di un indirizzo IP statico per il nostro Raspberry e poi colleghiamoci a http://IP_RASPBERRY:8123 oppure, come già detto, a http://hassio.local:8123

Di default, Home Assistant ha abilitato il servizio “discovery”: in pratica all’avvio analizzerà la rete per trovare se sono presentidei dispositivi compatibili e procederà automaticamente alla loro configurazione. Se possedete ad esempio Sonos, Chromecast, Apple TV, Yeelight, Philips Hue, una TV Samsung, ecc… troverete già la vostra schermata principale popolata dai questi dispositivi e non resterà che fare un po’ d’ordine, come vedremo in seguito.

Sulla sinistra c’è il menù principale: andiamo su Hass.io e in alto troviamo la scheda“Add-on Store”. Qui si possono osservare alcuni dei“pacchetti”installabili per estendere le funzionalità native di Home Assistant: per iniziareci basterà installare “Sambashare”, che esporrà in rete le cartelle necessarie alla configurazione del nostro Home Assistant. Quando avremo sistemato le altre cose ci dedicheremo ad HomeKit.

Abilitando Samba sul Raspberry, dal nostro Mac lo vedremo come dispositivo di rete “hassio”, e potremo iniziare a prendere confidenza con i file .yaml presenti nella cartella“config”. Il file sicuramente più importante è configuration.yaml, dove si trovano la maggior parte delle impostazioni: apritelo pure con l’editor di codice prescelto e non spaventatevi perché è più semplice di quello che sembra. Il file inizia così:

homeassistant:
  # Name of the location where Home Assistant is running
  name: Home
  ...

Già da queste prime righe possiamo capire alcune cose, che ci saranno utili in seguito:

  • il simbolo del cancelletto (#) indica la presenza di una riga di commento, e HA ignora ogni carattere che contiene;
  • in un file YAML l’indentazione è fondamentale: notiamo come dopo homeassistant: il testo vada a capo, e cominci con name: esattamente dopo 2 spazi (lo spazio di indentazione “standard” nei file yaml).

Home Assistant andrà a leggere questo file ad ogni suo avvio: dal momento che la sua dimensione cresce con l’aumentare delle impostazioni che andremo a scrivergli dentro (e la sua leggibilità peggiora di conseguenza), è buona norma (ma non un obbligo) “spezzettarlo” in più parti. Quindi, se doveste vedere in futuro riferimenti ad un file zones.yaml, per esempio, è semplicemente un file creato per non inserire le informazioni sulle zone direttamente nel file configuration.yaml, includendole con una scrittura tipo:

zone: !include zones.yaml

Tornando al nostro file di configurazione, come primo passo possiamo iniziare ad inserire i dati di longitudine, latitudine, altezza sul livello del mare e nome dell’abitazione. Ipotizzando di voler collegare anche dei dispositivi Z-Wave, si dovrà inserire al fondo del file configuration.yaml queste due righe, che abilitano il relativo menu.

zwave:
  usb_path: /dev/ttyACM0

Oppure, se volessimo aggiungereanche i nostri dispositivi Netatmo sarà sufficiente aggiungere:

netatmo:
  api_key: netatmo_api_key
  secret_key: netatmo_secret_key
  username: netatmo_username
  password: netatmo_password

In questo caso sarà necessario un ulteriore passaggio sul sito Netatmo per ottenere api_key e secret_key, che andranno inserite insieme al nome utente e la password. Tutte queste informazioni le trovate nella pagina che ho linkato sopra, contenente l’elenco dei componenti compatibili.

Ogni modifica che fate al file di configurazione vi consiglio di testarla da Impostazioni / Generale / Convalida della configurazione: se è tutto ok si può riavviare Home Assistant dalla stessa pagina per vedere comparire i nuovi dispositivi (Gestione del server / Riavviare). Da questa pagina, in basso, è anche possibile scegliere la lingua italiana per l’interfaccia.

È il momento di fare un po’ d’ordine

Arrivati a questo punto la vostra scheda “Panoramica” della homepage sarà piena di cerchi rossi con dei nomi poco familiari, e le luci (se ne avete) si saranno raggruppate in autonomia.

Passiamo dunquealla modifica di unsecondo file YAML, denominato groups.yaml che ci permetterà di organizzare i dispositivi per rendere più chiara e leggibile l’interfaccia. Questo file sarà vuoto subito dopo l’installazione, per cui dovremo cominciare a scriverlo da zero per riordinare le entity in schede e le varie schede in pagine. Di seguito troverete alcuni esempi che potete copiare ed incollare direttamente nel vostro file group.yaml per avere una traccia da cui partire, ma alla fine dovrete “cucirvelosu misura” in base a come volete organizzare le pagine e le card.

Per prima cosa cerchiamo di capire come HA chiama le “entità” che controlla o di cui legge gli aggiornamenti: cliccando sul simbolo <> sotto “Strumenti per gli sviluppatori” arriviamo alla pagina States, e in particolare a Current Entities. Qui troviamo l’elenco delle entities che controlla HA, come per esempio il mio light.cucina:

Il nome completo dell’entità sarà composto dal nome del dominio (light, nel nostro caso, e quindi capiamo subito che si tratta di una luce smart, ma potrebbe anche essere sensor, switch, ecc…) seguito da un punto e dal suo effettivo nome “proprio”, cioè cucina. Home Assistant ci informa anche che lo stato di light.cucina è acceso (on) e ci fornisce ulteriori informazioni (come il colore, la luminosità e via dicendo) che vengono definiti attributi.

Arrivati a questo punto sapere il nome completo di un’entità ci serve proprio per mettere un po’ d’ordine in questo marasma creando i vari gruppi, che andremo a scrivere nel file groups.yaml.In Home Assistant un gruppo si definisce con almeno questi componenti:

# Esempio di gruppo da incollare in group.yaml 
  cucina:
    view: 
    entities:
      - light.cucina
      - light.tavolo

Dopo aver ricaricato i gruppi dalle impostazioni avremo creato un gruppo “cucina”, che troveremo anche nelle entities con il nome group.cucina, che comprende light.cucina e light.tavolo. La prima cosa da fare, quindi, è raggruppare tutte le identità che vogliamo che vengano visualizzate insieme, per tipologia (tutte le luci, tutti i sensori di movimento, ecc…) o per posizione (tutte le entities in salotto, in balcone, ecc…) come mostrato negli esempi qui sotto.

I due gruppi mostrati qui sopra vengono chiamati card, perché mostrano i valori delle entities che li compongono e possono essere visualizzati affiancati. Quando cresce il numero di cards visualizzate e si vuole inserire unulteriore livello di suddivisione, si possono utilizzare le schede:

Una volta scritti i gruppi, passare da una visualizzazione all’altra è immediato in HA:

default_view:
   name: Casa
   icon: mdi:home #tutte le icone utilizzabili https://materialdesignicons.com
   view: yes
   entities:
     - group.bagno
     - group.cucina
 bagno:
   name: Bagno
   view: yes
   entities:
     - light.specchio
     - light.doccia
 cucina:
   name: Cucina
   view: no
   entities:
     - light.cucina
     - light.tavolo

Tre osservazioni veloci sul codice appena scritto:

  1. il gruppo“default_view”è il gruppo della pagina iniziale (scheda), al quale vanno aggiunti tutti i gruppi “personalizzati” creati da noi;
  2. l’espressione view: no yes indica ad HA se deve visualizzare il gruppo come card (no) o come scheda (yes);
  3. fintanto che non decideremo in quale scheda posizionare la nostra card, questa non sarà visibile.

In base al codice appena mostrato, Home Assistant genererà:

  • una pagina iniziale, chiamata Casa;
  • una scheda a fianco di Casa, chiamata Bagno, con all’interno light.specchio e light.doccia;
  • una card all’interno della scheda “Casa”, chiamata “Cucina”.

Quindi per inserire le card nelle varie schede andremo a scrivere nell’elenco delle entities della relativa scheda group.nome_card (attenzione il nome della card non è quello che scrivete sotto name:,  quello è solo il nome visualizzato nella schermata), se invece volete mantenere l’entità nel pallino in alto, basterà mettere direttamente nell’elenco della scheda l’entità oltre alle card.

Questo schema di Cesare dopo la prima installazione mi è stato molto utile per capire come è strutturato il file group.yaml, nella scheda default_group (1) sono presenti sia dei singoli componenti es: sun.sun (3) sia delle card es: group.temperatura (4)

Ogni volta che modifichiamo la pagina gruppi ricordiamoci di testare la configurazione e se è tutto ok basterà ricaricare solo i gruppi senza necessità di riavviare il server. Una volta capito come funziona la pagina group.yaml dovreste essere in grado di di ambientarvi e fare ordine in Home Assistant a vostro piacimento. A questo punto non resta che pensare ad integrare qualche automazione o creare qualche sensore virtuale, l’unico limite sarà la vostra fantasia, ma per queste cose magari scriverà un articolo qualcun altro nei prossimi giorni.

Il modo migliore per capire come funziona è cominciare a guardare le configurazioni di altri utenti, ne trovate molte su questa pagina, ma soprattutto vi consiglio di guardarvi bene le configurazioni pubblicate nel nostro canale Slack da @mastropino e @albyzambo, che a me sono state utilissime, come fondamentale è stata la condivisione di esperienze di tutti i SaggiUtenti sul nostro canale #SmartHome dello Slack di SaggiaMente.

Autore:
Davide Dari (@daxda)

Revisori:
Massimiliano Latella (@lamax)
Alberto Zamboni (@albyzambo)
Andrea Calabrò (@mastropino)
Cesare Munari (@cmunari)
Fabrizio Ascari

SmartHome Channel

Special Team - I SaggiUtenti del canale #SmartHome sul nostro Slack uniti per creare guide e recensioni dedicate all'automazione. Partecipa anche tu entrando nel gruppo effettuando una donazione dal SaggioSupporto o discutendo con noi nel Canale Telegram SmartHome Italia