- name: encor_hybrid
  type: tcp
  host: 10.10.1.147
  port: 502
  delay: 1
  timeout: 3

  sensors:
    ## Inverter PV Port Info (Function Code 0x04)
    - name: "Corab PV1 Voltage"
      unique_id: sensor.corab_pv1_voltage
      unit_of_measurement: "V"
      slave: 1
      input_type: input
      address: 3        # 0x0003
      data_type: uint16
      scale: 0.1

    - name: "Corab PV2 Voltage"
      unique_id: sensor.corab_pv2_voltage
      unit_of_measurement: "V"
      slave: 1
      input_type: input
      address: 4        # 0x0004
      data_type: uint16
      scale: 0.1

    - name: "Corab PV1 Current"
      unique_id: sensor.corab_pv1_current
      unit_of_measurement: "A"
      slave: 1
      input_type: input
      address: 5        # 0x0005
      data_type: uint16
      scale: 0.1

    - name: "Corab PV2 Current"
      unique_id: sensor.corab_pv2_current
      unit_of_measurement: "A"
      slave: 1
      input_type: input
      address: 6        # 0x0006
      data_type: uint16
      scale: 0.1

    - name: "Corab PV1 Power"
      unique_id: sensor.corab_pv1_power
      unit_of_measurement: "W"
      slave: 1
      input_type: input
      address: 10       # 0x000A
      data_type: uint16

    - name: "Corab PV2 Power"
      unique_id: sensor.corab_pv2_power
      unit_of_measurement: "W"
      slave: 1
      input_type: input
      address: 11       # 0x000B
      data_type: uint16

    - name: "Corab MPPT Count"
      unique_id: sensor.corab_mppt_count
      unit_of_measurement: "count"
      slave: 1
      input_type: input
      address: 27       # 0x001B
      data_type: uint16

    ## Inverter Battery Port Info (Function Code 0x04)
    - name: "Corab BMS Connect State"
      unique_id: sensor.corab_battery_bms_connect_state
      unit_of_measurement: "state"
      slave: 1
      input_type: input
      address: 23       # 0x0017
      data_type: uint16

    - name: "Corab BDC Status Raw"
      unique_id: sensor.corab_battery_bdc_status_raw
      unit_of_measurement: ""
      slave: 1
      input_type: input
      address: 25       # 0x0019
      data_type: uint16

    - name: "Corab Battery Temperature"
      unique_id: sensor.corab_battery_temperature
      unit_of_measurement: "°C"
      slave: 1
      input_type: input
      address: 24       # 0x0018
      data_type: int16

    - name: "Corab Battery Voltage"
      unique_id: sensor.corab_battery_voltage
      unit_of_measurement: "V"
      slave: 1
      input_type: input
      address: 20       # 0x0014
      data_type: int16
      scale: 0.1

    - name: "Corab Battery Current"
      unique_id: sensor.corab_battery_current
      unit_of_measurement: "A"
      slave: 1
      input_type: input
      address: 21       # 0x0015
      data_type: int16
      scale: 0.1

    - name: "Corab Battery Power"
      unique_id: sensor.corab_battery_power
      unit_of_measurement: "W"
      slave: 1
      input_type: input
      address: 22       # 0x0016
      data_type: int16

    - name: "Corab Battery Capacity (%)"
      unique_id: sensor.corab_battery_capacity_percent
      unit_of_measurement: "%"
      slave: 1
      input_type: input
      address: 28       # 0x001C
      data_type: uint16

    - name: "Battery Capacity 0x03"
      unique_id: sensor.corab_battery_capacity_energy
      device_class: energy
      state_class: total
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input         # lub holding, jeśli dokumentacja wskazuje na rejestry konfiguracyjne – ale przy pomiarach real-time zazwyczaj to input
      address: 38               # odpowiada adresowi 0x0026
      data_type: uint16         # rejestr 16-bitowy
      scale: 0.001              # konwersja z Wh do kWh (np. 6000 Wh -> 6.0 kWh)
      precision: 1

    - name: "Corab BMS Charge Max Current"
      unique_id: sensor.corab_bms_charge_max_current
      unit_of_measurement: "A"
      slave: 1
      input_type: input
      address: 36       # 0x0024
      data_type: uint16
      scale: 0.1

    - name: "Corab BMS Discharge Max Current"
      unique_id: sensor.corab_bms_discharge_max_current
      unit_of_measurement: "A"
      slave: 1
      input_type: input
      address: 37       # 0x0025
      data_type: uint16
      scale: 0.1

    - name: "Corab Battery Temperature High"
      unique_id: sensor.corab_battery_temperature_high
      unit_of_measurement: "°C"
      slave: 1
      input_type: input
      address: 186      # 0x00BA
      data_type: int16
      scale: 0.1

    - name: "Corab Battery Temperature Low"
      unique_id: sensor.corab_battery_temperature_low
      unit_of_measurement: "°C"
      slave: 1
      input_type: input
      address: 187      # 0x00BB
      data_type: int16
      scale: 0.1

    - name: "Corab Cell Voltage High"
      unique_id: sensor.corab_cell_voltage_high
      unit_of_measurement: "V"
      slave: 1
      input_type: input
      address: 188      # 0x00BC
      data_type: uint16
      scale: 0.001

    - name: "Corab Cell Voltage Low"
      unique_id: sensor.corab_cell_voltage_low
      unit_of_measurement: "V"
      slave: 1
      input_type: input
      address: 189      # 0x00BD
      data_type: uint16
      scale: 0.001

    - name: "Corab BMS User SOC"
      unique_id: sensor.corab_bms_user_soc
      unit_of_measurement: "%"
      slave: 1
      input_type: input
      address: 190      # 0x00BE
      data_type: uint16

    - name: "Corab BMS User SOH"
      unique_id: sensor.corab_bms_user_soh
      unit_of_measurement: "%"
      slave: 1
      input_type: input
      address: 191      # 0x00BF
      data_type: uint16

    ## Inverter Grid Port Info (Function Code 0x04)
    - name: "Corab Grid Voltage"
      unique_id: sensor.corab_grid_voltage
      unit_of_measurement: "V"
      slave: 1
      input_type: input
      address: 0        # 0x0000
      data_type: uint16
      scale: 0.1

    - name: "Corab Grid Current"
      unique_id: sensor.corab_grid_current
      unit_of_measurement: "A"
      slave: 1
      input_type: input
      address: 1        # 0x0001
      data_type: int16
      scale: 0.1

    - name: "Corab Grid Power"
      unique_id: sensor.corab_grid_power
      unit_of_measurement: "W"
      slave: 1
      input_type: input
      address: 2        # 0x0002
      data_type: int16

    - name: "Corab Grid Frequency"
      unique_id: sensor.corab_grid_frequency
      unit_of_measurement: "Hz"
      slave: 1
      input_type: input
      address: 7        # 0x0007
      data_type: uint16
      scale: 0.01

    - name: "Corab Grid Status"
      unique_id: sensor.corab_grid_status
      unit_of_measurement: ""
      slave: 1
      input_type: input
      address: 26       # 0x001A
      data_type: uint16

    - name: "Corab Inverter Run Mode"
      unique_id: sensor.corab_inverter_run_mode
      unit_of_measurement: ""
      slave: 1
      input_type: input
      address: 9        # 0x0009
      data_type: uint16

    - name: "Corab Inverter Lock State"
      unique_id: sensor.corab_inverter_lock_state
      unit_of_measurement: ""
      slave: 1
      input_type: input
      address: 84       # 0x0054
      data_type: uint16

    ## Off-Grid Measurements (Function Code 0x04)
    - name: "Corab Off-Grid Voltage"
      unique_id: sensor.corab_off_grid_voltage
      unit_of_measurement: "V"
      slave: 1
      input_type: input
      address: 76       # 0x004C
      data_type: uint16
      scale: 0.1

    - name: "Corab Off-Grid Current"
      unique_id: sensor.corab_off_grid_current
      unit_of_measurement: "A"
      slave: 1
      input_type: input
      address: 77       # 0x004D
      data_type: int16
      scale: 0.1

    - name: "Corab Off-Grid Power"
      unique_id: sensor.corab_off_grid_power
      unit_of_measurement: "W"
      slave: 1
      input_type: input
      address: 78       # 0x004E
      data_type: int16

    - name: "Corab Off-Grid Frequency"
      unique_id: sensor.corab_off_grid_frequency
      unit_of_measurement: "Hz"
      slave: 1
      input_type: input
      address: 79       # 0x004F
      data_type: uint16
      scale: 0.01

    - name: "Corab On-Grid Run Time"
      unique_id: sensor.corab_on_grid_run_time
      unit_of_measurement: "h"
      slave: 1
      input_type: input
      address: 136      # 0x0088 (łącznie z 0x0089)
      data_type: int32
      scale: 0.1
      swap: word

    - name: "Corab Off-Grid Run Time"
      unique_id: sensor.corab_off_grid_run_time
      unit_of_measurement: "h"
      slave: 1
      input_type: input
      address: 138      # 0x008A (łącznie z 0x008B)
      data_type: int32
      scale: 0.1
      swap: word

    ## Inverter History Data (Function Code 0x04)
    - name: "Corab Today's Energy to Grid"
      unique_id: sensor.corab_energy_to_grid_today
      device_class: energy
      state_class: total
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 80       # 0x0050
      data_type: uint16
      scale: 0.1

    - name: "Corab Total Energy to Grid"
      unique_id: sensor.corab_energy_to_grid_total
      unit_of_measurement: "kWh"
      slave: 1
      input_type: holding
      address: 82       # 0x0052 (32-bit: 0x0052-0x0053)
      data_type: uint32
      scale: 0.1
      precision: 1
      swap: word

    - name: "Corab Today's Energy Charged"
      unique_id: sensor.corab_energy_charged_today
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 145      # 0x0091
      data_type: uint16
      scale: 0.1

    - name: "Corab Total Energy Charged"
      unique_id: sensor.corab_energy_charged_total
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 146      # 0x0092 (32-bit)
      data_type: uint32
      scale: 0.1

    - name: "Corab Off-Grid Yield Total"
      unique_id: sensor.corab_off_grid_yield_total
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 142      # 0x008E
      data_type: uint32
      scale: 0.1

    - name: "Corab Off-Grid Yield Today"
      unique_id: sensor.corab_off_grid_yield_today
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 144      # 0x0090
      data_type: uint16
      scale: 0.1

    ## Meter/CT Measurements (Function Code 0x04)
    - name: "Corab Energy to the Grid (Meter CT_1)"
      unique_id: sensor.corab_meter_ct1_energy_to_grid
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 72       # 0x0048
      data_type: uint32
      scale: 0.01

    - name: "Corab Energy from the Grid (Meter CT_1)"
      unique_id: sensor.corab_meter_ct1_energy_from_grid
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 74       # 0x004A
      data_type: uint32
      scale: 0.01

    - name: "Corab Energy to the Grid Today (Meter CT_1)"
      unique_id: sensor.corab_meter_ct1_energy_to_grid_today
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 152      # 0x0098
      data_type: uint32
      scale: 0.01

    - name: "Corab Energy from the Grid Today (Meter CT_1)"
      unique_id: sensor.corab_meter_ct1_energy_from_grid_today
      unit_of_measurement: "kWh"
      slave: 1
      input_type: input
      address: 154      # 0x009A
      data_type: uint16
      scale: 0.01
