Realizziamo, come prima cosa, una dashboard per il Raspberry PI: il nostro Raspberry deve essere tenuto a sua volta sotto controllo, o no? 🙂
Perché creare una dashboard di controllo?
Come già anticipato, Home Assistant sarà il cervello che controllerà tutta la nostra casa domotica, quindi è fondamentale tenere sotto controllo i parametri operativi e di funzionamento del Raspberry PI sul quale lo abbiamo installato e, perché no, in futuro creare delle automazioni che ci avvisino quando qualcosa non funziona come dovrebbe o se qualche parametro raggiunge (o supera) i livelli di guardia.
Quali parametri vogliamo monitorare?
Come prima cosa è necessario definire l’elenco dei parametri che vogliamo tenere sotto controllo.
I principali parametri di interesse sono:
- Temperatura processore (Minimo/Massimo/Media)
- Percentuale utilizzo processore (Minimo/Massimo/Media)
- Ultimo avvio
- Utilizzo disco (Generale/Database di Home Assistant)
- Memoria (Utilizzo corrente/Minimo/Massimo/Media)
Di cosa abbiamo bisogno?
Per raggiungere il nostro scopo avremo bisogno di:
- System monitor: integrazione nativa di Home Assistant che consente di monitorare utilizzo del disco, della CPU, processi attivi etc
- File sensor: integrazione nativa di Home Assistant che consente di utilizzare un file come fosse un sensor per estrarne informazioni di varia natura
Installare l’add-on File Editor
La configurazione di queste entità richiede di dover modificare i file di configurazione di Home Assistant (non è una cosa complessa, tranquilli).
Il modo più semplice per modificare la configurazione di Home Assistant è agire direttamente sui file YAML che la compongono tramite l’add-on ufficiale File Editor. Sul web si possono trovare deciso di guide (e video guide) passo passo per l’installazione. Qui di seguito riporto per comodità i passaggi:
- Andare su Impostazioni
- Selezionare Componenti Aggiuntibi
- Selezionare Raccolta di Componenti Aggiuntivi
- Nella sezione Official Add-Ons cercare File Editor
- Selezionare Install
- Consigliato: dopo l’installazione, selezionare il flag Show in sidebar per avere il link rapido di accesso nella barra laterale di sinistra
Configurare System Monitor
La configurazione di System Monitor richiede semplicemente l’aggiunta nel file /config/configuration.yaml dell’elenco delle risorse che si vogliono monitorare ed esporre come sensori.
Personalmente, anziché andare ad inserire tutte le configurazioni all’interno del file configuraiton.yaml, preferisco utilizzare gli include quindi creare un file YAML dedicato per ogni sezione.
In questo modo la configurazione risulta essere più leggibile e più facilmente mantenibile.
Apriamo quindi il file configuration.yaml e andiamo ad aggiungere (se già non presente) la seguente riga:
sensor: !include sensors.yaml
In altre parole, stiamo dicendo a Home Assistant che le configurazioni per quanto riguarda i sensori non saranno presenti in questo file, ma saranno riportate nel file sensors.yaml.
Creiamo ora il file sensors.yaml dal file editor (se già non presente), posizionandolo nella medesima folder del file configuration.yaml e andiamo a popolarlo con il seguente codice:
- platform: systemmonitor
resources:
- type: disk_use_percent
- type: disk_use
- type: disk_free
- type: memory_free
- type: memory_use_percent
- type: memory_use
- type: swap_use_percent
- type: swap_use
- type: swap_free
- type: processor_use
- type: processor_temperature
- type: last_boot
Configurare il File Sensor
Per configurare il File Sensor apriamo il file configuration.yaml ed andiamo ad aggiungere la seguente porzione di codice che dice ad Home Assistant di consentire lo scan nella cartella config.
homeassistant:
allowlist_external_dirs:
- /config
Successivamente, sempre nel file sensors.yaml aggiungiamo:
sensor:
- platform: filesize
file_paths:
- /config/home-assistant_v2.db
Il file /config/home-assistant_v2.db è il file di database di default di Home Assistant. In pratica stiamo aggiungendo un sensore sul file di database, così da poterne monitorare la dimensione.
Per impostazione di default questo sensore viene aggiornato ogni 30 secondi.
Creiamo la Dashboard di controllo
É arrivato il momento di visualizzare i nostri dati: creiamo quindi una view (nel mio caso, con sfoggio di fantasia, l’ho chiamata Raspberry) ed iniziamo a giocare con quelli che sono le schede di Home Assistant.
Non farò (come già detto) guide su come creare le view o le schede (il web ne è già pieno) ma mi limiterò a mostrarvi quella che è la view che più si adatta ai miei gusti e alle mie esigenze.
I grafici ad indicatore sono utilissimi perché consentono inoltre di impostare i 3 livelli di soglia (basso/medio/alto) in modo molto rapido da interfaccia consentendoci così di avere anche un supporto visivo a colpo d’occhio sullo stato del sistema.
Per il momento la view soddisfa le necessità che mi sono posto… ma tanto sappiamo tutti che molto presto ci rimetterò le mani! 🙂
Qui di seguito, il codice YAML per la creazione della view:
title: Casa
views:
- theme: Backend-selected
title: Raspberry
path: raspberry
icon: mdi:raspberry-pi
badges: []
cards:
- type: vertical-stack
cards:
- type: gauge
entity: sensor.processor_use
severity:
green: 0
yellow: 35
red: 70
name: Utilizzo processore %
- type: entities
entities:
- entity: sensor.processor_temperature
name: Temperatura processore
- entity: sensor.last_boot
name: Ultimo avvio
title: Processore
- chart_type: line
period: 5minute
days_to_show: 1
type: statistics-graph
entities:
- sensor.processor_use
stat_types:
- mean
- min
- max
- chart_type: line
period: 5minute
days_to_show: 1
type: statistics-graph
entities:
- sensor.processor_temperature
stat_types:
- mean
- min
- max
- sum
- type: vertical-stack
cards:
- type: gauge
entity: sensor.disk_use_percent
severity:
green: 0
yellow: 35
red: 70
name: Utilizzo disco %
- type: entities
entities:
- entity: sensor.disk_use
name: Utilizzo disco /
- entity: sensor.home_assistant_v2_db_size
name: DB Home Assistant
icon: mdi:database
title: Disco
- type: vertical-stack
cards:
- type: gauge
entity: sensor.memory_use_percent
needle: false
severity:
green: 0
yellow: 35
red: 60
name: Utilizzo memoria %
- type: entities
entities:
- entity: sensor.memory_use
name: Utilizzo memoria
- entity: sensor.swap_use
name: Utilizzo memoria swap
- entity: sensor.swap_use_percent
name: Utilizzo memoria swap %
title: Memoria
- chart_type: line
period: 5minute
days_to_show: 1
type: statistics-graph
entities:
- sensor.memory_use
- sensor.swap_use
stat_types:
- mean
- min
- max
- sum