Skip to content

PiggyMeter

PiggyMeter kinnitatud elektriarvesti külge

See artikkel näitab, kuidas ehitada seadet, mis loeb andmeid elektriarvestist (või mis tahes seadmest, millel on ühilduv liides) kaugjuhtimise teel.

See kasutab laialdaselt kättesaadavaid komponente, avatud lähtekoodiga tarkvara ja on ühilduv populaarse koduautomaatika tarkvaraga, Home Assistant.

INFO

Komplekt funktsionaalse seadme kokkupanekuks on saadaval ostmiseks Tindie'is: PiggyMeter KIT.

Omadused

  • Toetab IEC62056-21 põhiseid protokolle
  • Toetab passiivset SML protokolli kasutades ESPHome natiivset komponenti
  • Mitmed arvestid: energia, vesi, soojus ja rohkem
  • Kasutab avatud lähtekoodiga ESPHome'i
  • Juhtmevaba suhtlus Wi-Fi kaudu
  • Integreerub Home Assistantiga
  • Valikuline veebiserver
  • Odav riistvara ESP32-C3 või ESP32-S2
  • Korpuse disain saadaval 3D printimiseks

See toetab arvestid, mis on ühilduvad IEC62056-21 standardiga, mis töötab režiimides A, B, C, D (kuid mitte E). Üksikasjade saamiseks vaadake IEC 62056-21 komponenti.

Pange tähele, et protokollil on palju variatsioone. Kuigi arvesti võib kasutada sama optilist liidest, võib andmeraami formaat olla erinev.

Lisaks toetab see arvestid, mis kasutavad SML (Smart Message Language) protokolli, kasutades ESPHome SML komponenti.

WARNING

DLMS, M-Bus ja ANSI C12.18/19 standardeid tarkvara ei toeta.

Kuidas kontrollida, kas arvesti on toetatud?

IEC 62056-21 terminit kasutatakse mitme protokolli jaoks (sama riistvarakihiga, kuid erineva andmete kodeerimisega). Seade toetab arvestid, mis pakuvad ASCII-kodeeritud andmeid, midagi sellist:

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)

Arvesti peab olema ühilduv Rahvusvahelise Standardiga IEC 62056-21:2002.

Iseloomulik metallrõngas ja optiline liides keskel.

SML protokolli puhul otsige arvestilt SML logo või kontrollige käsiraamatut. ESPHome komponent toetab ainult passiivset režiimi, see ei saada arvestile mingeid päringuid. Selles režiimis saadab arvesti andmeid iga paari sekundi järel.

Arvestid, mis töötavad PiggyMeteriga

Nimekiri on koostatud kasutajate teadete põhjal. Ei ole garantiid, et see on täpne.

INFO

Võite saata e-kirja aadressile info@aquaticus.info, kui teate arvestit, mis töötab PiggyMeteriga, kuid ei ole ülaltoodud nimekirjas.

Alternatiivne tarkvara

PiggyMeteri riistvara võib töötada paljude erinevate arvestitega, mis kasutavad optilist liidest. Kuid tarkvara toetab praegu ainult ühte standardit, mis praktiliselt piirab toetatud arvestite valikut.

Võite proovida kasutada alternatiivset tarkvara, mis võib lisada toe erinevatele arvestitele. On oluline märkida, et ei ole kindlust, et see töötab sujuvalt PiggyMeteriga. Toe saamiseks võtke ühendust algse autoriga.

Materjalide nimekiri

OsaKirjeldus
CPUWemos C3 või S2 Mini https://www.wemos.cc/en/latest/
Optiline liidesPiggyMeter PCB https://www.tindie.com/products/32082/
2×pin header 1×42.54mm raster; plastosa peab olema 8.5 mm kõrgune
Rõngasmagnet⌀30/⌀15×2mm
Korpus3D prinditud korpus https://github.com/aquaticus/piggymeter_case
Seib3D prinditud seib https://github.com/aquaticus/piggymeter_case
Kaas3D prinditud tagakaas https://github.com/aquaticus/piggymeter_case

CPU plaat

CPU

Vajate plaati, millel on paigaldatud Espressifi kiip ja mis on ühilduv Wemos/Lolin pinout'iga. Oluline tegur on 4 pinni asukoht: GND, VCC, TX ja RX.

Trükkplaadi suurus on samuti kriitiline. 3D-prinditud korpus sobib ainult allpool loetletud plaatidele (või nende kloonidele):

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

