Home Assistant è una piattaforma open-source di automazione domestica che consente di integrare e gestire diversi dispositivi smart all’interno di un’unica interfaccia.

Il vero valore risiede nelle automazioni. Invece di gestire cinque app di cinque fornitori diversi, è possibile controllare tutto da un’unica dashboard e creare automazioni attraverso diversi ecosistemi. Esempi di automazioni includono:

  • Spegnere tutte le luci quando tutti escono
  • Chiudere la porta quando l’allarme è attivato
  • Ricevere una notifica quando il garage è aperto da 10 minuti

Tutto funziona localmente, quindi è privato e non si interrompe quando i server di altri fornitori vanno giù.

Vedremo come monitorare i consumi energetici utilizzando una presa smart, come il Tapo Smart Plug P125M, e anche come ricevere i dati dei consumi direttamente dal sito di Enel Energia in una apposita dashboard.

A questo scopo, creeremo due VLAN separate: la DMZ sarà dedicata ad ospitare la VM di Home Assistant, mentre la VLAN IoT sarà riservata ai dispositivi smart, isolandoli completamente dalla rete Internet.

Creazione VLAN DMZ

Una DMZ (demilitarized zone) è una rete utilizzata solitamente per ospitare tutti i servizi pubblicamente accessibili, come nel nostro caso Home Assistant. L’intenzione è quella di proteggere la rete interna dalle minacce esterne, riducendo l’esposizione pubblica delle risorse, oltre a limitare i danni potenziali nel caso in cui un intruso riesca ad infiltrarsi nel sistema.

L’obiettivo principale è quindi quello di implementare una VLAN dedicata con le seguenti caratteristiche:

  • Tag VLAN: 99
  • Subnet: 10.0.99.0/24
  • Gateway: 10.0.99.254

Per procedere con la creazione della VLAN, accedere a OPNsense e navigare verso la sezione Interfaces > Devices > VLAN.

vlan-assigments

Ora, recarsi nella sezione Interfaces > Assignments per abilitare la VLAN, adeguando le relative specifiche.

create-vlan

Nella sezione DHCP, configurare il range degli indirizzi IP che saranno assegnati: nel nostro caso, imposteremo il range 10.0.99.50-10.0.99.249.

Accedere allo switch di rete e creare la VLAN: non deve essere configurata come untagged su alcuna porta, ma deve essere taggata sulla porta in trunk, che nella nostra configurazione è la porta 1.

switch-vlan

Regole di firewall

Configurare le seguenti regole di firewall per garantire che l’accesso alla rete interna sia limitato. Le regole devono consentire esclusivamente l’accesso a Internet, bloccando comunicazioni verso eventuali VLAN interne.

firewall-dmz-rules

Se necessario, consentire al dispositivo mobile di accedere alla DMZ, limitando l’accesso esclusivamente alla porta 443 (HTTPS), utilizzata per i servizi web.

wlan-to-dmz

Creazione VLAN IoT

La VLAN IoT deve essere creata anche sull’Access Point, in quanto verrà utilizzata per connettere vari dispositivi smart, senza però consentire accesso a Internet. Il processo di creazione è identico a quanto descritto nel paragrafo precedente.

L’unica differenza è che la VLAN IoT nello switch deve essere taggata su entrambe le porte in trunk: nel nostro homelab, la porta 1, che è collegata a OPNsense, e la porta 16, dove è connesso l’Access Point.

iot-switch

Queste le specifiche:

  • Tag VLAN: 30
  • Subnet: 10.0.30.0/24
  • Gateway: 10.0.30.254

Configurare le seguenti regole del firewall per garantire che non sia consentito alcun accesso a Internet o ad altre VLAN interne.

iot-firewall-rules

Successivamente, sarà necessario configurare le regole del firewall per consentire unicamente alla VM di Home Assistant di accedere a questa VLAN, in modo che possa ricevere i dati dai dispositivi smart presenti.

allow-ha-to-iot

Creazione VLAN nell’AP

La creazione della VLAN IoT nell’AP dovrebbe essere molto semplice. L’unica accortezza è assicurarsi che la VLAN sia configurata per operare sulla banda 2.4 GHz, sicuramente compatibile con la maggior parte dei dispositivi.

Configurare una nuova rete wireless (IoT), associandola alla VLAN 30 e inserendo una password adeguata. Il processo di creazione può variare da dispositivo a dispositivo, ma generalmente seguirà una procedura simile:

