Come impostare sensori personalizzati in Home Assistant
Immergiti nei file YAML per impostare sensori personalizzati nel sesto articolo di questa serie di domotica.
Nell'ultimo articolo di questa serie sulla domotica, ho iniziato a approfondire Home Assistant. Ho configurato un'integrazione Zigbee con Sonoff Zigbee Bridge e ho installato alcuni componenti aggiuntivi, tra cui Node-RED, File Editor, Mosquitto broker e Samba. Ho concluso esaminando la configurazione di Node-RED, che utilizzerò molto più avanti in questa serie. I quattro articoli precedenti discutevano cos'è Home Assistant, perché potresti volere il controllo locale, alcuni protocolli di comunicazione per componenti di casa intelligente e come installare Home Assistant in una macchina virtuale (VM) utilizzando libvirt.
In questo sesto articolo analizzerò i file di configurazione YAML. Ciò è in gran parte inutile se si utilizzano solo le integrazioni supportate nell'interfaccia utente (UI). Tuttavia, ci sono momenti, in particolare se stai inserendo dati di sensori personalizzati, in cui devi sporcarti le mani con i file di configurazione.
Immergiamoci.
Esaminare i file di configurazione
Esistono diversi potenziali file di configurazione che vorrai esaminare. Anche se tutto ciò che sto per mostrarti può essere fatto nel file Configuration.yaml principale, può essere utile dividere la configurazione in file dedicati, soprattutto con installazioni di grandi dimensioni.
Di seguito spiegherò come configurare il mio sistema. Per i miei sensori personalizzati, utilizzo il chipset ESP8266, che è molto intuitivo per i produttori. Utilizzo principalmente Tasmota per il mio firmware personalizzato, ma ho anche alcuni componenti che eseguono ESPHome. La configurazione del firmware non rientra nell'ambito di questo articolo. Per ora, suppongo che tu abbia configurato i tuoi dispositivi con un firmware personalizzato (o che tu ne abbia scritto uno tuo con Arduino IDE).
Il file /config/configuration.yaml
Configuration.yaml è il file principale letto da Home Assistant. Per quanto segue, utilizza il File Editor installato nell'articolo precedente. Se non vedi File Editor nella barra laterale di sinistra, abilitalo tornando alle impostazioni del Supervisore e facendo clic su File Editor. Dovresti vedere una schermata come questa:
(Steve Ovens, CC BY-SA 4.0)
Assicurati che Mostra nella barra laterale sia attivato. Inoltre attivo sempre l'impostazione Watchdog per tutti i componenti aggiuntivi che utilizzo frequentemente.
Una volta completato, avvia File Editor. C'è l'icona di una cartella nella barra dell'intestazione in alto a sinistra. Questa è l'icona di navigazione. La cartella /config
è dove sono archiviati i file di configurazione che ti interessano. Se fai clic sull'icona della cartella, vedrai alcuni file importanti:
Quello che segue è un file Configuration.yaml predefinito:
(Steve Ovens, CC BY-SA 4.0)
La notazione script: !include scripts.yaml
indica che Home Assistant dovrebbe fare riferimento al contenuto di scripts.yaml ogni volta che ha bisogno della definizione di un oggetto script. Noterai che ciascuno di questi file è correlato ai file osservati quando si fa clic sull'icona della cartella.
Ho aggiunto tre righe al mio Configuration.yaml:
input_boolean: !include input_boolean.yaml
binary_sensor: !include binary_sensor.yaml
sensor: !include sensor.yaml
Per inciso, ho configurato le mie impostazioni MQTT (vedi la documentazione MQTT di Home Assistant per maggiori dettagli) nel file Configuration.yaml:
mqtt:
discovery: true
discovery_prefix: homeassistant
broker: 192.168.11.11
username: mqtt
password: superpassword
Se apporti una modifica, non dimenticare di fare clic sull'icona del disco per salvare il tuo lavoro.
(Steve Ovens, CC BY-SA 4.0)
Il file /config/binary_sensor.yaml
Dopo aver assegnato un nome al file in Configuration.yaml, dovrai crearlo. Nell'editor di file, fai nuovamente clic sull'icona della cartella. C'è una piccola icona raffigurante un pezzo di carta con un segno + al centro. Fare clic su di esso per visualizzare questa finestra di dialogo:
(Steve Ovens, CC BY-SA 4.0)
Ho tre tipi principali di sensori binari: porta, movimento e alimentazione. Un sensore binario ha solo due stati: acceso o spento. Tutti i miei sensori binari inviano i loro dati a MQTT. Consulta il mio articolo sul cloud rispetto al controllo locale per ulteriori informazioni su MQTT.
Il mio file Binary_sensor.yaml è simile al seguente:
- platform: mqtt
state_topic: "BRMotion/state/PIR1"
name: "BRMotion"
qos: 1
payload_on: "ON"
payload_off: "OFF"
device_class: motion
- platform: mqtt
state_topic: "IRBlaster/state/PROJECTOR"
name: "ProjectorStatus"
qos: 1
payload_on: "ON"
payload_off: "OFF"
device_class: power
- platform: mqtt
state_topic: "MainHallway/state/DOOR"
name: "FrontDoor"
qos: 1
payload_on: "open"
payload_off: "closed"
device_class: door
Dai un'occhiata alle definizioni. Poiché platform
è autoesplicativo, inizia con state_topic
.
state_topic
, come suggerisce il nome, è l'argomento in cui viene pubblicato lo stato del dispositivo. Ciò significa che chiunque sia iscritto all'argomento riceverà una notifica ogni volta che lo stato cambia. Questo percorso è completamente arbitrario, quindi puoi chiamarlo come preferisci. Tendo a utilizzare la convenzioneposizione/stato/oggetto
, poiché per me ha senso. Voglio poter fare riferimento a tutti i dispositivi in una posizione e, per me, questo layout è il più facile da ricordare. Anche il raggruppamento per tipo di dispositivo è un layout organizzativo valido.name
è la stringa utilizzata per fare riferimento al dispositivo all'interno di Home Assistant. Normalmente viene fatto riferimento atype.name
, come mostrato in questa scheda nell'interfaccia di Home Assistant Lovelace:
(Steve Ovens, CC BY-SA 4.0)
qos
, abbreviazione di qualità del servizio, si riferisce al modo in cui un client MQTT comunica con il broker quando pubblica su un argomento.payload_on
epayload_off
sono determinati dal firmware. Queste sezioni indicano a Home Assistant quale testo invierà il dispositivo per indicare il suo stato attuale.device_class:
Esistono molteplici possibilità per una classe di dispositivo. Fare riferimento alla documentazione di Home Assistant per ulteriori informazioni e una descrizione di ciascun tipo disponibile.
Il file /config/sensor.yaml
Questo file differisce da binari_sensor.yaml in un modo molto importante: i sensori all'interno di questo file di configurazione possono avere dati molto diversi all'interno dei loro payload. Dai un'occhiata a uno degli aspetti più complicati dei dati del sensore, la temperatura.
Ecco la definizione per il mio sensore di temperatura DHT:
- platform: mqtt
state_topic: "Steve_Desk_Sensor/tele/SENSOR"
name: "Steve Desk Temperature"
value_template: '{{ value_json.DHT11.Temperature }}'
- platform: mqtt
state_topic: "Steve_Desk_Sensor/tele/SENSOR"
name: "Steve Desk Humidity"
value_template: '{{ value_json.DHT11.Humidity }}'
Noterai due cose fin dall'inizio. Innanzitutto, ci sono due definizioni per lo stesso state_topic
. Questo perché questo sensore pubblica tre diverse statistiche.
In secondo luogo, c'è una nuova definizione di value_template
. La maggior parte dei sensori, personalizzati o meno, inviano i propri dati all'interno di un payload JSON. Il modello indica a Home Assistant dove si trovano le informazioni importanti nel file JSON. Quanto segue mostra il JSON non elaborato proveniente dal mio sensore fatto in casa. (Ho usato il programma jq
per rendere il JSON più leggibile.)
{
"Time": "2020-12-23T16:59:11",
"DHT11": {
"Temperature": 24.8,
"Humidity": 32.4,
"DewPoint": 7.1
},
"BH1750": {
"Illuminance": 24
},
"TempUnit": "C"
}
Ci sono alcune cose da notare qui. Innanzitutto, poiché i dati del sensore vengono archiviati in un archivio dati basato sul tempo, ogni lettura ha una voce Time
. In secondo luogo, a questa uscita sono collegati due sensori diversi. Questo perché ho sia un sensore di temperatura DHT11 che un sensore di luce BH1750 collegati allo stesso chip ESP8266. Infine, la mia temperatura è riportata in gradi Celsius.
Si spera che ora le definizioni di Home Assistant abbiano un po’ più senso. value_json
è semplicemente un nome standard assegnato a qualsiasi oggetto JSON importato da Home Assistant. Il formato di value_template
è value_json.
.
Ad esempio, per recuperare il punto di rugiada:
value_template: '{{ value_json.DHT11.DewPoint}}'
Anche se puoi scaricare queste informazioni in un file da Home Assistant, io utilizzo la Console
di Tasmota per vedere i dati che sta pubblicando. (Se vuoi che scriva un articolo su Tasmota, faccelo sapere nei commenti qui sotto.)
Come nota a margine, tengo sotto controllo anche l'utilizzo delle risorse del mio Home Assistant locale. Per fare ciò, ho inserito questo nel mio file sensor.yaml:
- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /
- type: memory_free
- type: memory_use
- type: processor_use
Anche se tecnicamente non è un sensore, lo inserisco qui perché lo considero un sensore di dati. Per ulteriori informazioni, consultare la documentazione sul monitoraggio del sistema di Home Assistant.
Il file /config/input_boolean
Quest'ultima sezione è piuttosto semplice da configurare e la utilizzo per un'ampia varietà di applicazioni. Un valore booleano di input viene utilizzato per tenere traccia dello stato di qualcosa. È acceso o spento, a casa o fuori, ecc. Li utilizzo abbastanza ampiamente nelle mie automazioni.
Le mie definizioni sono:
steve_home:
name: steve
steve_in_bed:
name: 'steve in bed'
guest_home:
kitchen_override:
name: kitchen
kitchen_fan_override:
name: kitchen_fan
laundryroom_override:
name: laundryroom
bathroom_override:
name: bathroom
hallway_override:
name: hallway
livingroom_override:
name: livingroom
ensuite_bathroom_override:
name: ensuite_bathroom
steve_desk_light_override:
name: steve_desk_light
projector_led_override:
name: projector_led
project_power_status:
name: 'Projector Power Status'
tv_power_status:
name: 'TV Power Status'
bed_time:
name: "It's Bedtime"
Ne utilizzo alcuni direttamente nell'interfaccia utente di Lovelace. Creo dei piccoli badge che inserisco nella parte superiore di ciascuna delle pagine che ho nell'interfaccia utente:
(Steve Ovens, CC BY-SA 4.0)
Questi possono essere utilizzati per determinare se sono a casa, se c'è un ospite in casa mia e così via. Facendo clic su uno di questi badge è possibile attivare/disattivare il valore booleano e questo oggetto può essere letto dalle automazioni per prendere decisioni su come i "dispositivi intelligenti" reagiscono alla presenza di una persona (se non del tutto). Rivisiterò i booleani in un prossimo articolo quando esaminerò Node-RED in modo più dettagliato.
Avvolgendo
In questo articolo ho esaminato i file di configurazione YAML e ho aggiunto alcuni sensori personalizzati al mix. Sei sulla buona strada per ottenere un'automazione funzionante con Home Assistant e Node-RED. Nel prossimo articolo approfondirò alcuni flussi base di Node-RED e presenterò alcune automazioni di base.
Restare in zona; Ho molto altro da trattare e, come sempre, lascia un commento qui sotto se desideri che esamini qualcosa di specifico. Se posso, mi assicurerò di incorporare le risposte alle tue domande negli articoli futuri.