Piattaforma Home Assistant “Template Sensor”

Produttore: Home Assistant Community
Disponibilità: incluso nell’HUB personale Home Assistant
Categoria: software
Tipologia: piattaforma Home Assistant
Famiglia: componente “Sensor” Home Assistant
Costo medio: gratuito
Difficoltà di implementazione: media
Valutazione inDomus: n.a.

La piattaforma “Template Sensor”, figlia del componente “Sensor” di Home Assistant, serve per definire in configurazione uno o più sensori in grado di produrre letture derivanti da altre entità, da calcoli semplici, condizionali, persino da assunzioni arbitrarie: appunto, da template.

Configurazione

La configurazione base di un qualunque “Template sensor” presso il file configuration.yaml è piuttosto semplice.
È infatti sufficiente inserire un’entry di questo tipo:

# Esempio di entry su configuration.yaml
sensor:
  - platform: template
    sensors:
      solar_angle:
        friendly_name: "Sun angle"
        unit_of_measurement: 'degrees'
        value_template: "{{ states.sun.sun.attributes.elevation }}"

      sunrise:
        value_template: "{{ states.sun.sun.attributes.next_rising }}"

Le variabili disponibili per la personalizzazione della configurazione sono le seguenti:

friendly_name (stringa, opzionale) il nome visualizzato sul frontend
friendly_name_template (stringa, opzionale) il nome visualizzato sul frontend generato tramite template (sovrascrive l’eventuale “friendly_name“)
entity_id (stringa|lista, opzionale) la lista degli ID delle entity rispetto alle quali il sensore reagisce solo ai cambiamenti di stato. Questo può essere usato se l’analisi automatica non riesce a trovare tutte le entità rilevanti.
unit_of_measurement (stringa, opzionale) definisce l’eventuale unità di misura del sensore. In assenza, esso mostrerà direttamente i valori discreti da esso prodotti.
value_template (template, richiesto) definisce il template che definisce lo stato del sensore.
icon_template (template, opzionale) definisce il template che definisce l’icona del sensore.
entity_picture_template (template, opzionale) definisce il template che definisce l’immagine del sensore.
device_class (classe, opzionale) definisce il tipo/classe di sensore per determinarne la corretta icona automatica presso il frontend.

Considerazioni

In caso la “fonte” del sensore provenga da una piattaforma che, all’avvio di Home Assistant, preveda tempo per essere eseguita e valorizzata, lo stato del sensore template potrebbe inizialmente ottenere valore “unknown“. Per evitare questo (e il conseguente errore nel file di log) è possibile utilizzare la funzine is_state() all’interno del template stesso.
Ad esempio, si potrebbe sostituire un template tipo

{{ states.switch.source.state == 'on' }}

in

{{is_state('switch.source', 'on') }}

il quale ritorna sempre uno stato true|false, mai unknown.

Esempi

DETERMINAZIONE DELL’ANGOLO SOLARE

Il seguente esempio produce un sensore che indica l’angolo di alzo del sole nel cielo:

sensor:
  - platform: template
    sensors:
      solar_angle:
        friendly_name: "Angolo del sole"
        unit_of_measurement: '°'
        value_template: "{{ '%+.1f'|format(states.sun.sun.attributes.elevation) }}"
RINOMINARE L’OUTPUT DEL SENSORE

È possibile determinare arbitrariamente l’output del sensore usando stringhe specifiche.
Configuriamo dunque per esempio un sensore che risponda “alto|basso” in base al fatto che il sole sia sopra o sotto l’orizzonte:

sensor:
  - platform: template
    sensors:
      sun_state:
        friendly_name: "Stato del sole"
        value_template: >-
          {% if is_state('sun.sun', 'above_horizon') %}
            alto
          {% else %}
            basso
          {% endif %}
CONDIZIONI MULTIPLE

È anche possibile configurare template con condizioni multiple:

sensor:
  - platform: template
    sensors:
      presa_bagno:
        friendly_name: "Presa del bagno"
        value_template: >-
          {% if is_state('switch.kettle', 'off') %}
            spento
          {% elif states.switch.kettle.attributes.kwh|float < 1000 %}
            standby
          {% elif is_state('switch.kettle', 'on') %}
            acceso
          {% else %}
            fallito
          {% endif %}

      next_sensor:
        ...

Un elenco ancora più completo di esempi è disponibile sulla pagina del componente presso Home Assistant.



Dubbi? Perplessità? Fai un salto sul FORUM o sulla CHAT @DISCORD!
Questa pagina è coperta dalla licenza Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Licenseil che significa che puoi liberamente condividerlo, senza modificarlo, citando il link della fonte.