ap-iot-vlan

ap-iot-radio-settings

Una volta creata, tentando di collegarsi con il cellulare non sarà possibile accedere alla rete Internet. Questo comportamento è desiderato e conferma che la configurazione della VLAN sta funzionando correttamente.

Per maggiori informazioni, fare riferimento all’articolo dedicato all'AP Zyxel.

Installazione di Home Assistant

Scaricare la versione qcow2 direttamente dal sito ufficiale e, come descritto nell’articolo precedente, importarla in Proxmox.

Creare la VM con almeno 2 GB di RAM, selezionando UEFI.

ha-vm

Nel caso si verifichi un errore di avvio, sarà necessario disattivare il Secure Boot della VM.

  • Ad avvio fallito, premere ESC
  • Accedere alle impostazioni del BIOS e dirigersi verso Device Manager
  • Selezionare Secure Boot Configuration
  • Deselezionare Attempt Secure Boot e confermare il prompt Configuration Changed

disable-vm-secure-boot

Questa operazione dovrebbe risolvere il problema di avvio, non solo per Home Assistant, ma anche per altre immagini basate su UEFI.

homeassistant-cli

Per configurare Home Assistant, accedere alla pagina web via HTTP e seguire il wizard di installazione.

È necessario configurare le regole del firewall per consentire l’accesso, dalla rete locale LAN alla VM, sulle porte 443 e 8123, quella di default, che sarà disattivata al termine della configurazione.

Infine, dalle configurazioni di rete, impostare un indirizzo IP statico, come da immagine:

ha-static-ip

Riavviare HA e rieseguire il login.

Aggiungere un certificato SSL self-signed

Anche se la VM di HA è isolata da altre reti, è sempre consigliato utilizzare la crittografia. Non implementare un certificato SSL/TLS espone le credenziali e i dati a potenziali intercettazioni, poiché viaggerebbero in chiaro sulla rete.

HTTP è un protocollo obsoleto e non utilizza alcuna forma di crittografia per la trasmissione o la ricezione dei dati. Se un attaccante dovesse intercettare il traffico tra il dispositivo utilizzato e l’interfaccia web di Home Assistant durante il login, potrà visualizzare la password in chiaro.

Per utilizzare un certificato self-signed, è necessario installare il componente aggiuntivo Terminal & SSH. Questo è accessibile solo in “Modalità Avanzata”.

  • Navigare sulla sezione Profilo e attivare la modalità avanzata

advanced-mode

  • Per installare il componente aggiuntivo, recarsi nelle Impostazioni e selezionare Apps

terminal-apps

  • Ricercare Terminal & SSH Add-one cliccare su Install
  • Una volta completata l’installazione, cliccare su Start
  • Si consiglia di installare anche File editor, che permette di modificare i file di configurazione direttamente dalla finestra del browser

start-terminal

  • Avviare una nuova finestra del terminale nel browser

Per creare il certificare autofirmato, eseguire i seguenti comandi:

1
2
3
4
5
6
7
8
apk add openssl

mkdir ssl && cd ssl

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
  -keyout ha.key -out ha.crt \
  -subj "/CN=homeassistant.home.lan" \
  -addext "subjectAltName=DNS:homeassistant.home.lan,IP:10.0.99.20"

In questo esempio, -subj "/CN=homeassistant.home.lan" indica il soggetto del certificato, specificando il Common Name (CN). Invece -addext "subjectAltName=DNS:homeassistant.home.lan,IP:10.0.99.20" si aggiungono estensioni al certificato, per garantire che sia valido anche per l’IP specificato, oltre che per il nome di dominio.

Verificare che il certificato sia stato creato correttamente:

1
2
3
4
openssl x509 -in ha.crt -text -noout | grep -A 1 "Subject Alternative Name"
            
            X509v3 Subject Alternative Name: 
                DNS:homeassistant.home.lan, IP Address:10.0.99.20

Modificare, tramite l’applicazione File editor il file di configurazione di HA /homeassistant/configuration.yaml nel modo seguente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
http:
  server_port: 443
  ssl_certificate: /ssl/ha.crt
  ssl_key: /ssl/ha.key
  base_url: https://homeassistant.home.lan
  use_x_forwarded_for: true
  trusted_proxies:
    - 10.0.80.1

file-editor-config

Il trusted_proxies tornerà utile in futuro.

