PiggyMeter
Ta članek vam pokaže, kako zgraditi napravo za daljinsko branje podatkov iz električnega števca (ali katere koli naprave s kompatibilnim vmesnikom).
Uporablja široko dostopne komponente, odprtokodno programsko opremo in je združljiv s priljubljeno programsko opremo za avtomatizacijo doma, Home Assistant.
INFO
Komplet za sestavljanje funkcionalne naprave je na voljo za nakup na Tindie: PiggyMeter KIT.
Lastnosti
- Podpira protokole na osnovi IEC62056-21
- Podpira pasivni SML protokol z uporabo ESPHome native komponente
- Več števcev: energija, voda, toplota in več
- Uporablja odprtokodni ESPHome
- Brezžična komunikacija prek Wi-Fi
- Integracija s Home Assistant
- Izbirni spletni strežnik
- Poceni strojna oprema ESP32-C3 ali ESP32-S2
- Načrt ohišja na voljo za 3D tiskanje
Podpira števce, združljive s standardom IEC62056-21, ki delujejo v načinih A, B, C, D (vendar ne E). Za podrobnosti glejte IEC 62056-21 komponento.
Upoštevajte, da obstaja veliko različic protokola. Čeprav števec lahko uporablja isti optični vmesnik, je lahko format podatkovnega okvira drugačen.
Poleg tega podpira števce, ki uporabljajo SML (Smart Message Language) protokol z uporabo ESPHome SML komponente.
WARNING
Standardi DLMS, M-Bus in ANSI C12.18/19 niso podprti s programsko opremo.
Kako preveriti, ali je števec podprt?
Izraz IEC 62056-21 se uporablja za več protokolov (z isto strojno plastjo, vendar z različnim kodiranjem podatkov). Naprava podpira števce, ki zagotavljajo ASCII-kodirane podatke, nekaj takega:
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)
Števec mora biti združljiv z Mednarodnim standardom IEC 62056-21:2002.
Za SML protokol poiščite SML logotip na števcu ali preverite priročnik. ESPHome komponenta podpira samo pasivni način, ne pošilja nobenih zahtev števcu. V tem načinu števec pošilja podatke vsakih nekaj sekund.
Števci, ki naj bi delovali s PiggyMeter
Seznam je ustvarjen na podlagi poročil uporabnikov. Ni zagotovila, da je točen.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D preko SML komponente
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
INFO
Prosto pošljite e-pošto na info@aquaticus.info, če poznate števec, ki deluje s PiggyMeter, a ni naveden zgoraj.
Alternativna programska oprema
Strojna oprema PiggyMeter lahko deluje z mnogimi različnimi števci, ki uporabljajo optični vmesnik. Vendar pa programska oprema trenutno podpira le en standard, kar praktično omejuje nabor podprtih števcev.
Lahko poskusite uporabiti alternativno programsko opremo, ki lahko doda podporo za različne števce. Pomembno je opozoriti, da ni zagotovila, da bo delovala brezhibno s PiggyMeter. Za podporo se obrnite na prvotnega avtorja.
- DLMS/COSEM Esphome modul https://github.com/viric/esphome-ziv
Seznam materialov
Del | Opis |
---|---|
CPU | Wemos C3 ali S2 Mini https://www.wemos.cc/en/latest/ |
Optični vmesnik | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2,54 mm raster; plastični del mora biti 8,5 mm višine |
Obročni magnet | ⌀30/⌀15×2mm |
Ohišje | 3D natisnjeno ohišje https://github.com/aquaticus/piggymeter_case |
Podložka | 3D natisnjena podložka https://github.com/aquaticus/piggymeter_case |
Pokrov | 3D natisnjen zadnji pokrov https://github.com/aquaticus/piggymeter_case |
CPU plošča
Potrebujete ploščo z nameščenim čipom Espressif in združljivim pinoutom Wemos/Lolin. Ključni dejavnik je lokacija 4 pinov: GND
, VCC
, TX
in RX
.
Velikost PCB je prav tako kritična. 3D natisnjeno ohišje ustreza le ploščam (ali njihovim klonom), navedenim spodaj:
- Lolin/Wemos S2 mini
- Lolin/Wemos C3 mini
Teoretično lahko uporabite katero koli drugo CPU ploščo z združljivim pinoutom, na primer ESP32 in ESP8266 D1 mini. V tem primeru morate oblikovati svoje ohišje in nekoliko spremeniti konfiguracijske datoteke (tip plošče in serijski priključni pini).
Optični vmesnik
Števec uporablja optični vmesnik, združljiv s standardom IEC62056-21, ki komunicira s sondo prek infrardeče diode in fototranzistorja.
Vmesnik je povezan z enim od serijskih priključkov na CPU plošči. Seveda potrebujete tudi VCC in GND.
Zalotajte 2 pin headerja. Uporabiti morate pin header 8,5 mm višine. Oblikovanje ohišja ustreza tej višini, kar zagotavlja pravilno prileganje. Če višina presega to dimenzijo, lahko zapiranje pokrova predstavlja izzive.
Ohišje
Prenesite datoteke za 3D tiskalnik iz https://github.com/aquaticus/piggymeter_case. Uporabite različico V5 za najnovejšo zasnovo.
Ohišje sestavljajo trije deli:
- glavno ohišje,
- podložka,
- in pokrov.
Na voljo so tri ločene STL datoteke za vsak del, ali pa ena 3fm datoteka, ki vključuje vse tri elemente.
Ohišje izpolnjuje zahteve standarda IEC62056-21 za optično sondo.
INFO
Ohišje ima majhen zapah. Za zapiranje ali odpiranje je potrebna določena sila.
Priporočene nastavitve za 3D tiskanje
- Material: PLA
- Plast: 0,2 mm
- Brez podpore
Sestavljanje
Razporedite komponente v ohišju v naslednjem vrstnem redu:
- Magnet
- Podložka
- Optični vmesnik
- CPU plošča
- Pokrov
INFO
Oglejte si sestavljanje na Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm
Programiranje za števce IEC62056-21
Začnite z namestitvijo ESPHome.
Glede na vašo CPU ploščo izberite ustrezno konfiguracijsko datoteko. Dodatno ročno prilagodite določene parametre, kot je geslo za WiFi.
Pridobite konfiguracijske datoteke
Klonirajte git repozitorij s konfiguracijskimi datotekami:
bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml
Ustvarite datoteko secrets.yaml
Ustvarite datoteko secrets.yaml
v imeniku, kjer se nahajajo konfiguracijske datoteke. Ta datoteka bo vsebovala ime WiFi omrežja in ustrezno geslo.
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
Spremenite konfiguracijo projekta
Konfiguracija je prednastavljena s standardnimi podatkovnimi točkami za električni števec.
Seznam lahko prilagodite, še posebej, če se vaš števec razlikuje od tipa električnega števca. Za več informacij glejte IEC 62056-21 komponento.
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
Sestavite in naložite firmware
bash
esphome run piggymeter-s2-iec62056-21.yaml
Zgornji ukaz naloži firmware in prikaže izhod monitorja. Privzeto vmesnik bere podatke iz števca vsakih 1 minuto.
TIP
Za ploščo ESP32-S2 morate pritisniti gumb BOOT in nato gumb RESET na PCB, da vstopite v način programiranja. Poleg tega lahko po nalaganju vidite sporočilo o napaki -- preprosto ga ignorirajte.
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)
Programiranje za SML števce
Prvi koraki so enaki kot za števce IEC62056-21.
Po kloniranju repozitorija in ustvarjanju datoteke secrets.yaml
uporabite konfiguracijske datoteke za SML števce.
bash
esphome run piggymeter-s2-sml.yaml
Najverjetneje boste morali prilagoditi konfiguracijsko datoteko, da bo ustrezala podatkovnim točkam, ki jih pošilja števec. Prav tako je vredno preveriti hitrost prenosa in podatkovne bite serijskega vmesnika.
Home Assistant
Naprava bi morala biti samodejno zaznana s strani Home Assistant. Če ne, jo lahko dodate ročno s klikom na Dodaj integracijo in izbiro integracije ESPHome.
PiggyMeter izpostavlja tri skupine elementov:
Sprožilec odčitavanja
Ta sprožilec prisili PiggyMeter, da prebere podatke iz števca izven urnika.
Status povezave števca
Status Povezano označuje, da vmesnik izmenjuje podatke s števcem.
Senzorji
To je seznam senzorjev, definiranih v konfiguracijski datoteki.
Samostojni način
PiggyMeter lahko deluje neodvisno od Home Assistant in ponuja možnost aktivacije spletnega strežnika. Ta strežnik prikazuje odčitke podatkov neposredno v spletnem brskalniku in ponuja preprost REST API.
Za aktivacijo spletnega strežnika vključite naslednje vrstice v konfiguracijsko datoteko:
yaml
web_server:
port: 80
Več informacij o spletnem strežniku najdete v dokumentaciji ESPHome.
Spremembe
Privzeto naprava pridobiva podatke vsako minuto, notranja LED pa je osvetljena med prenosom.
V konfiguracijski yaml datoteki je definirano le omejeno število OBIS kod. Zelo priporočljivo je, da spremenite seznam senzorjev, da ustreza števcu.
Čeprav so OBIS kode standardizirane, lahko števci pošiljajo različno število kod. Da bi ugotovili podprte kode za vaš števec, omogočite DEBUG
beleženje za komponento IEC62056-21 in analizirajte izhod dnevnika.
Diagnostika in težave IEC62056-21
Ta razdelek je namenjen samo števcom IEC62056-21 (ne SML).
Po utripanju vdelane programske opreme bo naprava poskušala prebrati podatke iz števca po približno 15 sekundah. Če prenos ne uspe, bo poskusila še dvakrat vsakih 15 sekund.
Te parametre lahko prilagodite z ustrezno konfiguracijo žetonov. Za več podrobnosti si oglejte dokumentacijo IEC62056-21 komponenta.
Priporočljivo je, da privzeto raven dnevnika spremenite iz DEBUG
v INFO
, ko je naprava potrjena, da deluje pravilno.
Spodaj so pogoste težave in njihove rešitve.
TIP
Prepričajte se, da je sonda varno pritrjena na števec, pri čemer je puščica na sondi usmerjena navzgor.
Ni prenosa iz števca
log
[E][iec62056.component:268]: No transmission from meter.
To lahko pomeni:
- Najpogosteje vmesnik ni priključen na števec.
- Vmesnik ni pravilno poravnan z optičnim vmesnikom števca.
- Števec ni združljiv.
Prepričajte se, da je optični vmesnik postavljen vzporedno s sprednjo površino ohišja. Če naprava deluje, ko je pritrjena na števec brez ohišja, vendar ne deluje po vstavitvi v ohišje, bi to lahko bil problem. V takem primeru lahko razmislite tudi o povečanju dveh lukenj v ohišju.
Niso vsi senzorji prejeli podatkov
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.
To lahko pomeni dve težavi:
- Števec ne podpira OBIS kode, ki ste jo konfigurirali v datoteki yaml. Preprosto odstranite senzor s specifično OBIS kodo iz konfiguracije.
- Lahko je napaka pri tipkanju ali napačna definicija OBIS kode za senzor v konfiguracijski datoteki. Dvakrat preverite kodo.
Števec samodejno prenaša podatke, vendar naprava ne prejme ničesar
To pomeni, da števec podpira način D IEC62056-21. V tem načinu števec samodejno prenaša podatke vsakih nekaj sekund brez potrebe po specifični zahtevi. Prepričajte se, da je serijski port konfiguriran tako, da se ujema s formatom prenosa števca, običajno nastavljen na 9600 7E1 ali 2400 7E1 v večini primerov.
yaml
# 9600bps for mode D
uart:
rx_pin: GPIO21
tx_pin: GPIO22
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
Poleg tega je treba način D ročno aktivirati z nastavitvijo mode_d=True
v konfiguraciji platforme.
yaml
# Omogoči način D
iec62056:
mode_d: True
Napake kontrolne vsote
log
[E][iec62056.component:504]: Preverjanje BCC ni uspelo. Pričakovano 0x6b, prejeto 0x14
Ta napaka nakazuje težave pri prenosu.
Običajno je hitrost prenosa prevelika. Znižanje največje hitrosti prenosa bi moralo pomagati.
yaml
iec62056:
baud_rate_max : 4800
Prejeta identifikacija števca, vendar brez prenosa
log
[D][iec62056.component:174]: Identifikacija števca: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Števec nakazuje način E, ki ni podprt. Poskus preklopa na način C. To bo delovalo za števce, ki podpirajo oba načina E in C.
[E][iec62056.component:268]: Ni prenosa s števca.
Identifikacijska niz števca je uspešno prejet, vendar ni prenosa podatkov. Poleg tega dnevnik prikazuje sporočilo, da "števec nakazuje način E."
Števec deluje izključno v načinu E, ki ga PiggyMeter ne podpira. Posledično programska oprema poskuša preklopiti števec na način C, vendar ta poskus ne uspe.
Če števec podpira oba načina E in C, bi sistem moral delovati pravilno.