Skip to content

PiggyMeter

PiggyMeter připojený k elektroměru

Tento článek vám ukáže, jak postavit zařízení pro dálkové čtení dat z elektroměru (nebo jakéhokoli zařízení s kompatibilním rozhraním).

Používá běžně dostupné komponenty, open source software a je kompatibilní s populárním softwarem pro domácí automatizaci, Home Assistant.

INFO

Sada pro sestavení funkčního zařízení je k dispozici k zakoupení na Tindie: PiggyMeter KIT.

Vlastnosti

  • Podporuje protokoly založené na IEC62056-21
  • Podporuje pasivní SML protokol pomocí nativní komponenty ESPHome
  • Více měřičů: energie, voda, teplo a další
  • Používá open source ESPHome
  • Bezdrátová komunikace přes Wi-Fi
  • Integrace s Home Assistant
  • Volitelný webový server
  • Levný hardware ESP32-C3 nebo ESP32-S2
  • Návrh pouzdra k dispozici pro 3D tisk

Podporuje měřiče kompatibilní se standardem IEC62056-21, které pracují v režimech A, B, C, D (ale ne E). Podrobnosti naleznete v komponentě IEC 62056-21.

Všimněte si, že existuje mnoho variant protokolu. I když měřič může používat stejný optický interface, formát datového rámce může být odlišný.

Kromě toho podporuje měřiče, které používají protokol SML (Smart Message Language) pomocí ESPHome SML komponenty.

WARNING

Standardy DLMS, M-Bus a ANSI C12.18/19 nejsou softwarem podporovány.

Jak zjistit, zda je měřič podporován?

Termín IEC 62056-21 se používá pro více protokolů (se stejnou hardwarovou vrstvou, ale různým kódováním dat). Zařízení podporuje měřiče, které poskytují ASCII-kódovaná data, něco jako toto:

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)

Měřič musí být kompatibilní s Mezinárodní normou IEC 62056-21:2002.

Charakteristický kovový kroužek a optické rozhraní uprostřed.

Pro SML protokol hledejte logo SML na měřiči nebo zkontrolujte manuál. Komponenta ESPHome podporuje pouze pasivní režim, neodesílá žádné požadavky na měřič. V tomto režimu měřič odesílá data každých několik sekund.

Měřiče, které podle hlášení fungují s PiggyMeterem

Seznam je vytvořen na základě hlášení uživatelů. Není zaručeno, že je přesný.

INFO

Neváhejte poslat e-mail na info@aquaticus.info, pokud znáte měřič, který funguje s PiggyMeterem, ale není uveden výše.

Alternativní software

Hardware PiggyMeter může pracovat s mnoha různými měřiči, které využívají optické rozhraní. Nicméně software aktuálně podporuje pouze jeden standard, což prakticky omezuje rozsah podporovaných měřičů.

Můžete zkusit použít alternativní software, který může přidat podporu pro různé měřiče. Je důležité poznamenat, že není zaručeno, že bude bezproblémově fungovat s PiggyMeterem. Pro podporu se prosím obraťte na původního autora.

Seznam materiálů

SoučástkaPopis
CPUWemos C3 nebo S2 Mini https://www.wemos.cc/en/latest/
Optické rozhraníPiggyMeter PCB https://www.tindie.com/products/32082/
2×pin header 1×42.54mm rastr; plastová část musí mít výšku 8.5 mm
Kroužkový magnet⌀30/⌀15×2mm
Pouzdro3D tištěné pouzdro https://github.com/aquaticus/piggymeter_case
Podložka3D tištěná podložka https://github.com/aquaticus/piggymeter_case
Víko3D tištěné zadní víko https://github.com/aquaticus/piggymeter_case

CPU deska

CPU

Potřebujete desku s nainstalovaným čipem Espressif a kompatibilním pinoutem Wemos/Lolin. Klíčovým faktorem je umístění 4 pinů: GND, VCC, TX a RX.

Velikost PCB je také kritická. 3D tištěné pouzdro odpovídá pouze deskám (nebo jejich klonům) uvedeným níže:

  • Lolin/Wemos S2 mini
  • Lolin/Wemos C3 mini

Teoreticky můžete použít jakoukoli jinou CPU desku s kompatibilním pinoutem, zejména ESP32 a ESP8266 D1 mini. Ale v tom případě si musíte navrhnout vlastní pouzdro a trochu upravit konfigurační soubory (typ desky a piny sériového portu).

Optické rozhraní

Optické rozhraní

