Skip to content

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.

Az interfész egy mérőn. Fémgyűrű mágneshez és két optikai elem belül.

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íz
  • B - csatorna, 0=nincs elérhető csatorna
  • C - 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ább
  • F - 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:

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.

Optikai szonda méretei

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. A never 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ítsa 0-ra. Így használhatja a maximálisan lehetséges 19200 baud sebességet, ha a mérőóra támogatja. ESP8266 esetén használja a szoftveres UART-ot 4800 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 a receive_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 a 2400 7E1 vagy 9600 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 vagy 2. Alapértelmezett érték 1. Ha 0-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.

Lásd még