
Gli helper di Home Assistant in quaranta secondi: cosa sono e quale scegliere
Introduzione
Hai usato un helper nella tua configurazione e non lo sapevi? Tutti noi che usiamo Home Assistant e creiamo automazioni, script e dashboard abbiamo avuto bisogno di un helper, e forse lo abbiamo usato anche involontariamente, per esempio nell’articolo sulle automazioni per il riscaldamento.
La domanda che ci facciamo oggi, però, non è cos’è un helper, ma: quale mi serve adesso?
Cos’è un helper e perché ti serve
Un helper è un’entità che non esiste e non deriva da nessun dispositivo che abbiamo configurato e integrato in Home Assistant: la creiamo noi. L’helper Gruppo, per esempio, serve a unire in un solo comando più luci che altrimenti andrebbero comandate singolarmente. Creiamo una nuova entità che racchiude tutte le luci della cucina, per esempio Luci Cucina Gruppo.
L’helper crea un’entità vera e propria: come vedi dagli screenshot qui sopra, ne esistono diverse a seconda della necessità. Trovi l’elenco completo nella documentazione ufficiale degli helper.
Dove si crea un helper
Per trovare e creare le tue entità helper vai su Impostazioni → Dispositivi e servizi → Helper (tab in alto). Per creare una nuova entità, in basso a destra trovi il pulsante Crea helper.
Gli otto tipi che usi davvero, uno per problema
Ovviamente ne esistono molti: te ne elenco 8 che, a mio avviso, userai più spesso degli altri.
| Hai bisogno di… | Helper | Esempio dal sito |
|---|---|---|
| Attivare o disattivare una modalità | Toggle (input_boolean) | Modalità Sanremo, Modalità Vacanza |
| Un valore regolabile | Number (input_number) | input_number.kelvin (Tuya Smart Knob) |
| Scegliere tra opzioni fisse | Dropdown (input_select) | modalita-dimmer (Tuya Smart Knob) |
| Un conto alla rovescia | Timer | — |
| Un contatore che sale | Counter | — |
| Una data o un orario | Date and/or time (input_datetime) | — |
| Azzerare un consumo su base periodica | Utility Meter | Energy Dashboard |
| Unire più entità in una | Gruppo (Group) | Luci gruppo Cucina |
Attivare o disattivare una modalità
Un valore regolabile
Scegliere tra opzioni fisse
Un conto alla rovescia
Un contatore che sale
Una data o un orario
Azzerare un consumo su base periodica
Unire più entità in una
Utility Meter
L’Utility Meter merita qualche parola in più: è probabilmente il più importante, perché serve a creare un contatore energetico che si costruisce sopra un sensore già esistente, per esempio quello delle prese smart che rilevano i consumi, e che si azzera da solo secondo l’intervallo scelto: giornaliero, mensile o annuale. È utilissimo per tenere traccia dei consumi, da usare nelle dashboard personalizzate e nella Energy Dashboard.
Template
Sono gli helper forse più potenti e personalizzabili: con un template puoi ricavare qualsiasi valore calcolato. Un esempio che ho usato spesso è il calcolo della temperatura percepita con una formula matematica, partendo da un semplice sensore di temperatura e umidità: ne avevo già parlato nella guida ai sensori template per temperatura percepita, VPD e punto di rugiada, se vuoi approfondire la formula.
Un esempio di template sensor che uso si chiama Confort Termico:
{% set T = states('sensor.temperatura_n_2_aqara_temperature') | float(0) %}
{% set RH = states('sensor.temperatura_n_2_aqara_humidity') | float(0) %}
{% if T > 0 and RH > 0 %}
{% if T < 18 %}
Freddo
{% elif T < 21 %}
{% if RH < 40 %}
Fresco e Secco
{% elif RH > 70 %}
Fresco e Umido
{% else %}
Fresco
{% endif %}
{% elif T < 26 %}
{% if RH < 30 %}
Confortevole e Secco
{% elif RH > 70 %}
Confortevole e Umido
{% else %}
Ottimale
{% endif %}
{% elif T < 30 %}
{% if RH > 60 %}
Caldo e Umido
{% else %}
Caldo
{% endif %}
{% else %}
Molto Caldo
{% endif %}
{% else %}
Non Disponibile
{% endif %}Il template mette semplicemente a confronto i due valori di temperatura e umidità e restituisce un testo leggibile: Caldo, Caldo e Umido, Confortevole e così via.
Helper da UI o da YAML: due strade diverse
Gli helper si possono costruire anche dal file configuration.yaml: compaiono nella lista, ma non sono modificabili dall’interfaccia. Infatti hanno la matita barrata e si possono modificare solo dal file. Nel mio caso sono Allarme Casa, il pannello dell’allarme senza centrale configurato in YAML, e Bubble Card Modules, il sensore che conserva i moduli di Bubble Card.
La seconda strada, quella ormai di default e che useremo quasi sempre, è la creazione da UI nel percorso che ti ho indicato sopra.
Aggiungo che tutto il sistema sta andando nella direzione delle configurazioni via UI, anche se trovo ancora molto utile il codice YAML, per esempio nelle automazioni e negli script, dove puoi passare dall’editor visuale a quello YAML. Non tutto è stato ancora portato in UI, ma la strada è quella.
I tre errori che si fanno
float(0) mancante nei template
Guarda lo screenshot di Confort Termico qui sopra: il 14 settembre alle 4:38 il sensore Aqara ha avuto un micro-dropout, e per 17 secondi l’entità è passata a “Non Disponibile” prima di tornare a “Caldo e Umido”.
È float(0) che ha fatto il suo lavoro: quando il sensore non risponde, states() restituisce una stringa non numerica, float(0) la converte in 0, e il controllo T > 0 and RH > 0 intercetta il caso e mostra “Non Disponibile” invece di un valore inventato.
Funziona bene qui perché è un sensore interno: 0°C in camera da letto non capitano mai davvero. Ma per un sensore esterno, dove 0°C è un valore reale e frequente in inverno, lo stesso trucco sarebbe sbagliato: un sensore offline e una vera gelata produrrebbero lo stesso “0”, e il template non li distinguerebbe più.
È per questo che nell’esempio della temperatura percepita più sotto uso float(none) invece di float(0): con none il sensore offline viene trattato per quello che è, cioè assenza di dato, mentre 0°C reali passano regolarmente al calcolo.
availability dimenticato
Lo stesso editor di Home Assistant te lo ricorda: se apri un template sensor da UI, sotto il campo del codice trovi la nota “An availability template may be defined to suppress rendering of the state template”, cioè che si può definire un template di disponibilità per sopprimere la visualizzazione dello stato (la vedi nello screenshot più sotto).
È un campo separato, dentro Additional options, pensato apposta per dire “questo sensore non è raggiungibile” senza dover intrecciare quella logica dentro il template dello stato, come ho fatto io con {{ none }}. Il risultato pratico è lo stesso, l’entità va in stato sconosciuto, ma tenerli separati rende il template più corto e più facile da rileggere tra sei mesi, quando avrai dimenticato perché avevi scritto tre if in fila.
restore dimenticato sui timer
Il parametro restore di un helper Timer di default è false: se non lo attivi esplicitamente, ogni volta che Home Assistant riparte (e con gli aggiornamenti mensili capita spesso) i timer attivi si azzerano e ripartono dalla durata di default, perdendo il conto alla rovescia in corso.
Da UI è un interruttore nelle opzioni avanzate del Timer; da YAML basta aggiungere restore: true:
timer:
lavatrice:
duration: "01:30:00"
restore: trueCome creare un helper di esempio: la temperatura percepita
Come detto, gli helper sono tanti: ti faccio vedere come creare un helper template per la temperatura percepita del soggiorno, sullo stesso principio dei sensori template di cui ti parlavo sopra.
La creazione dell'helper Template Temperatura percepita, passo dopo passo
Andiamo nella tab Helper, poi clicchiamo su Crea helper. Cerchiamo Template e poi Sensor Template. In Template state incolliamo il codice che trovi sotto.
Immettiamo il nome, l’unità di misura °C, il Device class Temperature e lo State class Measurement.
{% set temperature = states('sensor.0x84ba20fffed47cfc_temperature') | float(none) %}
{% set humidity = states('sensor.0x84ba20fffed47cfc_humidity') | float(none) %}
{% if states('sensor.0x84ba20fffed47cfc_temperature') in ['unavailable', 'unknown'] or
states('sensor.0x84ba20fffed47cfc_humidity') in ['unavailable', 'unknown'] %}
{{ none }}
{% elif temperature is none or humidity is none %}
{{ none }}
{% elif temperature < 27 %}
{# Per temperature sotto i 27°C, l'heat index non è significativo #}
{{ temperature | round(1) }}
{% else %}
{# Converti temperatura in Fahrenheit #}
{% set tempF = (temperature * 9/5) + 32 %}
{# Formula Heat Index in Fahrenheit (Rothfusz regression - NOAA) #}
{% set c1 = -42.379 %}
{% set c2 = 2.04901523 %}
{% set c3 = 10.14333127 %}
{% set c4 = -0.22475541 %}
{% set c5 = -0.00683783 %}
{% set c6 = -0.05481717 %}
{% set c7 = 0.00122874 %}
{% set c8 = 0.00085282 %}
{% set c9 = -0.00000199 %}
{% set HI = c1 + (c2 * tempF) + (c3 * humidity) + (c4 * tempF * humidity) + (c5 * tempF * tempF) + (c6 * humidity * humidity) + (c7 * tempF * tempF * humidity) + (c8 * tempF * humidity * humidity) + (c9 * tempF * tempF * humidity * humidity) %}
{# Riconverti in Celsius #}
{% set heat_index = (HI - 32) * 5/9 %}
{{ heat_index | round(1) }}
{% endif %}Sotto il 40% di umidità il valore è indicativo: la regressione di Rothfusz usata dalla NOAA non è calibrata per l’aria secca.
Gli helper che uso davvero in casa
Gli helper, in una configurazione come Home Assistant, sono molto importanti, e ne userai tanti: è quindi importante imparare a costruirli, ma soprattutto trovare quello giusto quando serve.
Io ne ho tanti: i più utili e più semplici sono quelli dei gruppi luce, per comandare e creare automazioni su interi gruppi di luci personalizzabili.
Poi ci sono gli Utility Meter, che mi permettono di stimare e tenere traccia dei consumi.
Mi piacciono molto il sensore di temperatura percepita e il Confort Termico, per non avere una lettura della temperatura senza contesto.
Altri helper sono più di utilità, pensati per l’uso nelle automazioni, come gli input boolean che servono a verificare se una condizione è vera o falsa.
Input number, invece, serve per usare in un’automazione o in uno script un valore che modifichiamo noi dalla dashboard, come input_number.kelvin che uso insieme al Tuya Smart Knob per cambiare la temperatura colore di alcune luci.
Gli helper sono utili, comodi, e prima o poi rientrano in tutte le automazioni che dobbiamo creare. Ne puoi costruire tantissimi: coprono praticamente ogni scopo e risolvono molti problemi.









