Skip to content

PiggyMeter

PiggyMeter pievienots elektrības skaitītājam

Šajā rakstā ir aprakstīts, kā izveidot ierīci, lai attālināti nolasītu datus no elektrības skaitītāja (vai jebkuras ierīces ar saderīgu interfeisu).

Tiek izmantotas plaši pieejamas komponentes, atvērtā koda programmatūra un tas ir saderīgs ar populāru mājas automatizācijas programmatūru, Home Assistant.

INFO

Komplekts funkcionālas ierīces montāžai ir pieejams iegādei Tindie: PiggyMeter KIT.

Funkcijas

  • Atbalsta IEC62056-21 bāzētus protokolus
  • Atbalsta pasīvo SML protokolu, izmantojot ESPHome vietējo komponenti
  • Vairāki skaitītāji: enerģija, ūdens, siltums un citi
  • Izmanto atvērtā koda ESPHome
  • Bezvadu komunikācija caur Wi-Fi
  • Integrācija ar Home Assistant
  • Pēc izvēles tīmekļa serveris
  • Lēts aparatūras ESP32-C3 vai ESP32-S2
  • Korpusa dizains pieejams 3D drukai

Tas atbalsta skaitītājus, kas ir saderīgi ar IEC62056-21 standartu, kas darbojas režīmos A, B, C, D (bet ne E). Detalizētai informācijai skatiet IEC 62056-21 komponenti.

Ņemiet vērā, ka ir daudz protokola variāciju. Lai gan skaitītājs var izmantot to pašu optisko interfeisu, datu rāmja formāts var būt atšķirīgs.

Turklāt tas atbalsta skaitītājus, kas izmanto SML (Smart Message Language) protokolu, izmantojot ESPHome SML komponenti.

WARNING

DLMS, M-Bus un ANSI C12.18/19 standarti netiek atbalstīti ar šo programmatūru.

Kā pārbaudīt, vai skaitītājs ir atbalstīts?

IEC 62056-21 termins tiek izmantots vairākiem protokoliem (ar to pašu aparatūras slāni, bet atšķirīgu datu kodējumu). Ierīce atbalsta skaitītājus, kas nodrošina ASCII kodētus datus, piemēram, šādus:

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)

Skaitītājam jābūt saderīgam ar Starptautisko standartu IEC 62056-21:2002.

Raksturīgais metāla gredzens un optiskais interfeiss vidū.

SML protokolam meklējiet SML logotipu uz skaitītāja vai pārbaudiet rokasgrāmatu. ESPHome komponente atbalsta tikai pasīvo režīmu, tā nesūta nekādus pieprasījumus skaitītājam. Šajā režīmā skaitītājs sūta datus ik pēc dažām sekundēm.

Skaitītāji, kas darbojas ar PiggyMeter

Saraksts ir izveidots, pamatojoties uz lietotāju ziņojumiem. Nav garantijas, ka tas ir precīzs.

INFO

Jūtieties brīvi nosūtīt e-pastu uz info@aquaticus.info, ja zināt skaitītāju, kas darbojas ar PiggyMeter, bet nav uzskaitīts iepriekš.

Alternatīva programmatūra

PiggyMeter aparatūra var darboties ar daudziem dažādiem skaitītājiem, kas izmanto optisko interfeisu. Tomēr programmatūra pašlaik atbalsta tikai vienu standartu, praktiski ierobežojot atbalstīto skaitītāju klāstu.

Jūs varat mēģināt izmantot alternatīvu programmatūru, kas varētu pievienot atbalstu dažādiem skaitītājiem. Ir svarīgi atzīmēt, ka nav garantijas, ka tā darbosies nevainojami ar PiggyMeter. Lai saņemtu atbalstu, lūdzu, sazinieties ar oriģinālo autoru.

Materiālu saraksts

DaļaApraksts
CPUWemos C3 vai S2 Mini https://www.wemos.cc/en/latest/
Optiskais interfeissPiggyMeter PCB https://www.tindie.com/products/32082/
2×pin header 1×42.54mm rastrs; plastmasas daļai jābūt 8.5 mm augstumā
Gredzena magnēts⌀30/⌀15×2mm
Korpuss3D drukāts korpuss https://github.com/aquaticus/piggymeter_case
Paplāksne3D drukāta paplāksne https://github.com/aquaticus/piggymeter_case
Vāks3D drukāts aizmugures vāks https://github.com/aquaticus/piggymeter_case

CPU plate

CPU

Jums ir nepieciešama plate ar uzstādītu Espressif mikroshēmu un saderīgu Wemos/Lolin pinout. Galvenais faktors ir 4 pin vietas: GND, VCC, TX un RX.

PCB izmērs ir arī kritisks. 3D drukātā korpuss atbilst tikai zemāk uzskaitītajām platēm (vai to kloniem):

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

Teorētiski, jūs varat izmantot jebkuru citu CPU plati ar saderīgu pinout, piemēram, ESP32 un ESP8266 D1 mini. Bet šajā gadījumā jums būs jāizstrādā savs korpuss un nedaudz jāmaina konfigurācijas faili (plates tips un seriālo portu pini).

