Skip to content

PiggyMeter

PiggyMeter kiinnitettynä sähkömittariin

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.

Tunnusomainen metallirengas ja optinen liitäntä keskellä.

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.

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.

Materiaaliluettelo

OsaKuvaus
CPUWemos C3 tai S2 Mini https://www.wemos.cc/en/latest/
Optinen rajapintaPiggyMeter PCB https://www.tindie.com/products/32082/
2×pin header 1×42,54 mm rasteri; muoviosan on oltava 8,5 mm korkea
Rengasmagneetti⌀30/⌀15×2mm
Kotelo3D-tulostettu kotelo https://github.com/aquaticus/piggymeter_case
Prikka3D-tulostettu prikka https://github.com/aquaticus/piggymeter_case
Kansi3D-tulostettu takakansi https://github.com/aquaticus/piggymeter_case

CPU-kortti

CPU

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

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.

Optinen rajapinta ja CPU
kortti

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.

INFO

Voit ostaa valmiiksi kootun rajapinnan Tindiestä. Buy on Tindie

Kotelo

Lataa tiedostot 3D-tulostimelle osoitteesta https://github.com/aquaticus/piggymeter_case. Käytä V5-versiota uusimpaan suunnitteluun.

Kotelo

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

3d print

Kokoaminen

Assembly

Järjestä komponentit kotelon sisällä seuraavassa järjestyksessä:

  1. Magneetti
  2. Prikka
  3. Optinen rajapinta
  4. CPU-kortti
  5. 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.

Yhteystila

Anturit

Tämä on luettelo antureista, jotka on määritelty konfiguraatiotiedostossa.

Anturit

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.