Home-assistant – telecamere e automazioni
Ed eccoci arrivati al secondo appuntamento della serie #LombaXHomeLab , potete trovare gli altri articoli semplicemente cliccando sull’hashtag.
Iniziamo ad analizzare più nel dettaglio le varie componenti del mio HomeLab, ho deciso di partire da Home Assistant (o Hass, in breve), che forse è un po’ il “cuore” del progetto. Tutto è iniziato da Home Assistant, inizialmente installato su un piccolo Raspberry Pi.
Poi, col tempo, le mie esigenze sono cambiate e ho dovuto potenziare il tutto con un Intel Nuc, ma questa è un’altra storia.
Cos’è Home Assistant?
> “Open source home automation that puts local control and privacy first.“
Quindi, in poche parole, un Hub per tutti i dispositivi IoT di casa nostra, con un forte focus su controllo locale e privacy.
In questo articolo però non mi voglio focalizzare su cos’è Home Assistant o su informazioni “base” per installarlo, quindi non prendetelo come un tutorial, ma piuttosto uno stimolo alla vostra creatività. Non esitate, però, a commentare e chiedere chiarimenti qualora qualcosa non fosse chiaro.
Infine, dato che con Hass faccio tante cose, l’articolo sarebbe un po’ troppo “corposo” quindi lo spezzerò in varie puntate.
Questa è la schermata principale del mio Home Assistant:
É totalmente personalizzabile nel mood grafico, cosa che però non ho fatto e non penso che farò, perchè sono totalmente incapace in tutto ciò che ha a che fare con grafica e UX 🙂 quindi mi sono concentrato più su quello che c’è sotto il cofano.
Bando alle ciance, un breve indice e poi si parte.
Di cosa parleremo in questa serie di articoli?
- Videosorveglianza: collegare e gestire telecamere, accenderle e spegnerle quando necessario
- Controllo luci: gestione di luci di vari generi e vendor, automazioni per gestirle in base agli orari o a determinate condizioni
- Comandi vocali: utilizziamo Siri per gestire luci, e magari anche la TV
- Controllo temperature e alert: fa freddo? fa caldo? E se fa troppo caldo, ti avviso.
- Tempi di viaggio previsti: a che ora parto per andare a lavoro?
- Teniamo d’occhio i consumi di corrente: Engage Efergy
Videosorveglianza
In alto a sinistra vediamo le Telecamere, i primi componenti che ho iniziato a controllare con Home Assistant, che in questa immagine sono spente. Why?
La prima esigenza è nata proprio così: ho 2 telecamere D-Link (vecchiotte), che supportano 2 funzionalità importanti, motion detection e alert via e-mail. Purtroppo però non sono programmabili gli orari di attivazione, senza contare che questi orari non sono sempre prevedibili. Come attivare la videosorveglianza ma evitare di ricevere alert quando io o mia moglie siamo in casa? E come rispettare la nostra privacy?
Ho sfruttato alcune componenti di Home Assistant e un po’ di hardware “di riciclo”, che avevo in casa.
Perchè il bello di Home Assistant è proprio questo: oggi supporta circa 1.200 componenti, quindi è altamente probabile che il vecchio device IoT che avete comprato 2 anni fa, e che ora è chiuso in una scatola perchè non si integra con nulla, possa essere gestito con Home Assistant
Hardware:
- Per l’accensione/spegnimento delle telecamere, ho usato due Belkin Wemo switch
- Ovviamente le telecamere 🙂 , due D-Link di cui non ricordo il modello e forse poco importa
Software:
- Hass gestisce nativamente gli switch Belkin Wemo, se sono sulla stessa rete locale li autorileva e può controllarli senza bisogno di far nulla. Tutti i device che possiedono un interruttore, sono chiamati “switch” su Hass, e vengono visualizzati con un semplice interruttore on-off nell’interfaccia.
- Geolocalizzazione: un altro componente di Hass è il “device_tracker”, componente che rileva la posizione/presenza di un device (tipicamente un cellulare) in vari modi. Può eseguire scansioni temporizzate all’interno della rete con NMap per rilevare se il Mac Address del vostro cellulare è connesso, può basarsi sulla presenza rilevata tramite Bluetooth, oppure (come ho fatto io), sul GPS dei vostri cellulari.
- Automazioni: un altro componente importante di Home Assistant è “automation”, che permette di eseguire automaticamente alcune attività solo se si presentano determinate condizioni.
- OwnTracks: App disponibile su iOS e Android, traccia costantemente la posizione del vostro cellulare e la invia a un MQTT Broker di vostra scelta. Hass offre questa funzionalità anche con la sua App nativa, ma si tratta di una funzionalità implementata in un secondo momento, che non ho ancora testato.
- MQTT: si tratta di un protocollo di messaging “machine to machine” molto leggero, lo useremo per “trasportare” le informazioni di localizzazione da OwnTracks a Hass. Necessità di un server MQTT, nel mio caso ho deciso di utilizzarne uno cloud e gratuito chiamato CloudMQTT. Hass dovrebbe avere un MQTT server integrato, ma anche in questo caso si tratta di una funzionalità aggiunta in seguito, che non ho ancora testato.
NB: Hass ha moltissimi “componenti”, ma un altro componente core che vale la pena citare anche se in questo caso non è stato utilizzato, si chiama “sensor”.
Un Sensor permette di rilevare lo stato di qualsiasi cosa. Esistono sensori fisici (es. un termometro digitale, un rilevatore di movimento, un rilevatore di gas), sensori “virtuali” (es che rilevano le previsioni del tempo, quando il sole sorgerà o tramonterà).
Ora che abbiamo tutti gli ingredienti, la ricetta:
Sorvolo sul collegamento di Switch Belkin Wemo e delle Telecamere, in pochi minuti sarete in grado di collegarli e fare in modo di accendere/spegnere le telecamere dall’interfaccia di Hass.
Una volta fatto ciò, dobbiamo collegare Hass al nostro MQTT Broker, in configuration.yaml andiamo a inserire i dati di CloudMQTT (dopo esservi iscritti, li trovate nella vostra area personale)
In configuration.yaml andiamo a inserire i seguenti dati (NB yaml è sensibile all’indentazione, quindi ricontrollatela bene perchè potrebbe essere “saltato” qualche spazio durante il copia e incolla)
mqtt: broker: xxx.cloudmqtt.com port: 10109 username: “your_username” password: “your_password”
questi stessi dati andranno inseriti su OwnTracks, con l’aggiunta di un id che identifichi il cellulare (chiamato Topic nel gergo di MQTT). Nel mio caso avremo 2 topic, uno per il mio cellulare (es marito) e uno per mia moglie.
A questo punto, nel file known_devices.yaml di Hass andiamo a inserire 2 nuovi devices:
your_username_marito: name: MaritoiPhone track: yes hide_if_away: no your_username_moglie: name: MoglieiPhone track: yes hide_if_away: no
Mancano ancora un paio di cose. Sempre in configuration.yaml dobbiamo inserire la posizione di casa
zone: name: home latitude: 11.12345 longitude: 22.23456 radius: 250
(NB ho scelto un raggio un po’ ampio, 250 metri, ma nulla vi vieta di modificarlo. Fate un po’ di prove, la scelta giusta dipende anche dalla precisione del vostro cellulare)
A questo punto, Hass dovrebbe essere in grado di rilevare se siete in casa o no:
Infine, dobbiamo creare un “gruppo” per la famiglia (per rilevare quando almeno un membro della famiglia è in casa), e uno con gli switch delle Telecamere (per accenderle/spegnerle entrambe contemporaneamente)
group: family: name: Famiglia view: yes entities: - device_tracker.your_username_moglie - device_tracker.your_username_marito telecamere: name: Telecamere entities: - switch.telecamera_sala - switch.telecamera_studio
A questo punto siamo pronti per creare la nostra automation
automation: - alias: Turn on camera when family outside trigger: platform: state entity_id: group.family from: 'home' action: - service: switch.turn_on entity_id: group.telecamere - service: notify.ios_iphone_di_lombax data: message: "Telecamere accese" data: push: badge: 0 category: "DEFAULT_NOTIFICATION" - alias: Turn off camera when family inside trigger: platform: state entity_id: group.family to: 'home' action: - service: switch.turn_off entity_id: group.telecamere - service: notify.ios_iphone_di_lombax data: message: "Telecamere spente" data: push: badge: 0 category: "DEFAULT_NOTIFICATION"
Molto semplice, come potete vedere.
Nella prima automation stiamo dicendo che quando lo “state” del gruppo “family” non è più “home” (ricordate come abbiamo chiamato la zona di casa nostra?), deve scattare una action “switch.turn_on” sul gruppo “telecamere”. Nel secondo, viceversa.
In questa configurazione vedete anche un “service” specifico per le notifiche. Si tratta di un tema che vedremo in uno dei prossimi articoli, vi basti sapere che…quando l’automazione si verifica, ricevo una notifica push sul mio cellulare.
Per oggi è tutto, alla prossima puntata!