ESPHome IEC 62056-21 Komponens
Az IEC 62056-21 egy nemzetközi szabvány, amely protokollt biztosít az adatok cseréjére közüzemi mérőkkel. Elsősorban villamosenergia-, de víz-, hő- és egyéb mérőkhöz is használható. Korábban IEC 61107 néven volt ismert.
Az iec62056
komponens lehetővé teszi, hogy adatokat olvasson bármely kompatibilis mérőről. Ehhez szükség van egy soros portra és egy külső optikai interfészre. Az adatcsere infravörös optikai csatornán keresztül történik. A kompatibilis mérők egy jellegzetes kerek fémlemezzel vannak felszerelve, amelyben két opto-elem található. A protokoll más szállítási rétegekkel is használható, például áramhurokkal, de a komponenst csak az optikai interfésszel tesztelték.
Támogatja az IEC 62056-21 négy módját: A, B, C és D. Az E mód nem támogatott.
A komponens nem támogatja a programozást. A mérő konfigurációs paramétereinek beállítása titkos jelszót igényel, ami lehetetlenné teszi a hétköznapi felhasználók számára.
Vannak más okosmérő szabványok, amelyek ugyanazt az optikai interfészt használják. Bár néhány közös koncepciót megosztanak, nem kompatibilisek.
Telepítés
Adja hozzá a következő kódot az ESPHome YAML konfigurációs fájlhoz, hogy hivatkozzon a külső komponensre.
yaml
external_components:
# IEC62056 komponens
- source: github://aquaticus/esphome-iec62056
Működési elv
A komponens két fő módban működik:
- Kétirányú kommunikáció a mérővel. Ebben a módban a mérő csak kérésre küld adatokat. Ehhez IR vevő és adó szükséges. Ez az A, B és C mód az IEC 62056-21 szerint.
- Egyirányú kommunikáció, ahol a mérő időnként adatokat küld egy szondának. Ehhez csak IR vevő szükséges. Az IEC 62056-21 terminológiában ez a D mód.
A, B, C módok
A komponens először 15 másodperccel az indítás után olvas adatokat. Először egy azonosítási kérelmet küld 300 bps sebességgel. A mérő visszaküldi a maximális baud sebességet, amit kezelni tud. Ezt követően a soros port baud sebessége a mérő által megadott értékre vagy az baud_rate_max
opcióval konfigurált értékre változik. A mérő adatregisztereket továbbít a hozzájuk tartozó OBIS kódokkal.
Ha az átvitel sikertelen (rossz ellenőrzőösszeg vagy érvénytelen formátum), a komponens megpróbálja újraolvasni az adatokat, de ezúttal lassabb átviteli sebességgel. Minden újrapróbálkozásnál a sebesség csökken. Az újrapróbálkozások és késleltetések száma konfigurálható.
Ha a mérő akkumulátorról működik, egy speciális ébresztési szekvencia alkalmazható. Ez csak akkor történik meg, ha a battery_meter
True
értékre van állítva.
D mód
A D módban működő mérők esetében csak egy IR vevőre van szükség, mivel a mérő felé történő átvitel nem támogatott. Ebben a módban a mérő néhány másodpercenként küld adatokat kérés nélkül. A soros portot úgy kell konfigurálni, hogy megfeleljen a mérő átvitel formátumának. Ellentétben az A, B és C módokkal, amelyeket automatikusan észlelnek, a D módot manuálisan kell engedélyezni a mode_d=True
beállításával a platform konfigurációjában.
E mód
Ez a mód nem támogatott. Az E mód bináris kódolást használ HDLC kapcsolaton keresztül.
A komponens megpróbálja a C módot használni az E módot jelentő mérőknél. Ez működhet, ha a mérő mind az E, mind a C módot támogatja. Azoknál a mérőknél, amelyek csak az E módot támogatják, az olvasás nem lehetséges.
OBIS kódok
Az OBIS (Object Identification System) kód azonosítja a mérő különböző leolvasásait. A kód legfeljebb 6 csoport al-azonosítóból áll. A kód formátuma a következő: A-B:C.D.E*F
, ahol:
A
- közeg: 0=absztrakt objektumok, 1=elektromosság, 6=hő, 7=gáz, 8=vízB
- csatorna, 0=nincs elérhető csatornaC
- fizikai érték, például áram, feszültség, hőmérséklet.D
- mérési típus,E
- tarifa, 0=összesen, 1=tarifa #1, 2=tarifa #2 és így továbbF
- számlázási időszak
A
, B
és F
elhagyható. A kódok használhatnak hexadecimális számjegyeket, például a 15.8.0
kód F.8.0
-ként is megjelenhet.
A kódok szabványosítottak, de az eszközök különböző számú kódot küldenek. A mérő által támogatott kódok listájának megtekintéséhez engedélyezze a DEBUG
naplózást az iec62056
komponenshez, és figyelje a napló kimenetét. Példa kimenet:
log
[10:50:12][D][iec62056.component:416]: Data: '1-0:15.8.1(00000009999.567*kWh)'
[10:50:12][D][iec62056.component:416]: Data: '1-0:15.8.2(00000000000.000*kWh)'
[10:50:12][D][iec62056.component:416]: Data: '1-0:15.8.3(00000000000.000*kWh)'
[10:50:12][D][iec62056.component:416]: Data: '1-0:15.8.4(00000000000.000*kWh)'
TIP
Az érzékelő OBIS kódjának pontosan meg kell egyeznie azzal, amit a mérő továbbít. Ez a rész az első zárójel (
előtt található.
Ha egy OBIS kód csak két számjegyből áll, idézőjelek közé kell tenni a konfigurációs fájlban; például "1.2"
ahelyett, hogy csak 1.2
.
Az elektromos mérőkhöz tartozó OBIS kódok listáját itt találhatja:
- https://www.promotic.eu/en/pmdoc/Subsystems/Comm/PmDrivers/IEC62056_OBIS.htm
- https://onemeter.com/docs/device/obis/#index
Hardver
A mérővel való kommunikációhoz egy optikai interfészt kell csatlakoztatni a soros porthoz. Az interfész egy infravörös LED-ből és fototranzisztorból áll. Ezenkívül az eszközt gyűrűs mágnessel kell felszerelni, hogy a mérővel egy vonalban maradjon.
Ha a mérő egyirányú D módban működik, csak egy IR fototranzisztorra van szükség.
Szonda
A szabvány meghatározza a mérőhöz csatlakoztatható szonda maximális méreteit. Mágnessel kell felszerelni, mivel ez az egyetlen módja annak, hogy a szonda stabil helyzetben maradjon.
Konfiguráció
Ahhoz, hogy a mérő adatait megtekinthesse a Home Assistantban, meg kell határoznia egy szenzort vagy szöveges szenzort a megfelelő OBIS kóddal. Vegye figyelembe, hogy a mérők különböző OBIS kód készleteket támogatnak. Alapértelmezés szerint a komponens nem határoz meg szenzorokat.
Soros port
A komponens UART buszt igényel. A soros portot a legtöbb esetben 7E1 módba kell állítani. Ha mode_d=True
, a baud rate-et a mérő által támogatott értékre kell állítani. Általában 2400 vagy 9600 bps. Más módok esetén (mode_d=False
) az átvitel sebességét a mérővel egyeztetik. A baud_rate
figyelmen kívül van hagyva, és bármilyen érték lehet.
yaml
# Example UART configuration entry
uart:
rx_pin: GPIO21
tx_pin: GPIO22
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
WARNING
ESP8266 esetén erősen ajánlott a hardveres UART használata. A szoftveres UART nem képes 4800 bps-nél gyorsabb átviteleket kezelni.
Lehet, hogy le kell tiltania a naplózást, ha az optikai szonda a naplózó komponens által használt soros portra van csatlakoztatva.
yaml
# Állítsa a baud_rate-et 0-ra, hogy letiltsa a naplózást az UART-on keresztül.
logger:
baud_rate: 0
Platform
A komponens használatához meg kell határoznia az iec62056
platform szekciót a konfigurációs fájlban. Ez alapvető beállításokból áll.
yaml
# Example platform configuration entry for bidirectional communication
iec62056:
update_interval: 60s
baud_rate_max: 9600
battery_meter: False
yaml
# Példa platform konfigurációs bejegyzés egyirányú kommunikációhoz
iec62056:
mode_d: True
Konfigurációs változók
- update_interval (Opcionális, Time): Az az időintervallum, amely alatt az adatokat leolvassuk a mérőóráról. Alapértelmezés szerint
15min
. Anever
letiltja a frissítéseket. Ebben az esetben egy kapcsolót kell használni az olvasás indításához. Folyamatos leolvasáshoz használjon kis értéket, például 1s. - baud_rate_max (Opcionális, int): Korlátozza a maximális átviteli sebességet a megadott értékre. Alapértelmezés szerint
9600
, mivel ez stabil kapcsolatot biztosít. A letiltáshoz állítsa0
-ra. Így használhatja a maximálisan lehetséges19200
baud sebességet, ha a mérőóra támogatja. ESP8266 esetén használja a szoftveres UART-ot4800
vagy alacsonyabb értékre állítva. - receive_timeout (Opcionális, Time): Maximális idő, amíg a komponens vár az adatokra a mérőórától, mielőtt átvitel hibát jelentene. Alapértelmezés szerint
3s
. - battery_meter (Opcionális, logikai): Állítsa igazra, ha a mérőóra akkumulátoros. Így speciális bekapcsolási sorozatot alkalmaz.
- retry_delay (Opcionális, Time): Átvitel hiba esetén az idő, amíg várakozik az újrapróbálkozás előtt. Alapértelmezés szerint
15s
. - retry_counter_max (Opcionális, int): Átvitel hiba esetén az újrapróbálkozások maximális száma. Alapértelmezés szerint
2
. - uart_id (Opcionális, ID): Kézzel adja meg az UART komponens azonosítóját, ha több UART buszt szeretne használni.
- mode_d (Opcionális, logikai): Állítsa
True
-ra, ha a mérőóra néhány másodpercenként küld adatokat. Ez kényszeríti a komponenst, hogy D módban működjön. Ebben a módban soha nem küld adatokat a mérőórának. Ha be van állítva, minden más beállítást, kivéve areceive_timeout
-ot, figyelmen kívül hagy. Ne felejtse el beállítani a mérőóra által használt UART baud sebességet. Ha nem biztos benne, próbálja meg a2400 7E1
vagy9600 7E1
értéket.
WARNING
Az elemmel működő mérők általában korlátozzák a leolvasások számát az energia megőrzése érdekében, például napi 4 leolvasásra. Ha egy mérő nem szab korlátot, a gyakori leolvasások jelentősen csökkenthetik az elem élettartamát.
Érzékelő
Az érzékelő a rekordból az első zárójelben lévő értéket jelenti. Az alábbi adatok esetén
log
1-0:15.6.0(00000006000.385*kW)(2000-01-01 20:10:30)
az érzékelő értéke 6000.385
. A második érték (ebben az esetben dátum/idő) megszerzéséhez használjon Szöveg Érzékelőt.
Az érzékelő csak decimális értékeket támogat. Ha a rekord bármilyen más formátumú adatot tartalmaz, akkor Szöveg Érzékelőt kell használnia, és opcionálisan lambdát, hogy számra konvertálja.
yaml
# Example sensor configuration entries
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
- platform: iec62056
name: Instantaneous current in phase L1
obis: 1-0:31.7.0
unit_of_measurement: A
accuracy_decimals: 2
device_class: current
state_class: measurement
- platform: iec62056
name: Instantaneous voltage in phase L1
obis: 1-0:32.7.0
unit_of_measurement: V
accuracy_decimals: 1
device_class: voltage
state_class: measurement
- platform: iec62056
name: Absolute active instantaneous power
obis: 1-0:15.7.0
unit_of_measurement: kW
accuracy_decimals: 3
device_class: energy
state_class: measurement
Konfigurációs változók
- obis (Kötelező): OBIS kód.
- Minden más opció a Érzékelő részből.
Szöveg Érzékelő
A szöveg érzékelő szövegként biztosítja a leolvasott adatokat. Az Érzékelővel ellentétben kiválaszthatja, hogy a leolvasás melyik részét jelenti, sőt az egész adatrekordot visszaküldheti a Home Assistant-nek.
yaml
# Sample text sensor configuration
# Data record:
# 1-0:15.6.0(00000006000.385*kW)(2000-01-01 20:10:30)
text_sensor:
- platform: iec62056
obis: 1-0:15.6.0
group: 2 # "2000-01-01 20:10:30"
name: Date time
- platform: iec62056
obis: 1-0:15.6.0
group: 1 # "00000006000.385"
name: Value
- platform: iec62056
obis: 1-0:15.6.0
group: 0 # "1-0:15.6.0(00000006000.385*kW)(2000-01-01 20:10:30)"
name: The entire record
Konfigurációs változók
- obis (Kötelező): OBIS kód. Több szöveg érzékelőt is meghatározhat ugyanazzal az OBIS-szal, de különböző csoporttal.
- group (Opcionális, int): Értékcsoport,
0
,1
vagy2
. Alapértelmezett érték1
. Ha0
-ra van állítva, az egész adatrekord jelentve van, beleértve az OBIS kódot.1
az első értéket jelenti,2
a másodikat. - Minden más opció a Szöveg Érzékelő részből.
Adatkonverzió
Ha egy mérő nem decimális értékként jelenti az adatokat, automatikusan konvertálhatja azokat egy sablon érzékelő és lambda segítségével. Tegyük fel, hogy a mérő az alábbihoz hasonló rekordot küld hexadecimális kódolású adatokkal:
text
0-0:96.8.0*255(ABCDEF00)
Először hozzon létre egy sablon érzékelőt, amely decimális értékként fogja közzétenni az adatokat.
yaml
sensor:
- platform: template
id: hex_to_dec_sensor
name: "Converted hexadecimal number"
Most hozzon létre egy szöveg érzékelőt, amely sztringként fogadja az adatokat, konvertálja azokat decimálissá és közzéteszi.
Minden alkalommal, amikor a szövegszenzor új értéket kap, átalakítja azt decimálissá, és közzéteszi a hex_to_dec_sensor
azonosítójú szenzor segítségével. Az internal
jelző megakadályozza, hogy a szenzor látható legyen a Home Assistantban. A naplóban a következőt kell látnia:
A Home Assistant lambdák használatával ugyanazok az eredmények érhetők el. Ebben az esetben a szövegszenzor hexadecimális értéket publikál, és a Home Assistant sablonszenzor végzi az átalakítást.
Kapcsoló
A kapcsoló lehetőséget biztosít az olvasás kérésre történő indítására. Amikor az állapot OFF
-ról ON
-ra változik, a komponens elindítja az adatok átvitelét a mérőtől. A kapcsolót automatizálásban is használhatja.
A Kapcsoló konfigurációs változói használhatók.
Nem indíthatja el az olvasást D módban.
Bináris szenzor
ON
állapotra állítva, amikor az átvitel a mérőhöz megkezdődik. OFF
, amikor az átvitel befejeződik.
A Bináris Szenzor összes konfigurációs változója használható.
Hibakeresés
- Győződjön meg arról, hogy a szonda megfelelően van igazítva a mérő optikai elemeihez.
- A mérőket általában nem túl tiszta területeken telepítik. Időről időre el kell távolítania a port az optikai interfészről.
- Ha átvitel és BCC ellenőrzőösszeg hibákat tapasztal, csökkentse az adatátviteli sebességet a
baud_rate_max
beállítással. - Ha az eszköze több szenzort kezel, amelyek sok időt töltenek a frissítési ciklusban, előfordulhat, hogy növelnie kell a soros port puffer méretét. Különösen, ha átvitel problémákat észlel, amikor további szenzorok engedélyezve vannak, de nem, amikor le vannak tiltva.