Integrare le letture di assorbimento elettrico di PZEM su Home Assistant (via MQTT)

4 minuti di lettura
SCOPI DELLA GUIDA:
CONCETTI AFFRONTATI:
  • Configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
Prerequisiti:
DISPOSITIVI FISICI UTILIZZATI:
GUIDA maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 1.0

Abstract

Home Assistant fornisce un supporto nativo al protocollo MQTT tramite un componente chiamato, per l’appunto, “MQTT“. In caso si possegga un sensore di assorbimento elettrico dotato di supporto a tale protocollo (eg. un Sonoff POW riprogrammato Tasmota), è possibile integrarne le metriche in modo molto semplice su Home Assistant.

Alternativa all’ utilizzare un Sonoff POW (in tal caso, questa è la guida corretta) è quella di implementare la nostra proposizione di sonda fai-da-te (DIY), ovvero quella realizzata con PZEM e un componente ESP8266 – integrazione della quale è oggetto la presente guida.

N.b. Questo tipo di integrazioni si presta particolarmente all’uso – oltre che per consultarne le metriche – del tenere sotto controllo i consumi e per determinare lo stato operativo di determinati elettrodomestici.

Assunti

Affinché la configurazione che ci apprestiamo a realizzare funzioni è necessario che il componente MQTT di Home Assistant sia già configurato e sia presente, sulla rete, un broker MQTT.

Per dotarsi di  un broker e per attivare le funzioni MQTT su Home Assistant si rimanda a questa guida.

N.b. Se non si ha dimestichezza con il protocollo MQTT, si consiglia di leggere questa scheda ad esso dedicato e a quest’altra dedicata alla configurazione nel proprio ambiente.

Letture PZEM

Il PZEM è un sensore elettronico dotato della capacità di fornire svariate metriche; nel nostro progetto di realizzazione dei una sonda domotica gli abbiamo affiancato un dispositivo basato su SOC ESP866 sul quale abbiamo installato il firmware Tasmota, il quale, una volta configurato, raccoglie le letture del PZEM e le ripubblica sotto forma di telemetrie MQTT.

Le telemetrie sono sostanzialmente due (ipotizzando che il nome MQTT assegnato su Tasmota sia “pzem016“)”

Telemetria “tele/pzem016/SENSOR” con payload in notazione JSON tipo:

{"Time":"1970-01-01T00:00:00","ENERGY":{"TotalStartTime":"2020-02-13T00:00:52","Total":620.7,"Yesterday":8.0,"Today":27.9,"Period":1,"Power":294,"ApparentPower":426,"ReactivePower":308,"Factor":0.69,"Frequency":50,"Voltage":228,"Current":1.9}}

Telemetria “tele/pzem016/STATE” con payload in notazione JSON tipo:

{"Time":"1970-01-03T10:44:00","Uptime":"2T10:44:02","UptimeSec":211442,"Heap":26,"SleepMode":"Dynamic","Sleep":0,"LoadAvg":999,"MqttCount":1,"Wifi":{"AP":1,"SSId":"WIFI","BSSId":"2C:3A:FD:8C:45:7E","Channel":6,"RSSI":60,"Signal":-70,"LinkCount":1,"Downtime":"0T00:00:06"}}

Tali telemetria vengono pubblicate ogni tot (regolabile) da parte del firmware Tasmota; la regolazione di questi intervalli e altre considerazioni importanti sono in calce alla guida.

I campi del payload della telemetria “tele/pzem016/SENSOR” (quella utile a ottenere la lettura di assorbimento) sono:

Campo Unità Descrizione
TotalStartTime Data Data di aggiornamento per il totale di assorbimento “Total
Total kWh Energia assorbita totale
Yesterday kWh Energia assorbita nel giorno precedente nell’intervallo 00:00 – 23:59
Today kWh Energia assorbita nel giorno corrente
Period kWh Energia assorbita a partire dalla lettura precedente
Power W Potenza istantanea
ApparentPower VA Voltampere
ReactivePower VAR Voltampere reattivo
Factor cosφ Fattore di potenza
Voltage V Differenza di potenziale in volt attualmente erogata (voltaggio)
Current A Intensità di corrente in ampere attualmente erogata (amperaggio)