Teoreetiliselt võite kasutada ka mis tahes muud CPU plaati, millel on ühilduv pinout, näiteks ESP32 ja ESP8266 D1 mini. Kuid sel juhul peate kujundama oma korpuse ja veidi muutma konfiguratsioonifaile (plaadi tüüp ja seeriapordi pinnid).

Optiline liides

Optiline liides

Arvesti kasutab optilist liidest, mis on ühilduv IEC62056-21 standardiga, suheldes sondiga infrapuna dioodi ja fototransistori kaudu.

Liides on ühendatud ühega CPU plaadi seeriaportidest. Loomulikult vajate ka VCC ja GND.

Optiline liides ja CPU
plaat

Jootke 2 pinni päist. Peate kasutama pinni päist 8,5 mm kõrgusega. Korpuse disain mahutab selle kõrguse, tagades korraliku sobivuse. Kui kõrgus ületab selle mõõtme, võib kaane sulgemine olla keeruline.

INFO

Võite osta kokkupandud liidese Tindie'ist. Osta Tindie'ist

Korpus

Laadige alla failid 3D-printeri jaoks aadressilt https://github.com/aquaticus/piggymeter_case. Kasutage uusima disaini jaoks V5 versiooni.

Korpus

Korpus koosneb kolmest komponendist:

  • peamine korpus,
  • seib,
  • ja kaas.

Iga komponendi jaoks on saadaval kolm eraldi STL faili või alternatiivselt üks 3fm fail, mis sisaldab kõiki kolme elementi.

Korpus vastab IEC62056-21 standardi optilise sondi nõuetele.

INFO

Korpusel on väike kinnitus. Selle sulgemiseks või avamiseks peate kasutama veidi jõudu.

Soovitatavad 3D printimise seaded

  • Materjal: PLA
  • Kiht: 0,2 mm
  • Toetuseta

3d print

Kokkupanek

Assembly

Paiguta komponendid korpusesse järgmises järjekorras:

  1. Magnet
  2. Seib
  3. Optiline liides
  4. CPU plaat
  5. Kaas

INFO

Vaata kokkupanekut Youtube'is https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm

Programmeerimine IEC62056-21 arvestitele

Alusta ESPHome installimisega.

Vali oma CPU plaadi põhjal sobiv konfiguratsioonifail. Lisaks tee käsitsi muudatusi teatud parameetrites, nagu näiteks WiFi parool.

Konfiguratsioonifailide hankimine

Klooni git repositoorium konfiguratsioonifailidega:

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

Loo secrets.yaml fail

Loo secrets.yaml fail kataloogi, kus asuvad konfiguratsioonifailid. See fail sisaldab WiFi võrgu nime ja vastavat parooli.

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

Projekti konfiguratsiooni muutmine

Konfiguratsioon on eelnevalt seadistatud standardsete andmepunktidega elektriarvesti jaoks.

Võid nimekirja kohandada, eriti kui sinu arvesti erineb elektriarvesti tüübist. Lisateabe saamiseks vaata IEC 62056-21 komponenti.

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

Püsivara koostamine ja laadimine

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

Ülaltoodud käsk laadib püsivara ja kuvab monitori väljundi. Vaikimisi loeb liides andmeid arvestilt iga 1 minuti järel.

TIP

ESP32-S2 plaadi puhul pead vajutama BOOT nuppu ja seejärel RESET nuppu trükkplaadil, et siseneda programmeerimisrežiimi. Lisaks võid pärast laadimist näha veateadet -- lihtsalt ignoreeri seda.

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)

Programmeerimine SML arvestitele

Esimesed sammud on identsed IEC62056-21 arvestite omadega.

Pärast repositooriumi kloonimist ja secrets.yaml faili loomist kasuta SML arvestite konfiguratsioonifaile.

bash
esphome run piggymeter-s2-sml.yaml

Tõenäoliselt peate konfigureerimisfaili kohandama, et see vastaks arvesti edastatavatele andmepunktidele. Samuti tasub kontrollida jadapordi baudi kiirust ja andmebitte.

Home Assistant

Seade peaks olema Home Assistant'i poolt automaatselt tuvastatud. Kui ei, saate selle käsitsi lisada, klõpsates Add Integration ja valides ESPHome integratsiooni.

PiggyMeter eksponeerib kolme rühma üksusi:

Lugemise Käivitaja

See käivitaja sunnib PiggyMeterit lugema andmeid arvestist väljaspool ajakava.

Arvesti Ühenduse Staatus

Connected staatus näitab, et liides vahetab andmeid arvestiga.

Connection Status

Andurid

See on konfigureerimisfailis määratletud andurite loetelu.

Sensors

Iseseisev režiim