Optiskais interfeiss

Optiskais interfeiss

Skaitītājs izmanto optisko interfeisu, kas ir saderīgs ar IEC62056-21 standartu, sazinoties ar zondi, izmantojot infrasarkano diodi un fototransistoru.

Interfeiss ir pieslēgts vienam no CPU plates seriālajiem portiem. Protams, jums ir nepieciešams arī VCC un GND.

Optiskais interfeiss un CPU
plate

Lodējiet 2 pin headerus. Jums jāizmanto pin header 8.5 mm augstums. Korpusa dizains pielāgojas šim augstumam, nodrošinot pareizu piemērotību. Ja augstums pārsniedz šo izmēru, vāka aizvēršana var radīt problēmas.

INFO

Jūs varat iegādāties samontētu interfeisu Tindie. Buy on Tindie

Korpuss

Lejupielādējiet failus 3D printerim no https://github.com/aquaticus/piggymeter_case. Izmantojiet V5 versiju jaunākajam dizainam.

Korpuss

Korpuss sastāv no trim komponentēm:

  • galvenais korpuss,
  • paplāksne,
  • un vāks.

Ir pieejami trīs atsevišķi STL faili katrai komponentai, vai arī viens 3fm fails, kas ietver visus trīs elementus.

Korpuss atbilst IEC62056-21 standarta optiskās zondes prasībām.

INFO

Korpusam ir neliels aizbīdnis. Lai to aizvērtu vai atvērtu, jums būs jāpielieto zināms spēks.

Ieteicamie 3D drukas iestatījumi

  • Materiāls: PLA
  • Slānis: 0,2 mm
  • Nav atbalsta

3d print

Montāža

Assembly

Sakārtojiet komponentes korpusā šādā secībā:

  1. Magnēts
  2. Paplāksne
  3. Optiskais interfeiss
  4. CPU plate
  5. Vāks

INFO

Skatieties montāžu vietnē Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm

Programmēšana IEC62056-21 skaitītājiem

Sāciet, instalējot ESPHome.

Pamatojoties uz jūsu CPU plati, izvēlieties atbilstošo konfigurācijas failu. Papildus veiciet manuālas izmaiņas dažos parametros, piemēram, WiFi paroli.

Iegūt konfigurācijas failus

Klonējiet git repozitoriju ar konfigurācijas failiem:

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

Izveidot secrets.yaml failu

Izveidojiet secrets.yaml failu direktorijā, kur atrodas konfigurācijas faili. Šis fails saturēs WiFi tīkla nosaukumu un tā atbilstošo paroli.

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

Modificēt projekta konfigurāciju

Konfigurācija ir iepriekš iestatīta ar standarta datu punktiem elektrības skaitītājam.

Jūtieties brīvi pielāgot sarakstu, īpaši, ja jūsu skaitītājs atšķiras no elektrības skaitītāja tipa. Skatiet IEC 62056-21 komponentu papildu informācijai.

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

Izveidot un uzstādīt programmaparatūru

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

Iepriekš minētā komanda uzstāda programmaparatūru un parāda monitora izvadi. Pēc noklusējuma interfeiss nolasa datus no skaitītāja ik pēc 1 minūtes.

TIP

ESP32-S2 platei jums jānospiež BOOT poga un pēc tam RESET poga uz PCB, lai ieietu programmēšanas režīmā. Turklāt, pēc uzstādīšanas jūs varat redzēt kļūdas ziņojumu -- vienkārši ignorējiet to.

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)

Programmēšana SML skaitītājiem

Pirmie soļi ir identiski tiem, kas ir IEC62056-21 skaitītājiem.

Pēc repozitorija klonēšanas un secrets.yaml faila izveides, izmantojiet konfigurācijas failus SML skaitītājiem.

bash
esphome run piggymeter-s2-sml.yaml

Visticamāk, jums būs jāpielāgo konfigurācijas fails, lai tas atbilstu skaitītāja nosūtītajiem datu punktiem. Ir vērts arī pārbaudīt seriālā porta pārraides ātrumu un datu bitus.

Home Assistant

Ierīcei vajadzētu automātiski tikt atklātai ar Home Assistant. Ja nē, jūs varat to pievienot manuāli, noklikšķinot uz Pievienot integrāciju un izvēloties ESPHome integrāciju.

PiggyMeter piedāvā trīs vienību grupas:

Nolasīšanas Trigeris

Šis trigeris piespiež PiggyMeter nolasīt datus no skaitītāja ārpus grafika.

Skaitītāja Savienojuma Statuss

Connected statuss norāda, ka interfeiss apmainās ar datiem ar skaitītāju.

Savienojuma Statuss

Sensori

Šis ir sensoru saraksts, kas definēts konfigurācijas failā.

Sensori

Neatkarīgais režīms

PiggyMeter var darboties neatkarīgi no Home Assistant, piedāvājot iespēju aktivizēt tīmekļa serveri. Šis serveris parāda datu nolasījumus tieši tīmekļa pārlūkā un piedāvā vienkāršu REST API.

