PiggyMeter
Tässä artikkelissa näytetään, kuinka rakennat laitteen, joka lukee etänä tietoja sähkömittarista (tai mistä tahansa laitteesta, jossa on yhteensopiva liitäntä).
Se käyttää laajalti saatavilla olevia komponentteja, avointa lähdekoodia ja on yhteensopiva suositun kotiautomaatio-ohjelmiston, Home Assistant, kanssa.
INFO
Toimivan laitteen kokoamispaketti on saatavilla ostettavaksi Tindiestä: PiggyMeter KIT.
Ominaisuudet
- Tukee IEC62056-21-pohjaisia protokollia
- Tukee passiivista SML-protokollaa ESPHome-natiivikomponentin avulla
- Useita mittareita: energia, vesi, lämpö ja enemmän
- Käyttää avointa lähdekoodia ESPHome
- Langaton viestintä Wi-Fi:n kautta
- Integroituu Home Assistantin kanssa
- Valinnainen verkkopalvelin
- Edullinen laitteisto ESP32-C3 tai ESP32-S2
- Kotelo suunniteltu 3D-tulostukseen
Se tukee mittareita, jotka ovat yhteensopivia IEC62056-21-standardin kanssa ja toimivat tiloissa A, B, C, D (mutta ei E). Lisätietoja löytyy IEC 62056-21 komponentista.
Huomaa, että protokollasta on monia variaatioita. Vaikka mittari saattaa käyttää samaa optista liitäntää, tietokehysformaatti voi olla erilainen.
Lisäksi se tukee mittareita, jotka käyttävät SML (Smart Message Language) -protokollaa ESPHome SML-komponentin avulla.
WARNING
DLMS-, M-Bus- ja ANSI C12.18/19-standardit eivät ole ohjelmiston tukemia.
Kuinka tarkistaa, onko mittari tuettu?
IEC 62056-21 -termiä käytetään useille protokollille (joilla on sama laitteistokerros mutta eri tietojen koodaus). Laite tukee mittareita, jotka tarjoavat ASCII-koodattuja tietoja, kuten tämä:
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)
Mittarin on oltava yhteensopiva Kansainvälisen standardin IEC 62056-21:2002 kanssa.
SML-protokollan osalta etsi SML-logo mittarista tai tarkista käyttöohje. ESPHome-komponentti tukee vain passiivista tilaa, se ei lähetä mitään pyyntöjä mittarille. Tässä tilassa mittari lähettää tietoja muutaman sekunnin välein.
Mittarit, joiden on raportoitu toimivan PiggyMeterin kanssa
Luettelo on luotu käyttäjien raporttien perusteella. Ei ole takeita sen tarkkuudesta.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D SML-komponentin kautta
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
INFO
Voit vapaasti lähettää sähköpostia osoitteeseen info@aquaticus.info, jos tiedät mittarin, joka toimii PiggyMeterin kanssa, mutta ei ole lueteltu yllä.
Vaihtoehtoinen ohjelmisto
PiggyMeter-laitteisto voi toimia monien erilaisten optista rajapintaa käyttävien mittareiden kanssa. Ohjelmisto tukee kuitenkin tällä hetkellä vain yhtä standardia, mikä käytännössä rajoittaa tuettujen mittareiden valikoimaa.
Voit kokeilla käyttää vaihtoehtoista ohjelmistoa, joka saattaa lisätä tukea eri mittareille. On tärkeää huomata, että ei ole varmuutta siitä, että se toimii saumattomasti PiggyMeterin kanssa. Tuen saamiseksi ota yhteyttä alkuperäiseen tekijään.
- DLMS/COSEM Esphome -moduuli https://github.com/viric/esphome-ziv
Materiaaliluettelo
Osa | Kuvaus |
---|---|
CPU | Wemos C3 tai S2 Mini https://www.wemos.cc/en/latest/ |
Optinen rajapinta | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2,54 mm rasteri; muoviosan on oltava 8,5 mm korkea |
Rengasmagneetti | ⌀30/⌀15×2mm |
Kotelo | 3D-tulostettu kotelo https://github.com/aquaticus/piggymeter_case |
Prikka | 3D-tulostettu prikka https://github.com/aquaticus/piggymeter_case |
Kansi | 3D-tulostettu takakansi https://github.com/aquaticus/piggymeter_case |
CPU-kortti
Tarvitset kortin, jossa on asennettuna Espressif-siru ja yhteensopiva Wemos/Lolin-pinout. Tärkeä tekijä on neljän pinnin sijainti: GND
, VCC
, TX
ja RX
.
Piirilevyn koko on myös kriittinen. 3D-tulostettu kotelo sopii vain alla lueteltuihin kortteihin (tai niiden klooneihin):
- Lolin/Wemos S2 mini
- Lolin/Wemos C3 mini
Teoriassa voit käyttää mitä tahansa muuta CPU-korttia, jossa on yhteensopiva pinout, kuten ESP32 ja ESP8266 D1 mini. Mutta siinä tapauksessa sinun on suunniteltava oma kotelo ja muokattava hieman konfiguraatiotiedostoja (korttityyppi ja sarjaportin pinnit).
Optinen rajapinta
Mittari käyttää optista rajapintaa, joka on yhteensopiva IEC62056-21 standardin kanssa, kommunikoiden koettimen kanssa infrapunadiodin ja valotransistorin avulla.
Rajapinta on kytketty yhteen CPU-kortin sarjaporteista. Tietenkin tarvitset myös VCC:n ja GND:n.
Juota 2 pinniotsaketta. Sinun on käytettävä pinniotsaketta, jonka korkeus on 8,5 mm. Kotelon suunnittelu mahdollistaa tämän korkeuden, varmistaen asianmukaisen istuvuuden. Jos korkeus ylittää tämän mitan, kannen sulkeminen voi olla haastavaa.
Kotelo
Lataa tiedostot 3D-tulostimelle osoitteesta https://github.com/aquaticus/piggymeter_case. Käytä V5-versiota uusimpaan suunnitteluun.
Kotelo koostuu kolmesta osasta:
- pääkotelo,
- prikka,
- ja kansi.
Jokaiselle komponentille on saatavilla kolme erillistä STL-tiedostoa, tai vaihtoehtoisesti yksi 3fm-tiedosto, joka sisältää kaikki kolme elementtiä.
Kotelo täyttää IEC62056-21-standardin optisen koettimen vaatimukset.
INFO
Kotelossa on pieni salpa. Sen sulkemiseen tai avaamiseen tarvitaan hieman voimaa.
Suositellut 3D-tulostusasetukset
- Materiaali: PLA
- Kerros: 0,2 mm
- Ei tukea
Kokoaminen
Järjestä komponentit kotelon sisällä seuraavassa järjestyksessä:
- Magneetti
- Prikka
- Optinen rajapinta
- CPU-kortti
- Kansi
INFO
Katso kokoamisohjeet Youtubesta https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm
Ohjelmointi IEC62056-21-mittareille
Aloita asentamalla ESPHome.
Valitse CPU-korttisi perusteella sopiva konfiguraatiotiedosto. Tee lisäksi manuaalisia muutoksia tiettyihin parametreihin, kuten WiFi-salasanaan.
Hanki konfiguraatiotiedostot
Kloonaa git-repositorio konfiguraatiotiedostoilla:
bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml
Luo secrets.yaml-tiedosto
Luo secrets.yaml
-tiedosto hakemistoon, jossa konfiguraatiotiedostot sijaitsevat. Tämä tiedosto sisältää WiFi-verkon nimen ja siihen liittyvän salasanan.
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
Muokkaa projektin konfiguraatiota
Konfiguraatio on esiasetettu sähkömittarin vakiodatapisteillä.
Voit vapaasti muokata listaa, erityisesti jos mittarisi poikkeaa sähkömittarityypistä. Katso lisätietoja IEC 62056-21 komponentista.
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
Rakenna ja flashaa laiteohjelmisto
bash
esphome run piggymeter-s2-iec62056-21.yaml
Yllä oleva komento flashaa laiteohjelmiston ja näyttää monitorin tulosteen. Oletuksena rajapinta lukee tietoja mittarista joka minuutti.
TIP
ESP32-S2-kortille sinun on painettava BOOT-painiketta ja sitten RESET-painiketta piirilevyllä päästäksesi ohjelmointitilaan. Lisäksi voit nähdä virheilmoituksen flashauksen jälkeen -- jätä se huomiotta.
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)
Ohjelmointi SML-mittareille
Ensimmäiset vaiheet ovat identtisiä IEC62056-21-mittareiden kanssa.
Kloonaamisen ja secrets.yaml
-tiedoston luomisen jälkeen käytä SML-mittareille tarkoitettuja konfiguraatiotiedostoja.
bash
esphome run piggymeter-s2-sml.yaml
Todennäköisesti sinun täytyy säätää konfiguraatiotiedostoa vastaamaan mittarin lähettämiä datapisteitä. On myös syytä tarkistaa sarjaportin baudinopeus ja databitit.
Home Assistant
Laitteen pitäisi tunnistua automaattisesti Home Assistantissa. Jos ei, voit lisätä sen manuaalisesti klikkaamalla Lisää integraatio ja valitsemalla ESPHome -integraation.
PiggyMeter paljastaa kolme ryhmää kohteita:
Lukeman laukaisin
Tämä laukaisin pakottaa PiggyMeterin lukemaan tietoja mittarista aikataulun ulkopuolella.
Mittarin yhteystila
Connected tila osoittaa, että käyttöliittymä vaihtaa tietoja mittarin kanssa.
Anturit
Tämä on luettelo antureista, jotka on määritelty konfiguraatiotiedostossa.
Itsenäinen tila
PiggyMeter voi toimia itsenäisesti Home Assistantista, tarjoten mahdollisuuden aktivoida verkkopalvelimen. Tämä palvelin näyttää lukematiedot suoraan verkkoselaimessa ja tarjoaa yksinkertaisen REST API:n.
Aktivoidaksesi verkkopalvelimen, lisää seuraavat rivit konfiguraatiotiedostoon:
yaml
web_server:
port: 80
Lisätietoja verkkopalvelimesta löytyy ESPHome-dokumentaatiosta.
Muutokset
Oletuksena laite hakee tietoja joka minuutti, ja sisäinen LED palaa lähetyksen aikana.
Konfiguraatio yaml-tiedostossa on määritelty vain rajallinen määrä OBIS-koodeja. On erittäin suositeltavaa muokata anturiluetteloa vastaamaan mittaria.
Vaikka OBIS-koodit ovat standardoituja, mittarit voivat lähettää vaihtelevan määrän koodeja. Selvittääksesi mittarisi tukemat koodit, ota käyttöön DEBUG
-lokitus IEC62056-21-komponentille ja analysoi lokituloste.
Diagnostiikka ja ongelmat IEC62056-21
Tämä osio on vain IEC62056-21-mittareille (ei SML).
Kun laiteohjelmisto on ladattu, laite yrittää lukea tietoja mittarista noin 15 sekunnin kuluttua. Jos lähetys epäonnistuu, se yrittää uudelleen kahdesti 15 sekunnin välein.
Voit säätää näitä parametreja määrittämällä sopivat tunnukset. Katso IEC62056-21 komponentti dokumentaatiota saadaksesi lisätietoja.
On suositeltavaa vaihtaa oletuslokitaso DEBUG
tasolle INFO
, kun laite on vahvistettu toimivaksi.
Alla on yleisiä ongelmia ja niiden ratkaisuja.
TIP
Varmista, että anturi on kiinnitetty tiukasti mittariin, ja että anturin nuoli on ylöspäin.
Ei lähetystä mittarista
log
[E][iec62056.component:268]: No transmission from meter.
Tämä voi tarkoittaa:
- Yleisimmin, liitäntä ei ole kiinnitetty mittariin.
- Liitäntä ei ole kunnolla linjassa mittarin optisen liitännän kanssa.
- Mittari ei ole yhteensopiva.
Varmista, että optinen liitäntä on sijoitettu rinnakkain kotelon etupinnan kanssa. Jos laite toimii, kun se on kiinnitetty mittariin ilman koteloa, mutta ei toimi koteloon asettamisen jälkeen, tämä voi olla ongelma. Tässä tapauksessa voit myös harkita suurentamista kahdelle reiälle kotelossa.
Kaikki anturit eivät vastaanottaneet tietoja
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.
Tämä voi tarkoittaa kahta ongelmaa:
- Mittari ei tue OBIS-koodia, jonka olet määrittänyt yaml tiedostossa. Poista yksinkertaisesti anturi, jolla on tietty OBIS-koodi kokoonpanosta.
- Kokoonpanotiedostossa voi olla kirjoitusvirhe tai väärä OBIS-koodin määrittely anturille. Tarkista koodi huolellisesti.
Mittari lähettää tietoja automaattisesti, mutta laite ei vastaanota mitään
Tämä tarkoittaa, että mittari tukee IEC62056-21:n tila D:tä. Tässä tilassa mittari lähettää tietoja itsenäisesti muutaman sekunnin välein ilman erityistä pyyntöä. Varmista, että sarjaportti on konfiguroitu vastaamaan mittarin lähetysformaattia, joka on tyypillisesti asetettu 9600 7E1 tai 2400 7E1 useimmissa tapauksissa.
yaml
# 9600bps for mode D
uart:
rx_pin: GPIO21
tx_pin: GPIO22
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
Lisäksi tila D on aktivoitava manuaalisesti asettamalla mode_d=True
alustan asetuksissa.
yaml
# Ota tila D käyttöön
iec62056:
mode_d: True
Tarkistussummavirheet
log
[E][iec62056.component:504]: BCC-tarkistus epäonnistui. Odotettiin 0x6b, saatiin 0x14
Tämä virhe viittaa siirto-ongelmiin.
Yleensä siirtonopeus on liian korkea. Suurin baudinopeus kannattaa laskea.
yaml
iec62056:
baud_rate_max : 4800
Vastaanotettu mittarin tunnistus, mutta ei siirtoa
log
[D][iec62056.component:174]: Mittarin tunnistus: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Mittari ilmoittaa tilan E, jota ei tueta. Yritetään tilaa C. Tämä toimii mittareille, jotka tukevat sekä tilaa E että C.
[E][iec62056.component:268]: Ei siirtoa mittarilta.
Mittarin tunnistusmerkkijono vastaanotetaan onnistuneesti, mutta tiedonsiirtoa ei tapahdu. Lisäksi lokissa näkyy viesti, jossa sanotaan: "Mittari ilmoittaa tilan E."
Mittari toimii yksinomaan tilassa E, jota PiggyMeter ei tue. Tämän seurauksena ohjelmisto yrittää vaihtaa mittarin tilaan C, mutta tämä yritys epäonnistuu.
Jos mittari tukee sekä tilaa E että C, järjestelmän pitäisi toimia oikein.