Riavviare Home Assistant e rieseguire il login, ora sulla porta 443 (https://homeassistant.home.lan). La regola che consentiva di accedere dalla LAN alla DMZ sulla porta 8123, puó essere eliminata, se il login é avvenuto correttamente.

Applicazione mobile

Dall’applicazione terminale, eseguire il comando cat ssl/ha.crt, salvando il contenuto in un file .crt, da copiare poi sul cellulare. Per copiare del testo, tenere premuto il tasto SHIFT.

ha-ssl-crt

Installare sul cellulare l’applicazione di HA da F-Droid. Assicurarsi che il dispositivo mobile possa accedere alla DMZ sulla porta 443 dalla rete WLAN.

Una volta copiato sul telefono, importare il certificato seguendo questi passaggi:

  • Andare su Settings > Security & Privacy > More security & privacy > Encryption & credentials
  • Selezionare Install a certificate > CA certificate
  • Scegliere il certificato copiato in precedenza

Aprire l’applicazione di Home Assistant, inserire poi l’indirizzo IP della VM: si dovrebbe visualizzare la schermata di login senza errori di certificato.

ha-mobile

HACS

Home Assistant supporta l’uso di componenti esterni, noti come Custom Components. Questi non sono certificati ufficialmente dal team di sviluppo, ma estendono notevolmente le funzionalità del sistema.

HACS (Home Assistant Community Store) permette di gestire, aggiornare, eliminare, configurare, questi componenti aggiuntivi sopra illustrati.

Installazione

L’installazione é davvero semplice:

  • Andare su Settings > Apps e selezionare il pulsante Install Apps
  • In alto a destra, selezionare il menu a tre punti e scegliere Repositories
  • Aggiungere l’URL https://github.com/hacs/addons di HACS
  • Tornare in Settings > Apps > Install Apps e selezionare Get HACS e Install
  • Avviare l’app HACS per completare la configurazione

Enel Grid

Questo componente aggiuntivo, recupera e importa i dati del consumo energetico orario e giornaliero dal sito di Enel Energia, rendendoli disponibili nella sezione Energy di Home Assistant.

  • In HACS, cercare enelgrid e installare l’integrazione

enelgrid

  • Riavviare Home Assistant
  • Seguire i passaggi di configurazione in Settings > Devices & services

Durante la configurazione, sarà necessario fornire:

  • Username: l’email dell’account Enel
  • La password associata all’account
  • Numero POD e numero cliente
  • Prezzo per kWh

Infine, recarsi nella sezione Energy e configurare le statistiche in questo modo:

enelgrid-config

Se tutto é stato configurato correttamente, si dovrebbe visualizzare un grafico simile al seguente:

enel-graph

Il grafico puó essere consultato anche dalla propria Area clienti nella sezione Consumi.

Configurazione Tapo Smart Plug

Per configurare il Tapo P125M, basta seguire i seguenti passaggi:

  • Installare sul dispositivo mobile l’applicazione TP-Link Tapo
  • Dopo aver eseguito il login nell’applicazione, collegare la presa smart alla presa a muro e scannerizzare il QR code visibile sulla smart plug

Seguire la procedura guidata:

  • Selezionare il modello Tapo P125M e attendere il riconoscimento del dispositivo da parte dell’applicazione
  • Scegliere la rete IoT, creata in precedenza, alla quale connettere il dispositivo smart

È utile creare una regola di firewall temporanea per consentire l’accesso a Internet, in modo da aggiornare il firmware del device.

  • Aggiornare il firmware della presa tramite l’applicazione. Una volta completato l’aggiornamento, disattivare la regola firewall precedentemente creata
  • Accedere a OPNsense e spostarsi in Services > Dnsmasq DNS & DHCP > Leases per verificare l’indirizzo IP assegnato alla presa
  • Impostare una reservation DHCP per garantire che il dispositivo abbia un indirizzo IP statico
  • In Home Assistant, aggiungere l’integrazione ufficiale per i dispositivi Tapo
  • Recarsi in Settings > Devices & servicese selezionare il pulsante Add Integration
  • Dalla lista delle integrazioni disponibili, selezionare Tapo e inserire l’indirizzo IP del dispositivo
  • Dopo aver completato la configurazione, disinstallare l’applicazione dal cellulare, poiché non sarà più necessaria
  • Creare una dashboard personalizzata in Home Assistant per monitorare i consumi giornalieri, in tempo reale e mensili di tutto ciò che è collegato alla presa smart

tapo125-dashboard

Riferimenti