Come costruire un conta Watt completo per Home Assistant
di Luigi Duchi
05 Febbraio 2019
L'angolo dei lettori
Benvenuti nella rubrica "l'angolo dei lettori". Questo spazio è una sezione del blog che permette a chiunque di scrivere un articolo o realizzare un video, effettuare prove e test che riguardano il mondo della tecnologia e proporne la pubblicazione su queste pagine.
Oggi Vincenzo Poma (che ringraziamo per questo eccezionale articolo) ci mostrerà come costruire un contaWatt estremamente preciso e funzionale, perfettamente integrabile in Home Assistant.
Il materiale necessario per realizzare questo progetto è il seguente:
- Un contawatt Peacefair modello PZEM-004 acquistabile QUI
- Un Wemos D1 mini acquistabile QUI
- Un alimentatore per cellulari da 5v con uscita microusb lo potrete acquistare QUI
- In alternativa al caricabatterie da cellulare potrete acquistare un trasformatore Meanwell HDR 5-15 da 220v a 5v 2,4A con guida DIN che potete reperire QUI
In questo progetto Vincenzo Poma ha deciso di utilizzare un PZEM-004 per via del suo display che permette di verificare in tempo reale i valori rilevati dallo strumento. In alternativa si potrebbe usare un PZEM-004T senza display.
Agendo sulle quattro viti poste nella parte posteriore apriamo la scatola del PZEM-004, sul retro della schedina si vedono facilmente i due morsetti posti agli estremi destro e sinistro
nel morsetto di destra vanno i cavi di alimentazione e quelli a cui si collega il toroide che funge da pinza amperometrica. Nel connettore a 4 pin di sinistra si collegano i 4 cavetti che vanno al Wemos D1 mini.
- Rosso VCC -> al 3.3V- Giallo RX -> al TX- Blu TX -> al RX- Nero GND -> al GUna volta fatti questi collegamenti dovremo intervenire per fare una modifica sul modulo PZEM, perché la sua uscita è a 5V mentre il nostro Wemos D1 Mini ha bisogno di un'alimentazione a 3,3V. Per ottenere la tensione richiesta mettete una resistenza da 1K ohm come indicato in foto.
A questo punto sarà necessario programmare il Wemos D1 Mini “flashandolo” con il classico firmware Tasmota attraverso Arduino IDE, Platformio oppure usando esptools.py e il file sonoff.bin già compilato scaricabile al seguente link:
https://github.com/arendst/Sonoff-Tasmota/releases
Una volta completata questa operazione controlleremo sul router che indirizzo ip è stato assegnato al D1 mini. In alternativa potete utilizzare un app tipo Fing per fare uno scan degli indirizzi ip sulla vostra rete locale.
Digitate l’indirizzo IP che è stato assegnato al Wemos D1 Mini sulla barra degli indirizzi di un browser web ed otterrete la classica interfaccia web Tasmota.
Cliccate su “Configuration”, nella sezione “Configure Module” e scegliete il modulo “18 Generic” , al GPIO 1 Serial Out selezionate 62 PZEM0XX Tx e al GPIO 3 Serial In scegliete 63 PZEM004 Rx e salvate.
Nella sezione “Configure MQTT” impostate come Host l’indirizzo IP del server MQTT ovvero l’indirizzo IP del Raspberry, username e password del server MQTT e come Topic mettete PZEM.
Vi ricordo che per impostare il servizio MQTT sul vostro Raspberry potete seguire la guida al seguente link:
https://www.vincenzocaputo.com/picoblog/view/66/installare_mqtt_broker_su_raspberry
Per fare una prova, collegate il PZEM alla rete elettrica con una normale spina e il Wemos con un normale cavetto micro usb alimentato dal pc o da un trasformatore 5v per cellulari. Adesso prendete una lampadina qualsiasi, fate passare la fase nel toroide del PZEM, quindi alimentatela con una spina alla rete elettrica.
Sui display del PZEM saranno già visualizzati i dati relativi al consumo della lampadina, se nel vostro browser immettete l’indirizzo IP che avete dato al PZEM… li vedrete visualizzati in tempo reale anche via web grazie al Wemos D1 Mini.
Fatto questo non vi rimane che inserire il relativo codice in Home Assistant. Andate nella sezione sensor o nel file sensors.yaml e inserite questo codice:
- platform: mqtt
name: "Tensione"
state_topic: "tele/PZEM/SENSOR"
value_template: '{{ value_json["ENERGY"]["Voltage"] }}'
unit_of_measurement: "V"
- platform: mqtt
name: "Corrente"
state_topic: "tele/PZEM/SENSOR"
value_template: '{{ value_json["ENERGY"]["Current"] }}'
unit_of_measurement: "A"
- platform: mqtt
name: "Potenza Ist."
state_topic: "tele/PZEM/SENSOR"
value_template: '{{ value_json["ENERGY"]["Power"] }}'
unit_of_measurement: "W"
- platform: mqtt
name: "Potenza Factor"
state_topic: "tele/PZEM/SENSOR"
value_template: '{{ value_json["ENERGY"]["Factor"] }}'
unit_of_measurement: " "
- platform: mqtt
name: "Energia Oggi"
state_topic: "tele/PZEM/SENSOR"
value_template: '{{ value_json["ENERGY"]["Today"] }}'
unit_of_measurement: "kWh"
- platform: mqtt
name: "Energia Ieri"
state_topic: "tele/PZEM/SENSOR"
unit_of_measurement: "kWh"
value_template: '{{ value_json["ENERGY"]["Yesterday"] }}'
- platform: mqtt
name: "Energia Totale"
state_topic: "tele/PZEM/SENSOR"
unit_of_measurement: "kWh"
value_template: '{{ value_json["ENERGY"]["Total"] }}'
Quindi create il gruppo pzem per visualizzare i dati nel file groups.yaml:
pzem:
name: 'Contawatt per Consumi Energia'
entities:
- sensor.tensione
- sensor.corrente
- sensor.potenza_ist
- sensor.potenza_factor
- sensor.energia_oggi
- sensor.energia_ieri
- sensor.energia_totale
Se volete alimentare il Wemos direttamente dal pannello del differenziale di casa vostra vi consiglio di utilizzare un trasformatore con guida DIN della Meanwell, modello HDR 5-15 che ha un uscita a 5V. Questa la collegheremo all’apposito contatto 5V che trovate sul Wemos D1 Mini, mentre il secondo cavo di uscita dal Meanwell lo collegherete al contatto G del Wemos insieme al precedente cavetto nero che veniva dal GND del PZEM-004T.
Ringraziamo ancora una volta Vincenzo Poma per quest'articolo che sicuramente tornerà utile a molti.
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.