SCOPI DEL PROGETTO:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
COMPONENTI FISICI UTILIZZATI:
|
GUIDA maggiormente DEDICATA A utenti: |
|
NOTE E DISCLAIMER
|
|
Revisione progetto: 1.1 |
Abstract
La possibilità, in domotica personale, di misurare gli assorbimenti elettrici e i consumi del proprio impianto è tra le più apprezzate funzioni non solo per una questione di contabilizzazione economica, ma anche per far sì che gli automatismi – propri della domotica – possano intervenire e/o allertarci in presenza di condizioni di assorbimento eccessivo o altre situazioni specifiche.
Le tecniche di rilevazione sono essenzialmente due: una misurazione del carico in modo passante, ovvero misurando la corrente che transita attraverso un componente sensore, oppure tramite l’uso di pinze/toroidi amperometrici, ovvero dei componenti passivi che, sfruttando il campo magnetico presente intorno a un cavo elettrico percorso da corrente (che varia di intensità proporzionalmente alla quantità di corrente), deducono la lettura di assorbimento.
Sono ormai moltissimi gli attuatori del primo tipo in grado di misurare il carico ad essi applicato, che li attraversa; quando però si tratta di misurare l’assorbimento a monte dell’impianto le possibilità si riducono di molto. Alcuni modelli di sensori passanti supportino dei carichi di corrente anche importanti (per esempio il Sonoff POW, o lo Shelly 1PM).
L’alternativa sta nell’adozione di pinze/toroidi amperometrici. In pratica si tratta di sensori dotati di una sonda magnetica che “circonda” il cavo fase da monitorare e che, il base al campo magnetico da esso prodotto, determina la lettura. Il vantaggio evidente di questi sensori sta nella lettura “passiva” dell’informazione, la quale viene prelevata semplicemente circondando un cavo tramite il toroide/pinza amperometrica, il che consente anche di non dover “metter mano” all’impianto.
I sensori di queso tipo dotati anche di funzionalità domotiche ne esistono alcuni modelli di qualità, come per esempio l’ottimo Shelly EM, il quale unico handicap è, purtroppo, il costo, che, sebbene non elevatissimo, è presente.
Se la misurazione degli assorbimenti è un must ma non si vuole/può optare per un componente specificamente concepito a tale scopo, la soluzione esiste: l’accoppiamento di un sensore digitale come il PZEM-016 (vedi anche scheda inDomus) e una board Wi-Fi Wemos D1 Mini (ma per entrambi vanno bene anche altri modelli) – componenti entrambi molto economici ma versatili ed efficaci – consente di ottenere sostanzialmente il medesimo scopo.
Il presente progetto realizza precisamente questo: illustra come assemblare in un’unico device le funzionalità di sensore offerte dal PZEM-016 e quelle di “intelligenza” e trasmissione dati tramite il Wemos D1 Mini.
N.b. Questo, come tanti, è solo un progetto sperimentale e con scopi puramente didattici. Sul tema di energia e potenza, si consiglia caldamente la lettura di questa scheda. |
Si parte
- Necessario
- PZEM
- ESP8266
- Pinza amperometrica
- ESPHome
- Integrazione Home Assistant
- Integrazione altri HUB
Necessario
Il necessario per realizzare il presente progetto è, come detto, un PZEM-016 e un Wemos D1 Mini.
Tra i vari modelli PZEM abbiamo scelto il PZEM-016 perché, a differenza del modello inferiore (il PZEM-004), può essere scelto in acquisto in abbinamento a una pinza amperometrica anziché un toroide chiuso: la prima si monta sul cavo fase da monitorare semplicemente aprendola e posizionandola intorno al cavo (vedi immagine sopra), mentre il toroide prevede che il cavo venga disconnesso dalla più vicina connessione per essere “infilato”. Secondariamente, il PZEM-016 è dotato di un proprio case protettivo, il che non guasta. La scelta del Wemos D1 Mini, invece, è puramente occasionale: per il presente progetto si sarebbe potuto utilizzare (con le medesime tecniche descritte) un NodeMCU o altri analoghi.
Le due unità verranno collegate assieme e, date le limitate dimensioni del Wemos D1 Mini, provvederemo a inserire quest’ultimo direttamente dentro la scatola di contenimento del PZEM-016.
Servono poi due resistenze da 2kΩ, qualche cavetto Dupont, un piccolo saldatore (bene averne uno con una punta particolarmente sottile) e infine una pompa dissaldante (non assolutamente necessaria ma caldamente consigliata).
Infine, è bene avere un minimo di manualità. 😊
PZEM
Il PZEM-016 è un’unità alimentata tramite i comuni 230 volt di rete in grado di accettare letture esterne tramite una comune pinza o un toroide amperometrici. Di positivo ha il fatto di presentare un’uscita a 5 volt in corrente continua, particolarmente comoda per alimentare, in questo progetto, il Wemos D1 Mini che gli andremo a collegare e montare sopra.
Per integrare al Wemos le letture del PZEM è necessario apportare a quest’ultimo due piccole modifiche, ovvero il dissaldamento di un chip integrato presente sulla sua board e l’aggiunta delle due resistenze da 2kΩ.
Il PZEM-016 appare come segue:
Tramite un profilo affilato ma non tagliente (per esempio una carta di credito) sollevare i bordi laterali così da aprire l’enclosure e avere accesso alla board del PZEM. Una volta aperto appare così:
Il chip integrato da dissaldare, quindi da rimuovere, è presente nella foto nell’angolo in basso a destra.
Eccone un dettaglio:
Con molta cura e grazie all’aiuto del mini-saldatore e della pompa dissaldante, provvedere al dissaldamento del piccolo integrato, riscaldando e rimuovendo lo stagno che ne fissa i vari piedini e sollevandolo delicatamente da sotto.
N.b. Se non si ha particolare dimestichezza con le operazioni di dissaldatura, si consiglia la lettura di questa ottima guida. |
Al termine, la piazzola dovrebbe risultare come segue:
A questo punto dovremo aggiungere le due resistenze e due cavi Dupont in punti specifici della board.
Andremo a unire, tramite una resistenza, i punti 1 e 2 mentre la seconda resistenza la collocheremo tra il punto 1 e il 3.
Andremo contestualmente a saldare al punto 2 un cavetto Dupont (lo useremo in seguito per il collegamento con il Wemos), mentre il secondo cavetto lo andremo a saldare al punto 4.
N.b. Si tratta di saldature non propriamente elementari: è necessario essere particolarmente accurati e puliti nella realizzazione dei contatti, che ovviamente devono essere minimali e isolati rispetto agli altri. |
Alla fine dell’operazione, la board dovrebbe apparire come segue:
La modifica al PZEM è così conclusa.
ESP8266
La board basata su SOC ESP8266 che utilizzeremo è un Wemos D1 Mini ma avrebbe, come detto, anche essere un’altra.
Collegamento con il PZEM
La particolarità del PZEM-016 è quella di disporre di morsetti di uscita che erogano una corrente continua a 5 volt, esattamente quella necessaria al nostro Wemos per operare. Procediamo quindi a identificare i morsetti, che si trovano nell’estremità inferiore del PZEM, e inseriamo due fili, uno per il polo positivo e uno per il polo negativo.
Il nostro consiglio è quello di inserire i capi dei due fili nella morsettiera per poi farli transitare sotto la board, infine per farli “uscire” di lato. Questo piccolo trucchetto ci tornerà molto utile in fase di chiusura del case del PZEM.
Dal PZEM partiranno quindi quattro fili:
- polo positivo 5 volt;
- polo negativo;
- i due fili saldati assieme alle resistenze.
Il Wemos D1 Mini presenta le seguenti connessioni:
Andremo quindi a collegare i quattro fili che abbiamo collocato sul PZEM-016 come segue:
PZEM-016 | Wemos D1 Mini |
Polo + 5 volt | Pin 5v |
Polo negativo | Pin GND |
Pin 2 | GPIO3 (pin 21) |
Pin 4 | GPIO1 (pin 22) |
Ci raccomandiamo di verificare bene le saldature e di non avere dei fili eccessivamente lunghi, in quanto potrebbero ostacolare la chiusura del case.
A questo punto è possibile chiudere il tutto. Un suggerimento potrebbe essere quello di posizionare dei distanziali in plastica, così da poter creare una sorta di “rialzo” per il Wemos, ma in alternativa potremo procedere con della più comune colla a caldo. Posizioniamo quindi il Wemos sopra il PZEM, creando tramite la colla a caldo (in prossimità dei 4 angoli) dei sostegni per sollevarlo. Il consiglio è quello di non esagerare con la colla a caldo, così da non coprire eccessivamente la circuiteria del PZEM, il quale potrebbe altrimenti risentirne in quanto non più in grado di dissipare il calore.
Eseguita quest’operazione, procediamo alla chiusura della scocca, la quale quindi ora conterrà sia il PZEM che il Wemos. Assicuriamoci che i fili, non eccessivamente lunghi, rientrino all’interno della sagoma del PZEM e procediamo a chiudere il case con la scocca rimossa a inizio guida. In questa fase ci sarà particolarmente utile l’aver fatto passare i fili dell’alimentazione del Wemos sotto la board del PZEM, come consigliato in precedenza.
Pinza amperometrica
Completato l’assemblaggio dell’unità PZEM+Wemos siamo pronti a collegarsi la pinza amperometrica, ovvero il sensore magnetico che, una volta collocato sul cavo di fase da monitorare, rileverà l’assorbimento.
Al PZEM-016 è necessario inviare:
- l’alimentazione 230 volt di rete;
- le connessioni alla pinza amperometrica.
Lo schema di connessione è dunque il seguente:
Posizionamento pinza amperometrica
È il momento di posizionare la pinza amperometrica sul cavo di fase da monitorare. Solitamente si sceglie il cavo di fase in ingresso all’impianto, ovvero sul quadro. Tramite un cercafase (ma vi consigliamo di sfruttare sempre l’intervento di un professionista) identificate il cavo e poi posizionategli intorno la pinza, aprendola e poi chiudendogliela attorno.
A questo punto, con il PZEM alimentato, il quale riceve le letture dalla pinza amperometrica e le “gira” al Wemos, il quale è al contempo da lui alimentato, abbiamo terminato il lavoro “fisico” previsto dal progetto.
ESPHome
ESPHome è un firmware “modulare” che consente, appunto, di installare sui dispositivi target (in questo caso il nostro Wemos) le componenti utili agli scopi prefissi “assemblate” in un unico compilato.
N.b. Se non si conosce questo firmware è necessario dare una veloce lettura alla scheda ad esso dedicata; diversamente non si comprenderanno gli aspetti che verranno spiegati in seguito e, fatalmente, si fallirà. |
Nel caso di questo specifico progetto il componente ESPHome utile allo scopo è “Sensor“, il quale consente di definire, lato Home Assistant, le entità di tipo sensore che ci serviranno per le letture energetiche. Vengono inoltre configurati anche altri componenti minori (ma necessari) come per esempio “UART Bus“, per far comunicare il Wemos con la sonda PZEM, e altro.
La porzione aggiuntiva di configurazione YAML di ESPHome (la “ricetta” del nostro firmware) allo scopo del nostro progetto è la seguente:
logger:
baud_rate: 0
uart:
rx_pin: GPIO3
tx_pin: GPIO1
baud_rate: 9600
stop_bits: 1
sensor:
- platform: pzemac
current:
id: aac
internal: true
icon: "mdi:alpha-a-circle"
voltage:
id: vac
internal: true
icon: "mdi:alpha-v-circle"
power:
id: w
internal: true
icon: "mdi:alpha-w-circle"
update_interval: 1s
#FINE PRIMA PARTE
#INIZIO SECONDA PARTE
- platform: total_daily_energy
name: "PZEM - Consumption"
power_id: w
filters:
- multiply: 0.001
unit_of_measurement: kWh
icon: mdi:counter
accuracy_decimals: 1
- platform: template
name: "PZEM - Ampere"
lambda: |-
if (id(aac).state) {
return (id(aac).state);
} else {
return 0;
}
unit_of_measurement: A
icon: "mdi:alpha-a-circle"
update_interval: 2s
- platform: template
name: "PZEM - Volt"
lambda: |-
if (id(vac).state) {
return (id(vac).state);
} else {
return 0;
}
unit_of_measurement: V
icon: "mdi:alpha-v-circle"
update_interval: 2s
- platform: template
name: "PZEM - Watt"
lambda: |-
if (id(w).state) {
return (id(w).state);
} else {
return 0;
}
unit_of_measurement: W
icon: "mdi:alpha-w-circle"
update_interval: 2s
La configurazione proposta andrà ovviamente sommata alla parte di default, quella nella quale vengono indicate le credenziali di accesso Wi-Fi e altro.
Una configurazione tipo, completa, potrebbe essere come la seguente:
esphome:
name: WEMOSPZEM
platform: ESP8266
board: nodemcuv2
wifi:
ssid: "PROPRIA-Wi-Fi"
password: "PASSWORD-Wi-Fi"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp32Blt2Wifi Fallback Hotspot"
password: "PASSWORD_FALLBACK"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "metterequidentrounachiavepersonalequalunque"
ota:
password: "PASSWORD_UPDATE_OTA"
logger:
baud_rate: 0
uart:
rx_pin: GPIO3
tx_pin: GPIO1
baud_rate: 9600
stop_bits: 1
sensor:
- platform: pzemac
current:
id: aac
internal: true
icon: "mdi:alpha-a-circle"
voltage:
id: vac
internal: true
icon: "mdi:alpha-v-circle"
power:
id: w
internal: true
icon: "mdi:alpha-w-circle"
update_interval: 1s
- platform: total_daily_energy
name: "PZEM Consumption"
power_id: w
filters:
- multiply: 0.001
unit_of_measurement: kWh
icon: mdi:counter
accuracy_decimals: 1
- platform: template
name: "PZEM Ampere"
lambda: |-
if (id(aac).state) {
return (id(aac).state);
} else {
return 0;
}
unit_of_measurement: A
icon: "mdi:alpha-a-circle"
update_interval: 2s
- platform: template
name: "PZEM Volt"
lambda: |-
if (id(vac).state) {
return (id(vac).state);
} else {
return 0;
}
unit_of_measurement: V
icon: "mdi:alpha-v-circle"
update_interval: 2s
- platform: template
name: "PZEM Watt"
lambda: |-
if (id(w).state) {
return (id(w).state);
} else {
return 0;
}
unit_of_measurement: W
icon: "mdi:alpha-w-circle"
update_interval: 2s
N.b. A prescindere, su qualsiasi configurazione ESPHome consigliamo sempre di includere alcuni componenti secondo noi sempre utili, come quelli illustrati su questa scheda. |
Considerazioni
Una breve spiegazione del codice di cui sopra è da spiegare.
Nella prima parte del codice istruiamo il Wemos a interfacciarsi con la sonda PZEM tramite l’evocazione del componente “UART Bus“, la quale opportunamente configurata, fa funzionare la comunicazione; viene inoltre configurato il componente “Logger“, il quale fa sì che tutte le letture rilevate dalla porta seriale (quindi dalla sonda) vengano successivamente trattate.
Infine, vengono definiti dei primi sensori interni tramite il componente “Sensor”, ad uso interno del firmware (si noti la chiave “internal: true“), che servono per effettuare i calcoli di potenza ed energia.
Nella seconda parte, invece, vengono definite le entità che verranno poi esposte verso Home Assistant, dipicamente dei sensori fatti e finiti.
ATTENZIONE: dato che chi adotta ESPHome solitamente lo utilizza in abbinamento a Home Assistant abbiamo assunto che la configurazione del firmware ESPHome andasse effettuata in questa logica, e così abbiamo fatto. Chiunque volesse invece utilizzare questo dispositivo integrandolo su altri HUB personali che non supportino le API di ESPHome, allora la strada da percorrere è quella di integrare il codice da noi proposto con un blocco relativo al componente MQTT di ESPHome, cosa che consente di acquisire i dati tramite questo standard. |
In pratica:
- il “logger” raccoglie le letture;
- i sensori interni le elaborano;
- i sensori “esterni” espongono i dati finali a Home Assistant.
Questo è un buon approccio anche perché, in caso di temporanea disconnessione Wi-Fi, alla riconnessione tutti i “dati persi” da Home Assistant verranno magicamente recuperati.
I sensori disponibili saranno quattro:
- sensor.pzem_consumption (sensore giornaliero di energia);
- sensor.pzem_watt (sensore istantaneo di potenza);
- sensor.pzem_volt ( sensore istantaneo di voltaggio);
- sensor.pzem_ampere (sensore istantaneo di corrente);
N.b. Le entità generate verso Home Assistant sono configurate in modo da poter essere immediatamente utilizzate anche col “pannello Energy”, per analizzare nel tempo gli andamenti storici delle varie misure. |
Installazione
A questo punto si è pronti per la compilazione e la successiva installazione sul proprio PZEM.
Le tecniche per farlo sono diverse – tutto dipende ovviamente da dove si ha installato e in che modalità la suite ESPHome.
CON DISPOSITIVO DI FABBRICA
Se il Wemos è originale, solitamente l’unica possibilità di installare il compilato ESPHome è utilizzando cavo USB/Micro-USB a collegare il computer che monta ESPHome e il Wemos, avendo cura di disconnettere l’alimentazione esterna (alla quale provvede, durante la programmazione, l’interfaccia USB). Collegare i due tramite il cavo e poi impostare la modalità di flash premendo il bottone preposto presente sull’unità.
A questo punto eseguire la compilazione del firmware seguendo una delle guide dedicate al tema in base alla propria modalità d’uso di ESPHome e alla propria installazione.
CON DiSPOSITIVO GIÀ DOTATO DI ESPHOME
In caso l’attuatore sia già dotato di firmware ESPHome, la quale precedente compilazione prevedesse il codice:
ota:
password: "PASSWORD_UPDATE_OTA"
e avesse lo stesso “name“, allora non sarà necessario il cavo, ma basterà avviare la compilazione del firmware provvedendo all’accensione normale dell’attuatore il quale, entrando nella stessa rete LAN (tramite Wi-Fi) del computer sul quale viene eseguito ESPHome, verrà aggiornato.
Integrazione Home Assistant
A questo punto basterà riavviare l’attuatore e provvedere all’integrazione delle sue funzionalità di BRIDGE/Gateway sul proprio HUB personale. In caso di utilizzi Home Assistant, la guida è questa:
Questa integrazione genererà, come da premesse, un’entità di tipo “Sensor” lato Home Assistant, le quali potranno direttamente essere utilizzate, manualmente o in modo automatico, per consultare le misure.
Integrazione altri HUB
Come spiegato sopra, dato che chi adotta ESPHome solitamente lo utilizza in abbinamento a Home Assistant abbiamo assunto che la configurazione del firmware ESPHome andasse effettuata in questa logica, e così abbiamo fatto. Chiunque volesse invece utilizzare questo dispositivo integrandolo su altri HUB personali che non supportino le API di ESPHome, allora la strada da percorrere è quella di integrare il codice da noi proposto con un blocco relativo al componente MQTT di ESPHome, cosa che consente di acquisire i dati tramite questo standard.
Altri articoli sul tema consumi:
- Integrare Shelly Pro 4PM a Home Assistant via MQTT
- Stimare assorbimenti e consumi elettrici sulla domotica Home Assistant, con PowerCalc
- PUN: integrare il prezzo unico nazionale dell’energia sulla domotica Home Assistant
- Integrare e contabilizzare un pannello solare fotovoltaico “plug & play” su Home Assistant
- Contabilizzare i consumi d’acqua e rilevare perdite con la domotica Home Assistant (via flussostato ed ESPHome)
- Rendere no-frost un frigorifero tradizionale con Home Assistant
- Calcolare il consumo di energia (in kWh) a partire dalla potenza istantanea (in Watt) con Home Assistant
- Configurare dei contabilizzatori di consumo energetico su Home Assistant e relative fasce orarie (v2)
- Realizzare una sonda di assorbimento elettrico domotica tramite PZEM, ESP8266 ed ESPHome
- Sonoff POW: calibrare la rilevazione d’assorbimento con Tasmota
- Integrare Shelly Dimmer 2 a Home Assistant via MQTT
- Integrare Shelly Plug S a Home Assistant via MQTT
- Integrare Shelly EM a Home Assistant via MQTT
- Integrare potenza ed energia da PZEM su Home Assistant via MQTT
- Realizzare una sonda di assorbimento elettrico domotica tramite PZEM, ESP8266 e Tasmota
- Integrare Shelly Dimmer / Dimmer SL a Home Assistant via MQTT
- Integrare Shelly 1PM a Home Assistant via MQTT
- Integrare Shelly 2.5 a Home Assistant via MQTT
- Contabilizzare i consumi gas sulla domotica Home Assistant (via contatore predisposto e lanciaimpulsi)
- Assorbimenti elettrici sotto controllo tramite la domotica Home Assistant
- Integrare FIBARO Wall Plug (in versione Apple HomeKit) a Home Assistant
- Configurare dei contabilizzatori di consumo energetico su Home Assistant
- Dedurre lo stato di un elettrodomestico non-domotico con Home Assistant (tramite assorbimento elettrico)
- Integrare potenza ed energia da Sonoff POW su Home Assistant via MQTT
- Uso della modalità “DYNAMIC SLEEP” di Tasmota per ridurre l’assorbimento di un Sonoff
- Riprogrammare un ITEAD Sonoff POW usando firmware Tasmota
- Rendere domotico uno scaldabagno elettrico tramite Sonoff Basic (o altri)
- Uso del comando “SLEEP” di Tasmota per ridurre l’assorbimento di un Sonoff
⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui. |
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa. |