PiggyMeter
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.
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ý.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D přes SML komponentu
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
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.
- DLMS/COSEM Esphome modul https://github.com/viric/esphome-ziv
Seznam materiálů
Součástka | Popis |
---|---|
CPU | Wemos C3 nebo S2 Mini https://www.wemos.cc/en/latest/ |
Optické rozhraní | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2.54mm rastr; plastová část musí mít výšku 8.5 mm |
Kroužkový magnet | ⌀30/⌀15×2mm |
Pouzdro | 3D tištěné pouzdro https://github.com/aquaticus/piggymeter_case |
Podložka | 3D tištěná podložka https://github.com/aquaticus/piggymeter_case |
Víko | 3D tištěné zadní víko https://github.com/aquaticus/piggymeter_case |
CPU deska
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í
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.
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.
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 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
Montáž
Uspořádejte komponenty v pouzdře v tomto pořadí:
- Magnet
- Podložka
- Optické rozhraní
- CPU deska
- 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.
Senzory
Toto je seznam senzorů definovaných v konfiguračním souboru.
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ě.