Lai aktivizētu tīmekļa serveri, iekļaujiet šādas rindas konfigurācijas failā:

yaml
web_server:
  port: 80

Vairāk informācijas par tīmekļa serveri var atrast ESPHome dokumentācijā.

Modifikācijas

Pēc noklusējuma ierīce iegūst datus katru minūti, un iekšējā LED gaisma ir ieslēgta pārraides laikā.

Konfigurācijas yaml failā ir definēts tikai ierobežots skaits OBIS kodu. Ļoti ieteicams modificēt sensoru sarakstu, lai tas atbilstu skaitītājam.

Lai gan OBIS kodi ir standartizēti, skaitītāji var pārraidīt dažādu skaitu kodu. Lai noskaidrotu, kuri kodi ir atbalstīti jūsu skaitītājam, aktivizējiet DEBUG žurnālu IEC62056-21 komponentam un analizējiet žurnāla izvadi.

Diagnostika un Problēmas IEC62056-21

Šī sadaļa ir tikai IEC62056-21 skaitītājiem (nevis SML).

Pēc programmaparatūras mirgošanas ierīce mēģinās nolasīt datus no skaitītāja pēc aptuveni 15 sekundēm. Ja pārraide neizdodas, tā mēģinās vēl divas reizes ik pēc 15 sekundēm.

Jūs varat pielāgot šos parametrus, konfigurējot atbilstošos tokenus. Konsultējieties ar IEC62056-21 komponenta dokumentāciju, lai iegūtu vairāk informācijas.

Ieteicams mainīt noklusējuma žurnāla līmeni no DEBUG uz INFO, kad ierīce ir apstiprināta kā darbojoša pareizi.

Zemāk ir izplatītas problēmas un to attiecīgie risinājumi.

TIP

Pārliecinieties, ka zonde ir droši piestiprināta pie skaitītāja, novietojot zondes bultiņu uz augšu.

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

Tas var norādīt:

  • Visbiežāk interfeiss nav pievienots skaitītājam.
  • Interfeiss nav pareizi izlīdzināts ar skaitītāja optisko interfeisu.
  • Skaitītājs nav saderīgs.

Pārliecinieties, ka optiskais interfeiss ir novietots paralēli korpusa priekšējai virsmai. Ja ierīce darbojas, kad tā ir pievienota skaitītājam bez korpusa, bet nedarbojas pēc ievietošanas korpusā, tas varētu būt problēmas cēlonis. Šādā gadījumā jūs varat arī apsvērt iespēju palielināt divus caurumus korpusā.

Ne visi sensori saņēma datus

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.

Tas var norādīt uz divām problēmām:

  • Skaitītājs neatbalsta OBIS kodu, kuru jūs konfigurējāt yaml failā. Vienkārši noņemiet sensoru ar konkrēto OBIS kodu no konfigurācijas.
  • Varētu būt drukas kļūda vai nepareiza OBIS koda definīcija sensoram konfigurācijas failā. Pārbaudiet kodu vēlreiz.

Skaitītājs automātiski pārraida datus, bet ierīce neko nesaņem

Tas norāda, ka skaitītājs atbalsta D režīmu IEC62056-21. Šajā režīmā skaitītājs autonomi pārraida datus ik pēc dažām sekundēm, neprasot konkrētu pieprasījumu. Pārliecinieties, ka sērijas ports ir konfigurēts, lai saskaņotos ar skaitītāja pārraides formātu, kas parasti ir iestatīts uz 9600 7E1 vai 2400 7E1 vairumā gadījumu.

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

Papildus tam, D režīms ir jāaktivizē manuāli, iestatot mode_d=True platformas konfigurācijā.

yaml
# Aktivizēt D režīmu
iec62056:
  mode_d: True

Kontrolsummas kļūdas

log
[E][iec62056.component:504]: BCC verifikācija neizdevās. Paredzēts 0x6b, saņemts 0x14

Šī kļūda norāda uz pārraides problēmām.

Parasti pārraides ātrums ir pārāk augsts. Samazinot maksimālo baud likmi, vajadzētu palīdzēt.

yaml
iec62056:
  baud_rate_max : 4800

Saņemts skaitītāja identifikators, bet nav pārraides

log
[D][iec62056.component:174]: Skaitītāja identifikators: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Skaitītājs norāda E režīmu, kas netiek atbalstīts. Mēģina C režīmu. Tas darbosies skaitītājiem, kas atbalsta gan E, gan C režīmu.
[E][iec62056.component:268]: Nav pārraides no skaitītāja.

Skaitītāja identifikācijas virkne tiek veiksmīgi saņemta, bet nav datu pārraides. Turklāt žurnālā tiek parādīts ziņojums, ka "Skaitītājs norāda E režīmu."

Skaitītājs darbojas tikai E režīmā, ko PiggyMeter neatbalsta. Tāpēc programmatūra mēģina pārslēgt skaitītāju uz C režīmu, bet šis mēģinājums neizdodas.

Ja skaitītājs atbalsta gan E, gan C režīmu, sistēmai vajadzētu darboties pareizi.