Měřič používá optické rozhraní kompatibilní se standardem IEC62056-21, komunikující s sondou prostřednictvím infračervené diody a fototranzistoru.

Rozhraní je připojeno k jednomu ze sériových portů na CPU desce. Samozřejmě potřebujete také VCC a GND.

Optické rozhraní a CPU
deska

Připájejte 2 pinové hlavičky. Musíte použít pinovou hlavičku 8,5 mm výšky. Design pouzdra zohledňuje tuto výšku, což zajišťuje správné usazení. Pokud výška přesahuje tuto hodnotu, může být obtížné zavřít víko.

INFO

Můžete si koupit sestavené rozhraní na Tindie. Buy on Tindie

Pouzdro

Stáhněte si soubory pro 3D tiskárnu z https://github.com/aquaticus/piggymeter_case. Použijte verzi V5 pro nejnovější design.

Pouzdro

Pouzdro se skládá ze tří komponent:

  • hlavní pouzdro,
  • podložka,
  • a víko.

Pro každou komponentu jsou k dispozici tři různé STL soubory, nebo alternativně jeden 3fm soubor obsahující všechny tři prvky.

Pouzdro splňuje požadavky standardu IEC62056-21 pro optickou sondu>.

INFO

Pouzdro má malý západkový mechanismus. K jeho zavření nebo otevření je třeba použít určitou sílu.

Doporučené nastavení 3D tisku

  • Materiál: PLA
  • Vrstva: 0,2 mm
  • Bez podpory

3d print

Montáž

Assembly

Uspořádejte komponenty v pouzdře v tomto pořadí:

  1. Magnet
  2. Podložka
  3. Optické rozhraní
  4. CPU deska
  5. Víko

INFO

Podívejte se na montáž na Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm

Programování pro měřiče IEC62056-21

Začněte instalací ESPHome.

Na základě vaší CPU desky vyberte vhodný konfigurační soubor. Dále proveďte ruční úpravy některých parametrů, jako je heslo WiFi.

Získání konfiguračních souborů

Naklonujte git repozitář s konfiguračními soubory:

bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml

Vytvoření souboru secrets.yaml

Vytvořte soubor secrets.yaml v adresáři, kde se nacházejí konfigurační soubory. Tento soubor bude obsahovat název WiFi sítě a její odpovídající 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

Úprava konfigurace projektu

Konfigurace je přednastavena se standardními datovými body pro elektroměr.

Neváhejte upravit seznam, zejména pokud se váš měřič liší od typu elektroměru. Další informace naleznete v komponentě IEC 62056-21.

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

Sestavení a nahrání firmwaru

bash
esphome run piggymeter-s2-iec62056-21.yaml

Příkaz výše nahraje firmware a zobrazí výstup monitoru. Ve výchozím nastavení rozhraní čte data z měřiče každou 1 minutu.

TIP

Pro desku ESP32-S2 musíte stisknout tlačítko BOOT a poté tlačítko RESET na PCB, abyste vstoupili do programovacího režimu. Navíc můžete po nahrání vidět chybovou zprávu -- jednoduše ji 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)

Programování pro SML měřiče

První kroky jsou identické jako pro měřiče IEC62056-21.

Po naklonování repozitáře a vytvoření souboru secrets.yaml použijte konfigurační soubory pro SML měřiče.

bash
esphome run piggymeter-s2-sml.yaml

S největší pravděpodobností budete muset upravit konfigurační soubor tak, aby odpovídal datovým bodům přenášeným měřičem. Také stojí za to ověřit přenosovou rychlost a datové bity sériového portu.

Home Assistant

Zařízení by mělo být automaticky detekováno Home Assistantem. Pokud ne, můžete jej přidat ručně kliknutím na Přidat integraci a výběrem integrace ESPHome.

PiggyMeter vystavuje tři skupiny položek:

Spouštěč odečtu

Tento spouštěč nutí PiggyMeter číst data z měřiče mimo plán.

Stav připojení měřiče

Stav $1 označuje, že rozhraní vyměňuje data s měřičem.

Stav připojení

Senzory

Toto je seznam senzorů definovaných v konfiguračním souboru.

Senzory

Samostatný režim

PiggyMeter může fungovat nezávisle na Home Assistantu a nabízí možnost aktivovat webový server. Tento server zobrazuje odečty dat přímo ve webovém prohlížeči a nabízí jednoduché REST API.

Pro aktivaci webového serveru zahrňte následující řádky do konfiguračního souboru:

yaml
web_server:
  port: 80

Více informací o webovém serveru naleznete v dokumentaci ESPHome.

Úpravy

Ve výchozím nastavení zařízení načítá data každou minutu a vnitřní LED je během přenosu osvětlena.

V konfiguračním souboru yaml je definován pouze omezený počet OBIS kódů. Důrazně se doporučuje upravit seznam senzorů tak, aby odpovídal měřiči.

Ačkoli jsou OBIS kódy standardizovány, měřiče mohou přenášet různé počty kódů. Pro zjištění podporovaných kódů pro váš měřič povolte DEBUG logování pro komponentu IEC62056-21 a analyzujte výstup logu.

Diagnostika a problémy IEC62056-21

Tato sekce je pouze pro měřiče IEC62056-21 (ne SML).

Po nahrání firmwaru se zařízení pokusí číst data z měřiče přibližně po 15 sekundách. Pokud přenos selže, pokusí se to dvakrát opakovat každých 15 sekund.

Můžete upravit tyto parametry konfigurací příslušných tokenů. Podívejte se na dokumentaci IEC62056-21 komponenty pro více podrobností.

Je vhodné změnit výchozí úroveň protokolování z DEBUG na INFO, jakmile bylo potvrzeno, že zařízení funguje správně.

Níže jsou uvedeny běžné problémy a jejich příslušná řešení.

TIP

Ujistěte se, že je sonda pevně připevněna k měřiči, přičemž šipka na sondě směřuje nahoru.

Žádný přenos z měřiče

log
[E][iec62056.component:268]: No transmission from meter.

To může naznačovat:

  • Nejčastěji není rozhraní připojeno k měřiči.
  • Rozhraní není správně zarovnáno s optickým rozhraním měřiče.
  • Měřič není kompatibilní.

Ujistěte se, že je optické rozhraní umístěno rovnoběžně s předním povrchem krytu. Pokud zařízení funguje, když je připojeno k měřiči bez krytu, ale nefunguje po vložení do krytu, může to být problém. V takovém případě můžete také zvážit zvětšení dvou otvorů v krytu.

Ne všechny senzory přijaly data

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čovat dva problémy:

  • Měřič nepodporuje OBIS kód, který jste nakonfigurovali v souboru yaml. Jednoduše odstraňte senzor s konkrétním OBIS kódem z konfigurace.
  • Může se jednat o překlep nebo nesprávnou definici OBIS kódu pro senzor v konfiguračním souboru. Důkladně zkontrolujte kód.

Měřič automaticky přenáší data, ale zařízení nic nepřijímá

To naznačuje, že měřič podporuje režim D IEC62056-21. V tomto režimu měřič autonomně přenáší data každých několik sekund bez nutnosti specifického požadavku. Ujistěte se, že je sériový port nakonfigurován tak, aby odpovídal formátu přenosu měřiče, obvykle nastaven na 9600 7E1 nebo 2400 7E1 ve většině případů.

yaml
# 9600bps for mode D
uart:
    rx_pin: GPIO21
    tx_pin: GPIO22
    baud_rate: 9600
    data_bits: 7
    parity: EVEN
    stop_bits: 1

Kromě toho musí být režim D ručně aktivován nastavením mode_d=True v konfiguraci platformy.

yaml
# Aktivovat režim D
iec62056:
  mode_d: True

Chyby kontrolního součtu

log
[E][iec62056.component:504]: Ověření BCC selhalo. Očekáváno 0x6b, získáno 0x14

Tato chyba naznačuje problémy s přenosem.

Obvykle je přenosová rychlost příliš vysoká. Snížení maximální rychlosti přenosu by mělo pomoci.

yaml
iec62056:
  baud_rate_max : 4800

Přijato identifikace měřiče, ale žádný přenos

log
[D][iec62056.component:174]: Identifikace měřiče: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Měřič indikuje režim E, který není podporován. Pokus o režim C. To bude fungovat pro měřiče podporující oba režimy E a C.
[E][iec62056.component:268]: Žádný přenos z měřiče.

Identifikační řetězec měřiče byl úspěšně přijat, ale nedochází k žádnému přenosu dat. Navíc se v protokolu zobrazuje zpráva, že "Měřič indikuje režim E."

Měřič pracuje výhradně v režimu E, který PiggyMeter nepodporuje. Následně se software pokouší přepnout měřič do režimu C, ale tento pokus selže.

Pokud měřič podporuje oba režimy E a C, systém by měl fungovat správně.