PiggyMeter võib töötada iseseisvalt Home Assistant'ist, pakkudes võimalust aktiveerida veebiserver. See server kuvab andmete lugemisi otse veebibrauseris ja pakub lihtsat REST API-d.

Veebiserveri aktiveerimiseks lisage konfigureerimisfaili järgmised read:

yaml
web_server:
  port: 80

Rohkem teavet veebiserveri kohta leiate ESPHome dokumentatsioonist.

Muudatused

Vaikimisi hangib seade andmeid iga minut ja sisemine LED süttib edastamise ajal.

Konfigureerimisfailis on määratletud ainult piiratud arv OBIS koode. On tungivalt soovitatav muuta andurite loetelu, et see vastaks arvestile.

Kuigi OBIS koodid on standardiseeritud, võivad arvestid edastada erineva arvu koode. Oma arvesti toetatud koodide kindlakstegemiseks lubage DEBUG logimine IEC62056-21 komponendi jaoks ja analüüsige logiväljundit.

Diagnostika ja Probleemid IEC62056-21

See jaotis on ainult IEC62056-21 arvestite jaoks (mitte SML).

Pärast püsivara vilkumist üritab seade lugeda andmeid arvestist umbes 15 sekundi pärast. Kui edastus ebaõnnestub, proovib see uuesti kaks korda iga 15 sekundi järel.

Saate neid parameetreid kohandada, konfigureerides sobivaid märke. Lisateabe saamiseks vaadake IEC62056-21 komponent dokumentatsiooni.

Soovitatav on vahetada vaike logitaset DEBUG pealt INFO peale, kui seade on kinnitatud töötama õigesti.

Allpool on toodud levinud probleemid ja nende vastavad lahendused.

TIP

Veenduge, et proov on kindlalt kinnitatud arvesti külge, joondades noole proovil ülespoole.

Arvestilt ei tule edastust

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

See võib viidata:

  • Kõige sagedamini ei ole liides arvestiga ühendatud.
  • Liides ei ole korralikult joondatud arvesti optilise liidesega.
  • Arvesti ei ole ühilduv.

Veenduge, et optiline liides on paigutatud paralleelselt korpuse esipinnaga. Kui seade töötab, kui see on kinnitatud arvesti külge ilma korpuseta, kuid ei tööta pärast korpusesse sisestamist, võib see olla probleem. Sellisel juhul võite kaaluda ka kahe augu suurendamist korpuses.

Kõik andurid ei saanud andmeid

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.

See võib viidata kahele probleemile:

  • Arvesti ei toeta OBIS koodi, mille olete konfigureerinud yaml failis. Eemaldage lihtsalt konkreetse OBIS koodiga andur konfiguratsioonist.
  • Konfiguratsioonifailis võib olla OBIS koodi kirjaviga või vale määratlus anduri jaoks. Kontrollige koodi uuesti.

Arvesti edastab andmeid automaatselt, kuid seade ei saa midagi

See viitab sellele, et arvesti toetab IEC62056-21 režiimi D. Selles režiimis edastab arvesti andmeid iga paari sekundi järel ilma konkreetse päringuta. Veenduge, et jadaport on konfigureeritud vastavaks arvesti edastusformaadile, mis on enamasti seatud 9600 7E1 või 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

Lisaks tuleb režiim D käsitsi aktiveerida, määrates platvormi konfiguratsioonis mode_d=True.

yaml
# Luba režiim D
iec62056:
  mode_d: True

Kontrollsumma vead

log
[E][iec62056.component:504]: BCC kontroll ebaõnnestus. Oodati 0x6b, saadi 0x14

See viga viitab edastusprobleemidele.

Tavaliselt on edastuskiirus liiga kõrge. Maksimaalse baudi määra vähendamine peaks aitama.

yaml
iec62056:
  baud_rate_max : 4800

Arvesti identifitseerimine saadi, kuid edastust ei toimunud

log
[D][iec62056.component:174]: Arvesti identifitseerimine: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Arvesti näitab režiimi E, mida ei toetata. Proovitakse režiimi C. See töötab arvestite puhul, mis toetavad nii režiimi E kui ka C.
[E][iec62056.component:268]: Arvestilt ei toimu edastust.

Arvesti identifitseerimisstring saadi edukalt, kuid andmete edastust ei toimu. Lisaks kuvatakse logis teade: "Arvesti näitab režiimi E."

Arvesti töötab ainult režiimis E, mida PiggyMeter ei toeta. Seetõttu üritab tarkvara arvestit lülitada režiimi C, kuid see katse ebaõnnestub.

Kui arvesti toetab nii režiimi E kui ka C, peaks süsteem töötama korrektselt.