PiggyMeter
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.
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.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D SML komponendi kaudu
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
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.
- DLMS/COSEM Esphome moodul https://github.com/viric/esphome-ziv
Materjalide nimekiri
Osa | Kirjeldus |
---|---|
CPU | Wemos C3 või S2 Mini https://www.wemos.cc/en/latest/ |
Optiline liides | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2.54mm raster; plastosa peab olema 8.5 mm kõrgune |
Rõngasmagnet | ⌀30/⌀15×2mm |
Korpus | 3D prinditud korpus https://github.com/aquaticus/piggymeter_case |
Seib | 3D prinditud seib https://github.com/aquaticus/piggymeter_case |
Kaas | 3D prinditud tagakaas https://github.com/aquaticus/piggymeter_case |
CPU plaat
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
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.
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.
Korpus
Laadige alla failid 3D-printeri jaoks aadressilt https://github.com/aquaticus/piggymeter_case. Kasutage uusima disaini jaoks V5 versiooni.
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
Kokkupanek
Paiguta komponendid korpusesse järgmises järjekorras:
- Magnet
- Seib
- Optiline liides
- CPU plaat
- 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.
Andurid
See on konfigureerimisfailis määratletud andurite loetelu.
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.