PiggyMeter
Tento článok vám ukáže, ako postaviť zariadenie na diaľkové čítanie údajov z elektrického meradla (alebo akéhokoľvek zariadenia s kompatibilným rozhraním).
Používa bežne dostupné komponenty, open source softvér a je kompatibilný s populárnym softvérom pre domácu automatizáciu, Home Assistant.
INFO
Súprava na zostavenie funkčného zariadenia je dostupná na zakúpenie na Tindie: PiggyMeter KIT.
Funkcie
- Podporuje protokoly založené na IEC62056-21
- Podporuje pasívny SML protokol pomocou natívnej komponenty ESPHome
- Viacero meradiel: energia, voda, teplo a ďalšie
- Používa open source ESPHome
- Bezdrôtová komunikácia cez Wi-Fi
- Integruje sa s Home Assistant
- Voliteľný webový server
- Lacný hardvér ESP32-C3 alebo ESP32-S2
- Dizajn puzdra dostupný na 3D tlač
Podporuje meradlá kompatibilné so štandardom IEC62056-21, ktoré pracujú v režimoch A, B, C, D (ale nie E). Podrobnosti nájdete v komponente IEC 62056-21.
Upozorňujeme, že existuje mnoho variácií protokolu. Aj keď meradlo môže používať rovnaké optické rozhranie, formát dátového rámca môže byť odlišný.
Okrem toho podporuje meradlá, ktoré používajú protokol SML (Smart Message Language) pomocou ESPHome SML komponenty.
WARNING
Štandardy DLMS, M-Bus a ANSI C12.18/19 nie sú softvérom podporované.
Ako skontrolovať, či je meradlo podporované?
Termín IEC 62056-21 sa používa pre viacero protokolov (s rovnakou hardvérovou vrstvou, ale rôznym kódovaním dát). Zariadenie podporuje meradlá, ktoré poskytujú ASCII-kódované dáta, niečo takéto:
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)
Meradlo musí byť kompatibilné s Medzinárodným štandardom IEC 62056-21:2002.
Pre protokol SML hľadajte logo SML na meradle alebo skontrolujte manuál. Komponent ESPHome podporuje iba pasívny režim, neposiela žiadne požiadavky na meradlo. V tomto režime meradlo posiela údaje každých niekoľko sekúnd.
Merače hlásené ako kompatibilné s PiggyMeter
Zoznam je vytvorený na základe hlásení používateľov. Nie je zaručené, že je presný.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D cez SML komponent
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
INFO
Neváhajte poslať e-mail na info@aquaticus.info, ak poznáte merač, ktorý funguje s PiggyMeter, ale nie je uvedený vyššie.
Alternatívny softvér
Hardvér PiggyMeter môže pracovať s mnohými rôznymi meračmi, ktoré využívajú optické rozhranie. Avšak, softvér momentálne podporuje len jeden štandard, čo prakticky obmedzuje rozsah podporovaných meračov.
Môžete skúsiť použiť alternatívny softvér, ktorý môže pridať podporu pre rôzne merače. Je dôležité poznamenať, že nie je zaručené, že bude fungovať bezproblémovo s PiggyMeter. Pre podporu sa prosím obráťte na pôvodného autora.
- DLMS/COSEM Esphome modul https://github.com/viric/esphome-ziv
Zoznam materiálov
Časť | Popis |
---|---|
CPU | Wemos C3 alebo S2 Mini https://www.wemos.cc/en/latest/ |
Optické rozhranie | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2.54mm raster; plastová časť musí mať výšku 8.5 mm |
Krúžkový magnet | ⌀30/⌀15×2mm |
Kryt | 3D tlačený kryt https://github.com/aquaticus/piggymeter_case |
Podložka | 3D tlačená podložka https://github.com/aquaticus/piggymeter_case |
Veko | 3D tlačené zadné veko https://github.com/aquaticus/piggymeter_case |
Doska CPU
Potrebujete dosku s nainštalovaným čipom Espressif a kompatibilným pinoutom Wemos/Lolin. Kľúčovým faktorom je umiestnenie 4 pinov: GND
, VCC
, TX
a RX
.
Veľkosť PCB je tiež kritická. 3D tlačené puzdro zodpovedá iba doskám (alebo ich klonom) uvedeným nižšie:
- Lolin/Wemos S2 mini
- Lolin/Wemos C3 mini
Teoreticky môžete použiť akúkoľvek inú dosku CPU s kompatibilným pinoutom, napríklad ESP32 a ESP8266 D1 mini. Ale v takom prípade musíte navrhnúť vlastné puzdro a trochu upraviť konfiguračné súbory (typ dosky a piny sériového portu).
Optické rozhranie
Merač používa optické rozhranie kompatibilné so štandardom IEC62056-21, komunikujúce s sondou cez infračervenú diódu a fototranzistor.
Rozhranie je pripojené k jednému zo sériových portov na doske CPU. Samozrejme, potrebujete aj VCC a GND.
Pripájajte 2 pinové hlavičky. Musíte použiť pinovú hlavičku 8,5 mm výšky. Dizajn puzdra zohľadňuje túto výšku, čím zabezpečuje správne prispôsobenie. Ak výška prekročí túto dimenziu, zatváranie veka môže predstavovať výzvy.
Puzdro
Stiahnite si súbory pre 3D tlačiareň z https://github.com/aquaticus/piggymeter_case. Použite verziu V5 pre najnovší dizajn.
Puzdro pozostáva z troch komponentov:
- hlavné puzdro,
- podložka,
- a veko.
Pre každý komponent sú k dispozícii tri samostatné STL súbory, alebo alternatívne jeden 3fm súbor obsahujúci všetky tri prvky.
Puzdro spĺňa požiadavky štandardu IEC62056-21 pre optickú sondu>.
INFO
Puzdro má malý západku. Na jeho zatvorenie alebo otvorenie je potrebné použiť trochu sily.
Odporúčané nastavenia 3D tlače
- Materiál: PLA
- Vrstva: 0,2 mm
- Bez podpory
Montáž
Usporiadajte komponenty v puzdre v tomto poradí:
- Magnet
- Podložka
- Optické rozhranie
- CPU doska
- Kryt
INFO
Pozrite si montáž na Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm
Programovanie pre IEC62056-21 merače
Začnite inštaláciou ESPHome.
Na základe vašej CPU dosky vyberte vhodný konfiguračný súbor. Dodatočne manuálne upravte niektoré parametre, ako napríklad heslo WiFi.
Získajte konfiguračné súbory
Klonujte git repozitár s konfiguračnými súbormi:
bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml
Vytvorte súbor secrets.yaml
Vytvorte súbor secrets.yaml
v adresári, kde sa nachádzajú konfiguračné súbory. Tento súbor bude obsahovať názov WiFi siete a príslušné heslo.
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
Upraviť konfiguráciu projektu
Konfigurácia je prednastavená so štandardnými dátovými bodmi pre elektrický merač.
Neváhajte upraviť zoznam, najmä ak sa váš merač líši od typu elektrického merača. Ďalšie informácie nájdete v IEC 62056-21 komponente.
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
Vytvorte a nahrajte firmware
bash
esphome run piggymeter-s2-iec62056-21.yaml
Vyššie uvedený príkaz nahrá firmware a zobrazí výstup monitora. V predvolenom nastavení rozhranie číta údaje z merača každú 1 minútu.
TIP
Pre dosku ESP32-S2 musíte stlačiť tlačidlo BOOT a potom tlačidlo RESET na PCB, aby ste vstúpili do programovacieho režimu. Okrem toho môžete po nahraní vidieť chybovú správu -- jednoducho ju ignorujte.
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)
Programovanie pre SML merače
Prvé kroky sú identické s krokmi pre IEC62056-21 merače.
Po klonovaní repozitára a vytvorení súboru secrets.yaml
použite konfiguračné súbory pre SML merače.
bash
esphome run piggymeter-s2-sml.yaml
S najväčšou pravdepodobnosťou budete musieť upraviť konfiguračný súbor tak, aby zodpovedal dátovým bodom prenášaným meračom. Tiež stojí za to overiť prenosovú rýchlosť a dátové bity sériového portu.
Home Assistant
Zariadenie by malo byť automaticky detekované Home Assistantom. Ak nie, môžete ho pridať manuálne kliknutím na Pridať integráciu a výberom integrácie ESPHome.
PiggyMeter vystavuje tri skupiny položiek:
Spúšťač odčítania
Tento spúšťač núti PiggyMeter čítať dáta z merača mimo plán.
Stav pripojenia merača
Stav $1 indikuje, že rozhranie vymieňa dáta s meračom.
Senzory
Toto je zoznam senzorov definovaných v konfiguračnom súbore.
Samostatný režim
PiggyMeter môže fungovať nezávisle od Home Assistant, ponúkajúc možnosť aktivovať webový server. Tento server zobrazuje odčítania dát priamo v webovom prehliadači a ponúka jednoduché REST API.
Na aktiváciu webového servera zahrňte nasledujúce riadky do konfiguračného súboru:
yaml
web_server:
port: 80
Viac informácií o webovom serveri nájdete v dokumentácii ESPHome.
Úpravy
Predvolene zariadenie načítava dáta každú minútu a vnútorná LED je osvetlená počas prenosu.
V konfiguračnom yaml súbore je definovaný len obmedzený počet OBIS kódov. Dôrazne sa odporúča upraviť zoznam senzorov tak, aby zodpovedal meraču.
Hoci sú OBIS kódy štandardizované, merače môžu prenášať rôzny počet kódov. Na zistenie podporovaných kódov pre váš merač povolte DEBUG
logovanie pre komponent IEC62056-21 a analyzujte výstup logu.
Diagnostika a problémy IEC62056-21
Táto sekcia je určená len pre merače IEC62056-21 (nie SML).
Po nahratí firmvéru sa zariadenie pokúsi čítať dáta z merača približne po 15 sekundách. Ak prenos zlyhá, pokúsi sa o to dvakrát každých 15 sekúnd.
Tieto parametre môžete upraviť nakonfigurovaním príslušných tokenov. Podrobnosti nájdete v dokumentácii IEC62056-21 komponentu.
Odporúča sa zmeniť predvolenú úroveň logovania z DEBUG
na INFO
, keď bolo potvrdené, že zariadenie funguje správne.
Nižšie sú uvedené bežné problémy a ich príslušné riešenia.
TIP
Uistite sa, že sonda je pevne pripevnená k meraču, pričom šípka na sonde smeruje nahor.
Žiadny prenos z merača
log
[E][iec62056.component:268]: No transmission from meter.
To môže naznačovať:
- Najčastejšie nie je rozhranie pripojené k meraču.
- Rozhranie nie je správne zarovnané s optickým rozhraním merača.
- Merač nie je kompatibilný.
Uistite sa, že optické rozhranie je umiestnené paralelne s predným povrchom krytu. Ak zariadenie funguje, keď je pripojené k meraču bez krytu, ale nefunguje po vložení do krytu, môže to byť problém. V takom prípade môžete zvážiť zväčšenie dvoch otvorov v kryte.
Nie všetky senzory prijali údaje
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 môže naznačovať dva problémy:
- Merač nepodporuje OBIS kód, ktorý ste nakonfigurovali v súbore yaml. Jednoducho odstráňte senzor so špecifickým OBIS kódom z konfigurácie.
- Môže byť preklep alebo nesprávna definícia OBIS kódu pre senzor v konfiguračnom súbore. Dôkladne skontrolujte kód.
Merač automaticky prenáša údaje, ale zariadenie nič neprijíma
To naznačuje, že merač podporuje režim D IEC62056-21. V tomto režime merač autonómne prenáša údaje každých niekoľko sekúnd bez potreby špecifickej požiadavky. Uistite sa, že sériový port je nakonfigurovaný tak, aby sa zhodoval s formátom prenosu merača, ktorý je v typických prípadoch nastavený na 9600 7E1 alebo 2400 7E1.
yaml
# 9600bps for mode D
uart:
rx_pin: GPIO21
tx_pin: GPIO22
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
Okrem toho musí byť režim D manuálne aktivovaný nastavením mode_d=True
v konfigurácii platformy.
yaml
# Povoliť režim D
iec62056:
mode_d: True
Chyby kontrolného súčtu
log
[E][iec62056.component:504]: Overenie BCC zlyhalo. Očakávané 0x6b, získané 0x14
Táto chyba naznačuje problémy s prenosom.
Zvyčajne je prenosová rýchlosť príliš vysoká. Zníženie maximálnej rýchlosti prenosu by malo pomôcť.
yaml
iec62056:
baud_rate_max : 4800
Prijatá identifikácia merača, ale žiadny prenos
log
[D][iec62056.component:174]: Identifikácia merača: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Merač indikuje režim E, ktorý nie je podporovaný. Pokus o režim C. Toto bude fungovať pre merače podporujúce oba režimy E a C.
[E][iec62056.component:268]: Žiadny prenos z merača.
Reťazec identifikácie merača bol úspešne prijatý, ale nedochádza k prenosu dát. Navyše, v logu sa zobrazuje správa, že "Merač indikuje režim E."
Merač pracuje výlučne v režime E, ktorý PiggyMeter nepodporuje. Preto sa softvér pokúša prepnúť merač do režimu C, ale tento pokus zlyhá.
Ak merač podporuje oba režimy E a C, systém by mal fungovať správne.