PiggyMeter
Š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.
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.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D caur SML komponentu
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
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.
- DLMS/COSEM Esphome modulis https://github.com/viric/esphome-ziv
Materiālu saraksts
Daļa | Apraksts |
---|---|
CPU | Wemos C3 vai S2 Mini https://www.wemos.cc/en/latest/ |
Optiskais interfeiss | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2.54mm rastrs; plastmasas daļai jābūt 8.5 mm augstumā |
Gredzena magnēts | ⌀30/⌀15×2mm |
Korpuss | 3D drukāts korpuss https://github.com/aquaticus/piggymeter_case |
Paplāksne | 3D drukāta paplāksne https://github.com/aquaticus/piggymeter_case |
Vāks | 3D drukāts aizmugures vāks https://github.com/aquaticus/piggymeter_case |
CPU plate
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
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.
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.
Korpuss
Lejupielādējiet failus 3D printerim no https://github.com/aquaticus/piggymeter_case. Izmantojiet V5 versiju jaunākajam dizainam.
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
Montāža
Sakārtojiet komponentes korpusā šādā secībā:
- Magnēts
- Paplāksne
- Optiskais interfeiss
- CPU plate
- 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.
Sensori
Šis ir sensoru saraksts, kas definēts konfigurācijas failā.
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.
Nav pārraides no skaitītāja
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.