Configurazione

Tante sono le metriche, tanti possono essere i sensori configurabili presso Home Assistant. In un unico blocco, vediamo come configurare entità di tipo “sensore” che andremo a realizzare.

N.b. Assumeremo che il nome MQTT del POW sia “pzem016” e che, ovviamente, sia correttamente configurato (alla voce di menu “Configuration” > “Configure Module“) presso l’interfaccia di Tasmota come indicato da progetto.

sensor:
  - platform: mqtt
    name: "Ampere"
    state_topic: "tele/pzem016/SENSOR"
    value_template: "{{ value_json['ENERGY'].Current}}"
    unit_of_measurement: 'Ampere'

  - platform: mqtt
    name: "Watt"
    state_topic: "tele/pzem016/SENSOR"
    value_template: "{{ value_json['ENERGY'].Power}}"
    unit_of_measurement: 'Watt'

  - platform: mqtt
    name: "Volt"
    state_topic: "tele/pzem016/SENSOR"
    value_template: "{{ value_json['ENERGY'].Voltage}}"
    unit_of_measurement: 'Volt'

  - platform: mqtt
    name: "cosfi"
    state_topic: "tele/pzem016/SENSOR"
    value_template: "{{ value_json['ENERGY'].Factor}}"
    unit_of_measurement: 'cosfi'

  - platform: mqtt
    name: "Energia Oggi"
    state_topic: "tele/pzem016/SENSOR"
    value_template: "{{ value_json['ENERGY'].Today}}"
    unit_of_measurement: 'kWh'

  - platform: mqtt
    name: "Energia Ieri"
    state_topic: "tele/pzem016/SENSOR"
    value_template: "{{ value_json['ENERGY'].Yesterday}}"
    unit_of_measurement: 'kWh'

  - platform: mqtt
    name: "Energia Totale"
    state_topic: "tele/pzem016/SENSOR"
    value_template: "{{ value_json['ENERGY'].Total}}"
    unit_of_measurement: 'kWh'

La configurazione genererà, come spiegato, diverse entità di tipo “sensore”:

  • sensor.ampere
  • sensor.watt
  • sensor.volt
  • sensor.cosfi
  • sensor.energia_oggi
  • sensor.energia_ieri
  • sensor.energia_totale

le quali potranno essere utilizzate sia come lettura istantanea e storica, nonché nelle automazioni più disparate.

Esempi presso il fronted

Alcuni esempi di sensori (con nomi personalizzati) rappresentati presso il frontend Lovelace UI di Home Assistant.

Home Assistant Sonoff POW Lavatrice - Ampere
Assorbimento espresso in Ampere (Corrente)
Home Assistant Sonoff POW Lavatrice - Watt
Assorbimento espresso in Watt

Contatori

In caso si vogliano configurare dei contabilizzatori di consumo (giornalieri, mensili e annuali), la configurazione proposta è la seguente:

utility_meter:
  energia_giorno:
    source: sensor.energia_oggi
    cycle: daily
  energia_mese:
    source: sensor.energia_oggi
    cycle: monthly
  energia_anno:
    source: sensor.energia_oggi
    cycle: yearly

Un focus sul tema è disponibile qui.

Note finali

La precisione (in termini di risoluzione del dato, di data/orario e altro, frequenza della produzione delle letture) è oggetto delle configurazione del firmware Tasmota, come specificato anche nel progetto a cui fa riferimento al presente guida.


Spesso i sensori di assorbimento elettrico di questo tipo producono grandi quantità di dati. Questo capita perché tale misurazione è estremamente variabile nel tempo; questo, purtroppo, causa spesso problemi alla domotica Home Assistant la quale, per default, salva qualsiasi dato in ingresso; questa ipertrofia di dati è anche, spesso, diretta conseguenza della rottura delle microSD sul quale l’HUB è installato. Per evitare tutto questo consigliamo, sempre, di far riferimento a questa guida per ridurre in modo importante la mole di dati salvati.

Ridurre le scritture dati di sensori “ipertrofici” su Home Assistant


Home Assistant Official Logo ATTENZIONE: 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.


Telegram News Channel