Skip to content

ESPHome Komponent IEC 62056-21

IEC 62056-21 huwa standard internazzjonali għal protokoll biex jiskambja data ma' meters tal-utilità. L-aktar għall-elettriku imma wkoll għall-ilma, termali u meters oħra. Kien magħruf qabel bħala IEC 61107.

Il-komponent iec62056 jippermettilek taqra data minn kwalunkwe meter kompatibbli. Jeħtieġ port serjali u interface ottiku estern. L-iskambju tad-data juża kanal ottiku infra-aħmar. Meters kompatibbli huma mgħammra b'platt tal-metall tond karatteristiku b'żewġ elementi opto ġewwa. Il-protokoll jista' jintuża ma' saffi oħra ta' trasport, eż. ċirkwit kurrenti imma l-komponent ġie ttestjat biss bl-interface ottiku.

Jappoġġja 4 modi ta' IEC 62056-21: A, B, C, u D. Il-mod E mhuwiex appoġġjat.

Il-komponent ma jappoġġjax il-programmazzjoni. L-issettjar tal-parametri tal-konfigurazzjoni tal-meter jeħtieġ password sigrieta li tagħmilha impossibbli li tintuża minn utenti ordinarji.

L-interface fuq meter. Ċirku tal-metall għal manjet u żewġ elementi
ottiku ġewwa.

Hemm standards oħra ta' meters intelliġenti li jużaw l-istess interface ottiku. Għalkemm jaqsmu xi kunċetti komuni mhumiex kompatibbli.

Installazzjoni

Żid il-kodiċi li ġej fil-fajl tal-konfigurazzjoni YAML ta' ESPHome biex tirreferi għall-komponent estern.

yaml
external_components:
    # Komponent IEC62056
    - source: github://aquaticus/esphome-iec62056

Teorija tal-operazzjoni

Il-komponent jopera f'2 modi ewlenin:

  • Komunikazzjoni Bidirezzjonali ma' meter. F'dan il-mod, meter jibgħat data biss meta mitlub. Jeħtieġ riċevitur IR u trasmettitur. Dan huwa mod A, B u C skont IEC 62056-21.
  • Komunikazzjoni Unidirezzjonali, fejn meter jibgħat data lil sonda minn żmien għal żmien. Jeħtieġ biss riċevitur IR. Fit-terminoloġija ta' IEC 62056-21 huwa mod D.

Modi A, B, C

Il-komponent jaqra data għall-ewwel darba 15-il sekonda wara l-bidu. L-ewwel, jibgħat talba ta' identifikazzjoni f'300 bps. Il-meter jirritorna ir-rata massima ta' baud li jista' jimmaniġġja. Wara dan, ir-rata ta' baud tal-port serjali tinbidel għall-valur ipprovdut mill-meter jew konfigurata mill- għażla baud_rate_max. Il-meter jittrasmetti reġistri tad-data b'kodiċijiet OBIS assoċjati.

Jekk it-trasmissjoni falliet (checksum ħażin jew format invalidu), il-komponent se jipprova jaqra d-data mill-ġdid iżda din id-darba billi juża veloċità ta' trasmissjoni aktar bil-mod. Għal kull tentattiv mill-ġdid, il-veloċità titnaqqas. In-numru ta' tentattivi u dewmien jista' jiġi kkonfigurat.

Jekk il-meter huwa mħaddem bil-batterija, jista' jiġi applikat sekwenza speċjali ta' qawmien. Dan jiġri biss meta battery_meter huwa ssettjat għal True.

Mod D

Għal meters li joperaw fil-mod D, għandek bżonn biss riċevitur IR peress li t-trasmissjoni għal meter mhix appoġġjata. F'dan il-mod, il-meter jibgħat data kull ftit sekondi mingħajr ebda talba. Għandek tikkonfigura l-port serjali biex jaqbel mal-format tat-trasmissjoni tal-meter. B'differenza mill-modi A, B, u C li huma skoperti awtomatikament, il-Mod D għandu jiġi attivat manwalment billi tissettja mode_d=True fil-konfigurazzjoni tal-pjattaforma.

Mod E

Dan il-mod mhuwiex appoġġjat. Il-Mod E juża kodifikazzjoni binarja fuq link HDLC.

