Skip to content

PiggyMeter

PiggyMeter pričvršćen na električni
brojilo

Ovaj članak pokazuje kako izraditi uređaj za daljinsko očitavanje podataka s električnog brojila (ili bilo kojeg uređaja s kompatibilnim sučeljem).

Koristi široko dostupne komponente, softver otvorenog koda i kompatibilan je s popularnim softverom za kućnu automatizaciju, Home Assistant.

INFO

Komplet za sastavljanje funkcionalnog uređaja dostupan je za kupnju na Tindie: PiggyMeter KIT.

Značajke

  • Podržava protokole temeljene na IEC62056-21
  • Podržava pasivni SML protokol koristeći ESPHome izvorni komponent
  • Više brojila: energija, voda, toplinska energija i više
  • Koristi open source ESPHome
  • Bežična komunikacija putem Wi-Fi
  • Integrira se s Home Assistant
  • Opcionalni web poslužitelj
  • Jeftin hardver ESP32-C3 ili ESP32-S2
  • Dizajn kućišta dostupan za 3D ispis

Podržava brojila kompatibilna s IEC62056-21 standardom koja rade u modovima A, B, C, D (ali ne i E). Za detalje pogledajte IEC 62056-21 komponentu.

Napominjemo da postoji mnogo varijacija protokola. Iako brojilo može koristiti isto optičko sučelje, format okvira podataka može biti različit.

Osim toga, podržava brojila koja koriste SML (Smart Message Language) protokol koristeći ESPHome SML komponentu.

WARNING

DLMS, M-Bus i ANSI C12.18/19 standardi nisu podržani od strane softvera.

Kako provjeriti je li brojilo podržano?

Pojam IEC 62056-21 koristi se za više protokola (s istim hardverskim slojem, ali različitim kodiranjem podataka). Uređaj podržava brojila koja pružaju ASCII-kodirane podatke, nešto poput ovoga:

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)

Brojilo mora biti kompatibilno s Međunarodnim standardom IEC 62056-21:2002.

Karakteristični metalni prsten i optičko sučelje u
sredini.

Za SML protokol, potražite SML logo na brojilu ili provjerite priručnik. ESPHome komponenta podržava samo pasivni način rada, ne šalje nikakve zahtjeve brojilu. U tom načinu rada, brojilo šalje podatke svakih nekoliko sekundi.

Brojila za koja je prijavljeno da rade s PiggyMeterom

Popis je sastavljen na temelju korisničkih prijava. Nema jamstva da je točan.

INFO

Slobodno pošaljite email na info@aquaticus.info ako znate za brojilo koje radi s PiggyMeterom, a nije navedeno gore.

Alternativni softver

PiggyMeter hardver može raditi s mnogim različitim brojilima koja koriste optičko sučelje. Međutim, softver trenutno podržava samo jedan standard, praktično ograničavajući raspon podržanih brojila.

Možete pokušati koristiti alternativni softver koji može dodati podršku za različita brojila. Važno je napomenuti da nema jamstva da će funkcionirati besprijekorno s PiggyMeterom. Za podršku, obratite se izvornom autoru.

Popis materijala

DioOpis
CPUWemos C3 ili S2 Mini https://www.wemos.cc/en/latest/
Optičko sučeljePiggyMeter PCB https://www.tindie.com/products/32082/
2×pin header 1×42.54mm raster; plastični dio mora biti visine 8.5 mm
Prstenasti magnet⌀30/⌀15×2mm
Kućište3D printano kućište https://github.com/aquaticus/piggymeter_case
Podloška3D printana podloška https://github.com/aquaticus/piggymeter_case
Poklopac3D printani stražnji poklopac https://github.com/aquaticus/piggymeter_case

CPU ploča

CPU

Potrebna vam je ploča s ugrađenim Espressif čipom i kompatibilnim Wemos/Lolin pinoutom. Ključni faktor je položaj 4 pina: GND, VCC, TX i RX.

Veličina PCB-a također je kritična. 3D printano kućište odgovara samo pločama (ili njihovim klonovima) navedenim dolje:

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

U teoriji, možete koristiti bilo koju drugu CPU ploču s kompatibilnim pinoutom, posebno ESP32 i ESP8266 D1 mini. Ali u tom slučaju morate dizajnirati svoje vlastito kućište i malo izmijeniti konfiguracijske datoteke (tip ploče i serijski port pinove).

Optičko sučelje

Optičko sučelje

Brojilo koristi optičko sučelje kompatibilno s IEC62056-21 standardom, komunicirajući s probom putem infracrvene diode i fototranzistora.

