PiggyMeter
Questo articolo ti mostra come costruire un dispositivo per leggere a distanza i dati da un contatore elettrico (o qualsiasi dispositivo con un'interfaccia compatibile).
Utilizza componenti ampiamente disponibili, software open source ed è compatibile con il popolare software di automazione domestica, Home Assistant.
INFO
Un kit per assemblare un dispositivo funzionale è disponibile per l'acquisto su Tindie: PiggyMeter KIT.
Caratteristiche
- Supporta protocolli basati su IEC62056-21
- Supporta il protocollo SML passivo utilizzando il componente nativo ESPHome
- Molteplici contatori: energia, acqua, termico e altro
- Utilizza ESPHome open source
- Comunicazione wireless tramite Wi-Fi
- Si integra con Home Assistant
- Server web opzionale
- Hardware economico ESP32-C3 o ESP32-S2
- Design del case disponibile per la stampa 3D
Supporta contatori compatibili con lo standard IEC62056-21 che funzionano in modalità A, B, C, D (ma non E). Per i dettagli, vedi componente IEC 62056-21.
Nota che ci sono molte varianti del protocollo. Sebbene il contatore possa utilizzare la stessa interfaccia ottica, il formato del frame dati potrebbe essere diverso.
Inoltre, supporta contatori che utilizzano il protocollo SML (Smart Message Language) utilizzando il componente SML di ESPHome.
WARNING
Gli standard DLMS, M-Bus e ANSI C12.18/19 non sono supportati dal software.
Come verificare se il contatore è supportato?
Il termine IEC 62056-21 è utilizzato per più protocolli (con lo stesso livello hardware ma codifica dati diversa). Il dispositivo supporta contatori che forniscono dati codificati in ASCII, qualcosa del genere:
console
1-0:15.8.1(00000009999.567*kWh)
1-0:15.8.2(00000000000.000*kWh)
1-0:15.8.3(00000000000.000*kWh)
1-0:15.8.4(00000000000.000*kWh)
Il contatore deve essere compatibile con Standard Internazionale IEC 62056-21:2002.
Per il protocollo SML, cerca il logo SML sul contatore o controlla il manuale. Il componente ESPHome supporta solo la modalità passiva, non invia alcuna richiesta al contatore. In tale modalità, il contatore invia dati ogni pochi secondi.
Contatori segnalati come compatibili con PiggyMeter
La lista è creata in base alle segnalazioni degli utenti. Non si garantisce che sia accurata.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D tramite componente SML
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
INFO
Sentiti libero di inviare un'email a info@aquaticus.info se conosci un contatore che funziona con PiggyMeter ma non è elencato sopra.
Software alternativo
L'hardware di PiggyMeter può funzionare con molti contatori diversi che utilizzano l'interfaccia ottica. Tuttavia, il software attualmente supporta solo uno standard, limitando praticamente la gamma di contatori supportati.
Puoi provare a utilizzare software alternativi che potrebbero aggiungere supporto a contatori diversi. È importante notare che non c'è garanzia che funzionerà perfettamente con PiggyMeter. Per supporto, contatta l'autore originale.
- Modulo DLMS/COSEM Esphome https://github.com/viric/esphome-ziv
Distinta dei materiali
Parte | Descrizione |
---|---|
CPU | Wemos C3 o S2 Mini https://www.wemos.cc/en/latest/ |
Interfaccia ottica | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | Raster 2,54 mm; la parte in plastica deve essere alta 8,5 mm |
Magneto ad anello | ⌀30/⌀15×2mm |
Custodia | Custodia stampata in 3D https://github.com/aquaticus/piggymeter_case |
Rondella | Rondella stampata in 3D https://github.com/aquaticus/piggymeter_case |
Coperchio | Coperchio posteriore stampato in 3D https://github.com/aquaticus/piggymeter_case |
Scheda CPU
Hai bisogno di una scheda con chip Espressif installato e compatibile con il pinout Wemos/Lolin. Il fattore chiave è la posizione di 4 pin: GND
, VCC
, TX
e RX
.
Anche la dimensione del PCB è critica. La custodia stampata in 3D si adatta solo alle schede (o ai loro cloni) elencate di seguito:
- Lolin/Wemos S2 mini
- Lolin/Wemos C3 mini
In teoria, puoi utilizzare qualsiasi altra scheda CPU con pinout compatibile, in particolare ESP32 e ESP8266 D1 mini. Ma in tal caso devi progettare la tua custodia e modificare un po' i file di configurazione (tipo di scheda e pin della porta seriale).
Interfaccia ottica
Un contatore utilizza un'interfaccia ottica compatibile con lo standard IEC62056-21, comunicando con una sonda tramite un diodo a infrarossi e un fototransistor.
L'interfaccia è collegata a una delle porte seriali sulla scheda CPU. Ovviamente hai bisogno anche di VCC e GND.
Saldare 2 pin header. Devi usare un pin header di 8,5 mm di altezza. Il design della custodia accoglie questa altezza, garantendo una corretta adattabilità. Se l'altezza supera questa dimensione, chiudere il coperchio potrebbe presentare delle difficoltà.
Custodia
Scarica i file per la stampante 3D da https://github.com/aquaticus/piggymeter_case. Usa la versione V5 per l'ultimo design.
La custodia è composta da tre componenti:
- la custodia principale,
- una rondella,
- e un coperchio.
Sono disponibili tre file STL distinti per ciascun componente, oppure, in alternativa, un singolo file 3fm che incorpora tutti e tre gli elementi.
L'alloggiamento soddisfa i requisiti dello standard IEC62056-21 Optical Probe>.
INFO
L'alloggiamento ha un piccolo fermo. Per chiuderlo o aprirlo, è necessario applicare una certa forza.
Impostazioni di stampa 3D consigliate
- Materiale: PLA
- Strato: 0,2 mm
- Nessun supporto
Assemblaggio
Disporre i componenti all'interno della custodia in questo ordine:
- Magnete
- Rondella
- Interfaccia ottica
- Scheda CPU
- Coperchio
INFO
Guarda l'assemblaggio su Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm
Programmazione per contatori IEC62056-21
Inizia installando ESPHome.
In base alla tua scheda CPU, seleziona il file di configurazione appropriato. Inoltre, apporta modifiche manuali a determinati parametri, come la password WiFi.
Ottieni i file di configurazione
Clona il repository git con i file di configurazione:
bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml
Crea il file secrets.yaml
Crea un file secrets.yaml
all'interno della directory dove si trovano i file di configurazione. Questo file conterrà il nome della rete WiFi e la relativa password.
yaml
# Home Assistant API encryption key
api_key: my_home_assistant_encryption_key
# OTA password
ota_pass: my_ota_password
# WiFi network name
wifi_ssid: my_network
# WiFi network password
wifi_pass: my_password
Modifica la configurazione del progetto
La configurazione viene preimpostata con punti dati standard per un contatore elettrico.
Sentiti libero di modificare l'elenco, specialmente se il tuo contatore differisce dal tipo di contatore elettrico. Consulta il componente IEC 62056-21 per ulteriori informazioni.
yaml
sensor:
- platform: iec62056
obis: 1-0:15.8.0
name: Absolute active energy total
unit_of_measurement: kWh
accuracy_decimals: 3
device_class: energy
state_class: total_increasing
Compila e flasha il firmware
bash
esphome run piggymeter-s2-iec62056-21.yaml
Il comando sopra flasha il firmware e mostra l'output del monitor. Per impostazione predefinita, l'interfaccia legge i dati da un contatore ogni 1 minuto.
TIP
Per la scheda ESP32-S2 devi premere il pulsante BOOT e poi il pulsante RESET sulla PCB per entrare in modalità programmazione. Inoltre, potresti vedere un messaggio di errore dopo il flashing -- ignoralo semplicemente.
log
[12:21:27][D][iec62056.component:232]: Connection start
[12:21:27][D][binary_sensor:036]: 'Meter Connection Status': Sending state ON
[12:21:28][D][switch:013]: 'Internal LED' Turning ON.
[12:21:28][D][switch:056]: 'Internal LED': Sending state ON
[12:21:28][D][iec62056.component:174]: Meter identification: '/XXX6\2YYYYY'
[12:21:28][D][iec62056.component:407]: Meter reported protocol: C
[12:21:28][D][iec62056.component:410]: Meter reported max baud rate: 19200 bps ('6')
[12:21:28][D][iec62056.component:438]: Using negotiated baud rate 9600 bps.
[12:21:29][D][iec62056.component:470]: Switching to new baud rate 9600 bps ('5')
[12:21:29][D][iec62056.component:482]: Meter started readout transmission
[12:21:29][D][iec62056.component:524]: Data: 0-0:C.1.0(12345678)
[12:21:29][D][iec62056.component:524]: Data: 0-0:1.0.0(2000-01-01 20:10:30)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.0(00000001000.657*kWh)
[12:21:29][D][iec62056.component:620]: Set sensor 'Absolute active energy total' for OBIS '1-0:15.8.0'. Value: 1000.656982
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.1(00000002000.657*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.2(00000003000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.3(00000004000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.4(00000005000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.6.0(00000006000.385*kW)(2000-01-01 20:10:01)
Programmazione per contatori SML
I primi passaggi sono identici a quelli per i contatori IEC62056-21.
Dopo aver clonato il repository e creato il file secrets.yaml
, utilizza i file di configurazione per i contatori SML.
bash
esphome run piggymeter-s2-sml.yaml
È probabile che tu debba regolare il file di configurazione per adattarlo ai punti dati trasmessi dal contatore. Vale anche la pena verificare il baud rate e i bit di dati della porta seriale.
Home Assistant
Il dispositivo dovrebbe essere rilevato automaticamente da Home Assistant. Se non lo è, puoi aggiungerlo manualmente cliccando su Aggiungi Integrazione e selezionando l'integrazione ESPHome.
PiggyMeter espone tre gruppi di elementi:
Attivazione Lettura
Questo trigger forza PiggyMeter a leggere i dati da un contatore al di fuori della programmazione.
Stato Connessione Contatore
Lo stato Connesso indica che l'interfaccia sta scambiando dati con il contatore.
Sensori
Questa è una lista di sensori definiti nel file di configurazione.
Modalità autonoma
PiggyMeter può operare indipendentemente da Home Assistant, offrendo la possibilità di attivare un server web. Questo server visualizza i dati letti direttamente in un browser web e offre una semplice API REST.
Per attivare il server web, includi le seguenti righe nel file di configurazione:
yaml
web_server:
port: 80
Maggiori informazioni sul server web possono essere trovate nella documentazione di ESPHome.
Modifiche
Per impostazione predefinita, il dispositivo recupera i dati ogni minuto e il LED interno si illumina durante la trasmissione.
Solo un numero limitato di codici OBIS è definito nel file yaml di configurazione. È altamente consigliato modificare la lista dei sensori per adattarla a un contatore.
Sebbene i codici OBIS siano standardizzati, i contatori possono trasmettere un numero variabile di codici. Per accertare i codici supportati dal tuo contatore, abilita il logging DEBUG
per il componente IEC62056-21 e analizza l'output del log.
Diagnostica e Problemi IEC62056-21
Questa sezione è solo per i contatori IEC62056-21 (non SML).
Dopo aver flashato il firmware, il dispositivo tenterà di leggere i dati da un contatore dopo circa 15 secondi. Se la trasmissione fallisce, riproverà due volte ogni 15 secondi.
Puoi regolare questi parametri configurando i token appropriati. Consulta la documentazione del componente IEC62056-21 per maggiori dettagli.
È consigliabile cambiare il livello di log predefinito da DEBUG
a INFO
una volta confermato che il dispositivo funziona correttamente.
Di seguito sono riportati i problemi comuni e le rispettive soluzioni.
TIP
Assicurati che la sonda sia saldamente attaccata al contatore, allineando la freccia sulla sonda in direzione verso l'alto.
Nessuna trasmissione dal contatore
log
[E][iec62056.component:268]: No transmission from meter.
Questo potrebbe indicare:
- Più comunemente, l'interfaccia non è collegata a un contatore.
- L'interfaccia non è correttamente allineata con l'interfaccia ottica di un contatore.
- Il contatore non è compatibile.
Assicurati che l'interfaccia ottica sia posizionata parallelamente alla superficie frontale dell'involucro. Se il dispositivo funziona quando è collegato al contatore senza l'involucro, ma non funziona dopo essere stato inserito nell'involucro, questo potrebbe essere il problema. In tal caso, potresti anche considerare di allargare i due fori nell'involucro.
Non tutti i sensori hanno ricevuto dati
log
[E][iec62056.component:644]: Not all sensors received data from the meter. The first one: OBIS '1-0:72.7.0'. Verify sensor is defined with valid OBIS code.
Questo potrebbe indicare due problemi:
- Il contatore non supporta il codice OBIS che hai configurato nel file yaml. Semplicemente rimuovi il sensore con il codice OBIS specifico dalla configurazione.
- Potrebbe esserci un errore di battitura o una definizione errata del codice OBIS per il sensore nel file di configurazione. Ricontrolla il codice.
Il contatore trasmette dati automaticamente ma il dispositivo non riceve nulla
Questo indica che il contatore supporta la modalità D di IEC62056-21. In questa modalità, il contatore trasmette autonomamente dati ogni pochi secondi senza richiedere una richiesta specifica. Assicurati che la porta seriale sia configurata per allinearsi con il formato di trasmissione del contatore, tipicamente impostato su 9600 7E1 o 2400 7E1 nella maggior parte dei casi.
yaml
# 9600bps for mode D
uart:
rx_pin: GPIO21
tx_pin: GPIO22
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
Inoltre, la Modalità D deve essere attivata manualmente impostando mode_d=True
nella configurazione della piattaforma.
yaml
# Abilita la modalità D
iec62056:
mode_d: True
Errori di checksum
log
[E][iec62056.component:504]: Verifica BCC fallita. Atteso 0x6b, ricevuto 0x14
Questo errore suggerisce problemi di trasmissione.
Di solito, la velocità di trasmissione è eccessivamente alta. Ridurre la velocità massima in baud dovrebbe aiutare.
yaml
iec62056:
baud_rate_max : 4800
Identificazione del contatore ricevuta ma nessuna trasmissione
log
[D][iec62056.component:174]: Identificazione del contatore: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Il contatore indica la modalità E, che non è supportata. Tentativo di modalità C. Questo funzionerà per i contatori che supportano sia la modalità E che C.
[E][iec62056.component:268]: Nessuna trasmissione dal contatore.
La stringa di identificazione del contatore è ricevuta con successo, ma non c'è trasmissione di dati. Inoltre, il log mostra un messaggio che indica, "Il contatore indica la modalità E."
Il contatore opera esclusivamente in modalità E, che PiggyMeter non supporta. Di conseguenza, il software tenta di passare il contatore alla modalità C, ma questo tentativo fallisce.
Se un contatore supporta sia la modalità E che C, il sistema dovrebbe funzionare correttamente.