Skip to content

PiggyMeter

PiggyMeter pripojený k elektrickému
meradlu

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.

Charakteristický kovový krúžok a optické rozhranie v
strede.

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ý.

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.

Zoznam materiálov

ČasťPopis
CPUWemos C3 alebo S2 Mini https://www.wemos.cc/en/latest/
Optické rozhraniePiggyMeter PCB https://www.tindie.com/products/32082/
2×pin header 1×42.54mm raster; plastová časť musí mať výšku 8.5 mm
Krúžkový magnet⌀30/⌀15×2mm
Kryt3D tlačený kryt https://github.com/aquaticus/piggymeter_case
Podložka3D tlačená podložka https://github.com/aquaticus/piggymeter_case
Veko3D tlačené zadné veko https://github.com/aquaticus/piggymeter_case

Doska CPU

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

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.

Optické rozhranie a doska
CPU

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.

INFO

Môžete si kúpiť zostavené rozhranie na Tindie. Buy on Tindie

Puzdro

Stiahnite si súbory pre 3D tlačiareň z https://github.com/aquaticus/piggymeter_case. Použite verziu V5 pre najnovší dizajn.

Puzdro

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

3d tlač

Montáž

Montáž

Usporiadajte komponenty v puzdre v tomto poradí:

  1. Magnet
  2. Podložka
  3. Optické rozhranie
  4. CPU doska
  5. 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.

Stav pripojenia

Senzory

Toto je zoznam senzorov definovaných v konfiguračnom súbore.

Senzory

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.