Il-komponent jipprova juża l-mod C għal meters li jirrapportaw il-mod E. Dan għandu jaħdem jekk il-meter jappoġġja kemm il-modi E kif ukoll C. Għal meters li jappoġġjaw biss il-mod E, il-qari mhuwiex possibbli.

Kodiċijiet OBIS

Il-kodiċi OBIS (Object Identification System) jidentifika l-qari differenti minn meter. Il-kodiċi jikkonsisti sa 6 sub-identifikaturi tal-grupp. Il-kodiċi huwa fformat bħal dan: A-B:C.D.E*F, fejn:

  • A - medju: 0=oġġetti astratti, 1=elettriku, 6=sħana, 7=gas, 8=ilma
  • B - kanal, 0=ebda kanal disponibbli
  • C - valur fiżiku, pereżempju kurrent, vultaġġ, temperatura.
  • D - tip ta' kejl,
  • E - tariffa, 0=total, 1=tariffa #1, 2=tariffa #2 u hekk
  • F - perjodu ta' fatturazzjoni

A, B, u F jistgħu jiġu omessi. Kodiċijiet jistgħu jużaw ċifri esadecimali, pereżempju, kodiċi 15.8.0 jista' jiġi rappreżentat bħala F.8.0.

Il-kodiċijiet huma standardizzati iżda apparati jibagħtu numru differenti ta' kodiċijiet. Biex tikseb lista ta' kodiċijiet appoġġjati mill-meter tiegħek, attiva l-log DEBUG għall-komponent iec62056 u osserva l-output tal-log. Eżempju ta' output:

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

Il-kodiċi OBIS tas-sensor għandu jaqbel eżattament ma' dak li huwa trasmess minn meter. Din hija l-parti qabel l-ewwel parentesi (.

Jekk kodiċi OBIS huwa biss żewġ ċifri, għandek tuża l-kwotazzjonijiet fil-fajl tal-konfigurazzjoni; pereżempju, "1.2" minflok sempliċement 1.2.

Għal lista ta' kodiċijiet OBIS għall-meters elettriċi, tista' żżur:

Ħardwer

Biex tikkomunika ma' meter trid twaħħal interface ottiku mal-port serjali. L-interface tikkonsisti f'LED infra-aħmar u fototransistor. Barra minn hekk, l-apparat irid ikun mgħammar b'magnetu ċirku biex iżommu allinjat mal-meter.

Jekk il-meter jopera f'modalità unidirezzjonali D, huwa meħtieġ biss fototransistor IR.

Sonda

L-istandard jiddefinixxi d-dimensjonijiet massimi tas-sonda li tista' tiġi mwaħħla ma' meter. Għandu jkun mgħammar b'magnetu peress li huwa l-uniku mod biex iżomm is-sonda f'pożizzjoni stabbli.

Dimensjonijiet tas-sonda ottika

Konfigurazzjoni

Biex tara d-dejta tal-meter f'Home Assistant trid tiddefinixxi sensor jew text sensor bil-kodiċi OBIS xieraq. Innota li l-meters jappoġġjaw settijiet differenti ta' kodiċijiet OBIS. B'mod awtomatiku, il-komponent ma jiddefinixxi l-ebda sensors.

Port serjali

Il-komponent jeħtieġ UART bus. Is-serjali għandu jiġi kkonfigurat bħala 7E1 fil-maġġoranza tal-każijiet. Meta mode_d=True ir-rata tal-baud għandha tiġi ssettjata għal valur appoġġjat mill-meter. Normalment 2400 jew 9600 bps. Għal modi oħra (mode_d=False) il-veloċità tat-trasmissjoni tiġi nnegozjata ma' meter. baud_rate huwa injorat u jista' jkun kwalunkwe valur.

yaml
# Example UART configuration entry
uart:
    rx_pin: GPIO21
    tx_pin: GPIO22
    baud_rate: 9600
    data_bits: 7
    parity: EVEN
    stop_bits: 1

WARNING

Għal ESP8266 huwa rakkomandat ħafna li tuża UART tal-ħardwer. UART tas-softwer ma jistax jimmaniġġja trasmissjonijiet aktar mgħaġġla minn 4800 bps.

Jista' jkollok bżonn tiddiżattiva l-logging jekk is-sonda ottika tkun konnessa mal-port serjali użat mill-komponent tal-logger.