Sučelje je povezano s jednim od serijskih portova na CPU ploči. Naravno, potrebni su vam i VCC i GND.

Optičko sučelje i CPU
ploča

Zalemite 2 pin headera. Morate koristiti pin header visine 8,5 mm. Dizajn kućišta prilagođen je ovoj visini, osiguravajući pravilno pristajanje. Ako visina premašuje ovu dimenziju, zatvaranje poklopca može predstavljati izazov.

INFO

Možete kupiti sastavljeno sučelje na Tindie. Buy on Tindie

Kućište

Preuzmite datoteke za 3D printer s https://github.com/aquaticus/piggymeter_case. Koristite V5 verziju za najnoviji dizajn.

Kućište

Kućište se sastoji od tri komponente:

  • glavnog kućišta,
  • podloške,
  • i poklopca.

Dostupne su tri različite STL datoteke za svaku komponentu, ili alternativno, jedna 3fm datoteka koja uključuje sve tri elementa.

Kućište zadovoljava zahtjeve IEC62056-21 standarda Optičke sonde>.

INFO

Kućište ima malu kopču. Za zatvaranje ili otvaranje potrebno je upotrijebiti određenu silu.

Preporučene postavke za 3D ispis

  • Materijal: PLA
  • Sloj: 0,2 mm
  • Bez potpore

3d print

Sastavljanje

Assembly

Poredajte komponente unutar kućišta ovim redoslijedom:

  1. Magnet
  2. Podloška
  3. Optičko sučelje
  4. CPU ploča
  5. Poklopac

INFO

Pogledajte sastavljanje na Youtubeu https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm

Programiranje za IEC62056-21 brojila

Započnite instalacijom ESPHome.

Na temelju vaše CPU ploče, odaberite odgovarajuću konfiguracijsku datoteku. Dodatno, ručno prilagodite određene parametre, kao što je WiFi lozinka.

Preuzmite konfiguracijske datoteke

Klonirajte git repozitorij s konfiguracijskim datotekama:

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

Kreirajte datoteku secrets.yaml

Kreirajte datoteku secrets.yaml unutar direktorija gdje se nalaze konfiguracijske datoteke. Ova datoteka će sadržavati naziv WiFi mreže i odgovarajuću lozinku.

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

Izmijenite konfiguraciju projekta

Konfiguracija dolazi unaprijed postavljena sa standardnim podacima za električno brojilo.

Slobodno prilagodite popis, posebno ako se vaše brojilo razlikuje od tipa električnog brojila. Pogledajte IEC 62056-21 komponentu za dodatne informacije.

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

Izgradite i flashajte firmware

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

Gornja naredba flasha firmware i prikazuje izlaz monitora. Po zadanim postavkama, sučelje čita podatke s brojila svakih 1 minutu.

TIP

Za ESP32-S2 ploču morate pritisnuti BOOT gumb, a zatim RESET gumb na PCB-u da biste ušli u način programiranja. Osim toga, možete vidjeti poruku o pogrešci nakon flashanja -- jednostavno je 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 brojila

Prvi koraci su identični onima za IEC62056-21 brojila.

Nakon kloniranja repozitorija i kreiranja datoteke secrets.yaml, koristite konfiguracijske datoteke za SML brojila.

bash
esphome run piggymeter-s2-sml.yaml

Najvjerojatnije ćete trebati prilagoditi konfiguracijsku datoteku kako bi odgovarala podatkovnim točkama koje šalje mjerač. Također je vrijedno provjeriti brzinu prijenosa i podatkovne bitove serijskog porta.

Home Assistant

Uređaj bi trebao biti automatski prepoznat od strane Home Assistanta. Ako nije, možete ga ručno dodati klikom na Dodaj integraciju i odabirom ESPHome integracije.

PiggyMeter izlaže tri skupine stavki:

Okidač očitanja

Ovaj okidač prisiljava PiggyMeter da pročita podatke s mjerača izvan rasporeda.

Status veze mjerača

Status Povezano označava da sučelje razmjenjuje podatke s mjeračem.

Status veze

Senzori

Ovo je popis senzora definiranih u konfiguracijskoj datoteci.

Senzori

Samostalni način rada

PiggyMeter može raditi neovisno o Home Assistantu, nudeći mogućnost aktiviranja web poslužitelja. Ovaj poslužitelj prikazuje očitanja podataka izravno u web pregledniku i nudi jednostavan REST API.

Da biste aktivirali web poslužitelj, uključite sljedeće linije u konfiguracijsku datoteku:

yaml
web_server:
  port: 80

Više informacija o web poslužitelju možete pronaći u ESPHome dokumentaciji.

Modifikacije

Po defaultu, uređaj dohvaća podatke svake minute, a unutarnja LED dioda svijetli tijekom prijenosa.

Samo ograničen broj OBIS kodova je definiran u konfiguracijskoj yaml datoteci. Preporučuje se izmijeniti popis senzora kako bi odgovarao mjeraču.

Iako su OBIS kodovi standardizirani, mjerači mogu prenositi različit broj kodova. Da biste utvrdili podržane kodove za vaš mjerač, omogućite DEBUG zapisivanje za IEC62056-21 komponentu i analizirajte izlaz zapisnika.

Dijagnostika i problemi IEC62056-21

Ovaj odjeljak je samo za IEC62056-21 mjerače (ne SML).

Nakon bljeskanja firmvera, uređaj će pokušati pročitati podatke s mjerača nakon otprilike 15 sekundi. Ako prijenos ne uspije, pokušat će ponovno dva puta svakih 15 sekundi.

Možete prilagoditi ove parametre konfiguriranjem odgovarajućih tokena. Pogledajte dokumentaciju IEC62056-21 komponenta za više detalja.

Preporučljivo je promijeniti zadanu razinu zapisivanja s DEBUG na INFO nakon što je uređaj potvrđen da ispravno radi.

Ispod su uobičajeni problemi i njihova odgovarajuća rješenja.

TIP

Osigurajte da je sonda sigurno pričvršćena na brojilo, poravnavajući strelicu na sondi u smjeru prema gore.

Nema prijenosa s brojila

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

Ovo može ukazivati na:

  • Najčešće, sučelje nije priključeno na brojilo.
  • Sučelje nije pravilno poravnato s optičkim sučeljem brojila.
  • Brojilo nije kompatibilno.

Provjerite je li optičko sučelje postavljeno paralelno s prednjom površinom kućišta. Ako uređaj radi kada je priključen na brojilo bez kućišta, ali ne radi nakon umetanja u kućište, ovo bi mogao biti problem. U tom slučaju, možete razmotriti povećanje dviju rupa u kućištu.

Nisu svi senzori primili podatke

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.

Ovo može ukazivati na dva problema:

  • Brojilo ne podržava OBIS kod koji ste konfigurirali u yaml datoteci. Jednostavno uklonite senzor sa specifičnim OBIS kodom iz konfiguracije.
  • Možda postoji tipografska greška ili netočna definicija OBIS koda za senzor u konfiguracijskoj datoteci. Dvaput provjerite kod.

Brojilo automatski prenosi podatke, ali uređaj ne prima ništa

Ovo ukazuje da brojilo podržava mod D IEC62056-21. U ovom modu, brojilo autonomno prenosi podatke svakih nekoliko sekundi bez potrebe za specifičnim zahtjevom. Osigurajte da je serijski port konfiguriran da se uskladi s formatom prijenosa brojila, obično postavljen na 9600 7E1 ili 2400 7E1 u većini slučajeva.

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

Osim toga, način rada D mora se ručno aktivirati postavljanjem mode_d=True u konfiguraciji platforme.

yaml
# Omogući način rada D
iec62056:
  mode_d: True

Pogreške kontrolnog zbroja

log
[E][iec62056.component:504]: BCC verifikacija nije uspjela. Očekivano 0x6b, dobiveno 0x14

Ova pogreška sugerira probleme s prijenosom.

Obično je brzina prijenosa prevelika. Smanjenje maksimalne brzine prijenosa bi trebalo pomoći.

yaml
iec62056:
  baud_rate_max : 4800

Primljena identifikacija brojila, ali bez prijenosa

log
[D][iec62056.component:174]: Identifikacija brojila: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Brojilo pokazuje način rada E, koji nije podržan. Pokušava se način rada C. Ovo će raditi za brojila koja podržavaju oba načina rada E i C.
[E][iec62056.component:268]: Nema prijenosa s brojila.

Identifikacijski niz brojila je uspješno primljen, ali nema prijenosa podataka. Dodatno, zapisnik prikazuje poruku koja kaže, "Brojilo pokazuje način rada E."

Brojilo radi isključivo u načinu rada E, što PiggyMeter ne podržava. Posljedično, softver pokušava prebaciti brojilo na način rada C, ali taj pokušaj ne uspijeva.

Ako brojilo podržava oba načina rada E i C, sustav bi trebao ispravno funkcionirati.