Piattaforma Home Assistant “MQTT Sensor”

3 minuti di lettura
Produttore: Home Assistant Community
Disponibilità: incluso nell’HUB personale Home Assistant
Categoria: software
Tipologia: piattaforma Home Assistant
Famiglia: componente “Sensor” Home Assistant
Difficoltà di implementazione: bassa

La piattaforma “MQTT Sensor”, figlia del componente “Sensor” di Home Assistant, serve per definire in configurazione uno o più sensori alimentati da telemetrie MQTT provenienti da uno o più dispositivi presenti in domotica.

Esistono infatti sensori che, se interrogati tramite MQTT, erogano le proprie letture (temperatura, umidità, ma anche luminosità, presenza, livello di carica di batterie e molto altro) tramite i payload dei topic telemetrici dedicati a tal scopo. Inoltre, tali telemetrie solitamente vengono pubblicate automaticamente e ciclicamente via MQTT, permettendo a chi sottoscrive tali topic telemetrici di ottenere le letture man mano che arrivano.

Un esempio di topic telemetrico, nel caso di un Sonoff TH-16 o TH-10 aggiornato a Tasmota è il seguente:

tele/Sonoff/SENSOR

Tale topic restituisce tramite il proprio payload (o “carico utile”) le letture del sensore collegato all’unità, tipicamente temperatura e umidità, ad esempio (payload JSON):

{"temperature": 23.20,"humidity": 43.70}

Nb. Per utilizzare questa piattaforma è necessario che il componente “MQTT” di Home Assistant sia stato preventivamente configurato (vedi prima parte della scheda dedicata al componente “MQTT”). Si consiglia inoltre di leggere con attenzione la guida dedicata al tema della configurazione dei componenti MQTT nella propria domotica.

Configurazione

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

# Esempio di entry su configuration.yaml
sensor:
- platform: mqtt
  state_topic: "home/bedroom/temperature"

dove l’esempio di “home/bedroom/temperature” sarà evidentemente il topic telemetrico del quale raccogliere il payload per l’estrazione dell’informazione di interesse.

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

state_topic(stringa, richiesta) – Il topic MQTT al quale iscriversi per ricevere le telemetrie
name(stringa, opzionale) – Nome del sensore MQTT. Default: “MQTT Sensor”
qos(intero, opzionale) – Il livello di QoS per lo state_topic. Default: 0 (Cos’è QoS?)
unit_of_measurement(stringa, opzionale) –  L’unità di misura del valore esposto dal sensore, se presente.
icon(stringa, opzionale) – L’icona rappresentativa del sensore.
expire_after(intero, opzionale) – Il numero di secondi trascorsi i quali, in assenza di ricezione di un nuovo valore, il dato non è più considerato valido. Default: 0 (non attivo)
value_template(template, opzionale) – Definisce il template per l’estrazione (parsing) del dato.
force_update(booleano, opzionale) – Invia al motore di automazione di Home Assistant l’aggiornamento del valore anche se non è accaduto realmente. Utile per rendere cotinui i grafici degli storici. Default: false
availability_topic(stringa, opzionale) – Topic MQTT al quale iscriversi per ottenere lo stato online/offline da parte del dispositivo.
payload_available(stringa, opzionale) – Il payload che rappresenta lo stato “disponibile”. Esempio: “online”. Viene usato in abbinamento alla variabile “availability_topic”.
payload_not_available(stringa, opzionale) – Il payload che rappresenta lo stato “non disponibile”. Esempio: “offline”. Viene usato in abbinamento alla variabile “availability_topic”.
json_attributes(lista|stringa, opzionale) – Una lista di valori chiave da estrarre dal payload json dello state_topic.
unique_id(stringa, opzionale) – Un ID che identifica univocamente il sensore in termini di configurazione. Se due sensori presentano il medesimo ID, Home Assistant solleva un eccezione d’errore.
device_class(device_class, opzionale) – Il tipo/classe di sensore utile per impostare la corretta, relativa icona sul frontend di Home Assistant.

Esempi

LIVELLO DI BATTERIA

Il sensore dell’esempio a seguire estrae dal payload JSON ricevuto dallo state_topic indicato la misura della batteria residua del dispositivo monitorato. Nello specifico, ipotizziamo di stare utilizzando la piattaforma OWNTRACKS della famiglia di componenti “Device Tracker“, ovvero quelli dedicati al tracking GPS degli utenti configurati su Home Assistant.

Lo state_topic è il seguente:

owntracks/tablet/tablet

Il payload è simile al seguente

{"_type":"location","lon":7.21,"t":"u","batt":92,"tst":144995643,"tid":"ta","acc":27,"lat":46.12}

Per estrarre il livello della batteria (ovvero “92%”), il sensore MQTT configurato sarà:

sensor:
  - platform: mqtt
    name: "Battery Tablet"
    state_topic: "owntracks/tablet/tablet"
    unit_of_measurement: '%'
    value_template: "{{ value_json.batt }}"
Temperatura e umidità

Ipotizziamo di possedere un sensore di temperatura e umidità che dallo state_topic:

office/sensor1

produca nel payload una telemetria JSON come segue:

{"temperature": 23.20,"humidity": 43.70}

Configureremo dunque due diversi sensori, come segue:

sensor:
  - platform: mqtt
    name: "Temperature"
    state_topic: "office/sensor1"
    unit_of_measurement: '°C'
    value_template: "{{ value_json.temperature }}"
  - platform: mqtt
    name: "Humidity"
    state_topic: "office/sensor1"
    unit_of_measurement: '%'
    value_template: "{{ value_json.humidity }}"


Home Assistant Official LogoATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.

🔻 Clicca QUI per commentare l'articolo. 🔻