yaml
# Issettja baud_rate għal 0 biex tiddiżattiva l-logging permezz ta' UART.
logger:
    baud_rate: 0

Pjattaforma

Biex tuża l-komponent trid tiddefinixxi sezzjoni tal-pjattaforma iec62056 fil-fajl tal-konfigurazzjoni. Tikkonsisti f'settings bażiċi.

Varjabbli tal-konfigurazzjoni

  • update_interval (Optionali, Time): L-intervall biex taqra d-data minn meter. Default huwa 15min. never jiddiżattiva aġġornamenti. F'dak il-każ, għandu jintuża swiċċ biex jattiva l-qari. Biex tikseb qari kontinwu uża valur żgħir bħal 1s.
  • baud_rate_max (Optionali, int): Jillimita l-veloċità massima tat-trasmissjoni għall-valur speċifikat. B'mod default, huwa stabbilit għal 9600 peress li jipprovdi konnessjoni stabbli. Biex tiddiżattivah, issettjah għal 0. B'dan il-mod tista' tuża l-veloċità massima possibbli ta' baud ta' 19200 jekk il-meter jappoġġjaha. Għal ESP8266 uża l-UART tas-softwer issettjat għal 4800 jew inqas.
  • receive_timeout (Optionali, Time): Ħin massimu li l-komponent jistenna għad-data minn meter qabel ma jirrapporta żball ta' trasmissjoni. Default huwa 3s.
  • battery_meter (Optionali, boolean): Issettja għal true jekk meter huwa mħaddem bil-batterija. B'dan il-mod se jintuża sekwenza speċjali ta' power-up.
  • retry_delay (Optionali, Time): F'każ ta' falliment tat-trasmissjoni, ħin biex tistenna qabel ma terġa' tipprova t-trasmissjoni. Default huwa 15s.
  • retry_counter_max (Optionali, int): F'każ ta' falliment tat-trasmissjoni, in-numru massimu ta' tentattivi mill-ġdid. Default huwa 2.
  • uart_id (Optionali, ID: Speċifika manwalment l-ID tal- Komponent UART jekk trid tuża bosta bus UART.
  • mode_d (Optionali, boolean): Issettja għal True jekk meter jibgħat data kull ftit sekondi. Dan iġiegħel lill-komponent jopera f'modalità D. F'din il-modalità data qatt ma tiġi trasmessa lil meter. Jekk issettjat, kwalunkwe settings oħra ħlief receive_timeout jiġu injorati. Tinsiex issettja r-rata ta' baud tal-UART li l-meter qed juża. Jekk m'intix ċert ipprova 2400 7E1 jew 9600 7E1.

WARNING

Il-meters li jaħdmu bil-batterija tipikament jillimitaw in-numru ta' qari biex jippreservaw l-enerġija, eż. għal 4 qari kuljum. Jekk meter ma jimponix il-limitu, qari frekwenti jista' jnaqqas b'mod sinifikanti l-ħajja tal-batterija.

Sensor

Is-sensor jirrapporta l-ewwel valur bejn il-parentesi mir-rekord. Għad-data li ġejja

log
1-0:15.6.0(00000006000.385*kW)(2000-01-01 20:10:30)

il-valur tas-sensor huwa 6000.385. Biex tikseb it-tieni valur (data/ħin f'dan l-eżempju) uża Text Sensor.

Is-sensor jappoġġja biss valuri deċimali. Jekk ir-rekord fih data f'xi format ieħor trid tuża Text Sensor u fakultattivament lambda biex tikkonvertiha f'numru.

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

Varjabbli tal-konfigurazzjoni

  • obis (Meħtieġ): Kodiċi OBIS.
  • L-għażliet l-oħra kollha minn Sensor.

Text Sensor

It-text sensor jipprovdi data tal-qari bħala test. B'kuntrast mas-Sensor, tista' tagħżel liema parti tal-qari tiġi rrappurtata u anke tibgħat ir-rekord tad-data kollu lura lil Home Assistant.

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

Varjabbli tal-konfigurazzjoni

  • obis (Meħtieġ): Kodiċi OBIS. Tista' tiddefinixxi diversi text sensors bl-istess OBIS iżda b'grupp differenti.
  • group (Fakultattiv, int): Grupp tal-valur, 0, 1, jew 2. Default huwa 1. Jekk issettjat għal 0, ir-rekord tad-data kollu jiġi rrappurtat inkluż il-kodiċi OBIS. 1 jirrapporta l-ewwel valur, 2 it-tieni wieħed.
  • L-għażliet l-oħra kollha huma minn Text Sensor.

Konverżjoni tad-data

Jekk meter jirrapporta data bħala valur mhux deċimali tista' tikkonvertiha awtomatikament billi tuża template sensor u lambda. Ejja nassumu li l-meter jibgħat rekord bħal dan li ġej b'data kodifikata f'hex:

text
0-0:96.8.0*255(ABCDEF00)

L-ewwel, oħloq template sensor li se jippubblika data bħala valur deċimali.

yaml
sensor:
  - platform: template
    id: hex_to_dec_sensor
    name: "Converted hexadecimal number"

Issa oħloq text sensor li se jirċievi data bħala string, jikkonvertiha f'deċimali u jippubblikaha.

yaml
text_sensor:
  - platform: iec62056
    id: hex_sensor
    obis: 0-0:96.8.0*255
    name: Hex content
    internal: True
    on_value:
      lambda: |-
        std::string hex_str = id(hex_sensor).state;
        uint32_t dec=std::stoul(hex_str, nullptr, 16);
        ESP_LOGI("iec62056.component", "Converted HEX '%s' to %u decimal", hex_str.c_str(), dec);
        id(hex_to_dec_sensor).publish_state((float)dec);

Kull darba li s-sensor tat-test jirċievi valur ġdid, jikkonvertih għal deċimali u jippubblikah billi juża s-sensor bl-id hex_to_dec_sensor. Il-bandiera internal tipprevjeni li s-sensor ikun viżibbli f'Home Assistant. Fil-log għandek tara:

log
[I][iec62056.component:127]: Converted HEX 'ABCDEF00' to 2882400000 decimal

L-istess riżultati jistgħu jinkisbu billi jintużaw lambdas ta' Home Assistant. F'dan l-iskop, is-sensor tat-test jippubblika valur esadecimali u s-sensor tat-template ta' Home Assistant jagħmel il-konverżjoni.

Switch

Is-switch jipprovdi l-abbiltà li jqanqal il-qari fuq talba. Meta l-istat jinbidel minn OFF għal ON il-komponent jibda t-trasmissjoni tad-data minn meter. Tista' tuża s-switch fl-awtomazzjoni.

Il-varjabbli tal-konfigurazzjoni minn Switch jistgħu jintużaw.

yaml
# Sample switch configuration
switch:
  - platform: iec62056
    name: 'Readout Trigger'

Ma tistax tqanqal il-qari fil-mod D.

Sensor binarju

Imwaqqaf għal ON meta tibda t-trasmissjoni għal meter. OFF meta t-trasmissjoni tkun lesta.

Tista' tuża l-varjabbli kollha tal-konfigurazzjoni minn Binary Sensor.

yaml
# Sample automation to turn LED on when data read from a meter
switch:
  - platform: gpio
    pin: GPIO2
    name: Internal LED
    id: led_switch
    internal: True

binary_sensor:
  - platform: iec62056
    id: meter_status
    name: Meter Connection Status
    on_press:
      then:
        - switch.turn_on: led_switch
    on_release:
      then:
        - switch.turn_off: led_switch

Soluzzjoni tal-Problemi

  • Kun żgur li l-prob huwa allinjat sew mal-elementi ottiku fuq il-meter.
  • Il-meters huma ġeneralment installati f'żoni mhux ħafna nodfa. Jista' jkollok bżonn tneħħi t-trab mill-interface ottiku minn żmien għal żmien.
  • Jekk tiltaqa' ma' żbalji ta' trasmissjoni u checksum BCC naqqas ir-rata tal-baud billi tuża s-setting baud_rate_max.
  • Jekk it-tagħmir tiegħek jimmaniġġja diversi sensors li jqattgħu ħafna ħin fil- loop ta' aġġornament jista' jkollok bżonn iżżid id-daqs tal-buffer tal-port serjali. Speċjalment jekk tinnota problemi ta' trasmissjoni meta sensors addizzjonali jkunu attivati iżda mhux meta jkunu diżattivati.

Ara wkoll