Schneider Electric Solar TCP Modbus Integration

Just sharing information for those that may have SE solar equipment. Here are modus config sheets for SE Conext devices , including DEC addresses for use with the HA modbus integration.

SE-Conext-Modbus-Maps

2 Likes

could you share the yaml? would love to get that going on my system

Example configurational.yaml entries

sensor: !include sensors.yaml

modbus:

  • name: conext_gateway
    type: tcp
    host: 192.168.x.xx
    port: 503
    delay: 2
    timeout: 15
    sensors:
    #conext_gateway device over Modbus: CSW2524 0 - Bus ID:2, Bus address:1, Modbus Slave Address (Port 503): 90
    • name: ‘SW Device State’
      data_type: uint16
      input_type: input
      slave: 90
      address: 65
    • name: ‘SW Inverter Enabled’
      data_type: uint16
      input_type: input
      slave: 90
      address: 67
    • name: ‘SW Charger Enabled’
      data_type: uint16
      input_type: input
      slave: 90
      address: 68
    • name: ‘SW Active Faults’
      data_type: uint16
      input_type: input
      slave: 90
      address: 69
    • name: ‘SW Active Warnings’
      data_type: uint16
      input_type: input
      slave: 90
      address: 70
    • name: ‘SW Inverter Status’
      data_type: uint16
      input_type: input
      slave: 90
      address: 75
    • name: ‘SW Battery Current’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 80
      unit_of_measurement: A
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘SW Battery Power’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 82
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘SW Battery Temperature’
      data_type: uint16
      input_type: input
      slave: 90
      address: 84
      unit_of_measurement: degC
      scale: 0.01
      offset: -273
      precision: 2
    • name: ‘SW Charger Status’
      data_type: uint16
      input_type: input
      slave: 90
      address: 85
    • name: ‘SW AC1 Frequency’
      data_type: uint16
      input_type: input
      slave: 90
      address: 95
      unit_of_measurement: Hz
      scale: 0.01
      offset: 0
      precision: 2
    • name: ‘SW AC1 Voltage’
      data_type: uint32
      input_type: input
      count: 2
      slave: 90
      address: 96
      unit_of_measurement: V
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘SW AC1 Input Current’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 98
      unit_of_measurement: A
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘SW AC1 Input Power’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 100
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘SW Load AC Voltage’
      data_type: uint32
      input_type: input
      count: 2
      slave: 90
      address: 120
      unit_of_measurement: V
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘SW Load AC Current’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 130
      unit_of_measurement: A
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘SW Load AC Power’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 132
      unit_of_measurement: W
      scale: 1
      offset: 0
      precision: 0
    • name: ‘SW Load AC Frequency’
      data_type: uint16
      input_type: input
      slave: 90
      address: 138
      unit_of_measurement: Hz
      scale: 0.01
      offset: 0
      precision: 2
    • name: ‘SW Energy From Battery This Hour’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 144
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 0
    • name: ‘SW Battery Discharge Active This Hour’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 146
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 0
    • name: ‘SW Operating Mode’
      data_type: uint16
      input_type: input
      slave: 90
      address: 243
    • name: ‘SW AC1 Net Power’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 346
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘SW AC1 Net Current’
      data_type: int32
      input_type: input
      count: 2
      slave: 90
      address: 344
      unit_of_measurement: A
      scale: 0.001
      offset: 0
      precision: 3
      #conext_gateway device over Modbus: MPPT60 0 - Bus ID:2, Bus address:2, Modbus Slave Address (Port 503): 30
    • name: ‘MPPT Device State’
      data_type: uint16
      input_type: input
      slave: 30
      address: 64
    • name: ‘MPPT Active Faults’
      data_type: uint16
      input_type: input
      slave: 30
      address: 68
    • name: ‘MPPT Active Warnings’
      data_type: uint16
      input_type: input
      slave: 30
      address: 69
    • name: ‘MPPT Charger Enabled Status’
      data_type: uint16
      input_type: input
      slave: 30
      address: 65
    • name: ‘MPPT Charge Mode Status’
      data_type: uint16
      input_type: input
      slave: 30
      address: 67
    • name: ‘MPPT PV Power’
      data_type: int32
      input_type: input
      count: 2
      slave: 30
      address: 80
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘MPPT PV Voltage’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 76
      unit_of_measurement: V
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT PV Current’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 78
      unit_of_measurement: A
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT DC Output Voltage’
      data_type: int32
      input_type: input
      count: 2
      slave: 30
      address: 88
      unit_of_measurement: V
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT DC Output Current’
      data_type: int32
      input_type: input
      count: 2
      slave: 30
      address: 90
      unit_of_measurement: A
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT Energy From PV This Hour’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 102
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT PV Input Active This Hour’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 104
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT Energy From PV Today’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 106
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT PV Input Active Today’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 106
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT Energy From PV This Week’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 110
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT PV Input Active This Week’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 112
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT Energy From PV This Month’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 114
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT PV Input Active This Month’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 116
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT Energy From PV This Year’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 118
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT PV Input Active This Year’
      data_type: uint32
      input_type: input
      count: 2
      slave: 30
      address: 120
      unit_of_measurement: kWh
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘MPPT Operating Mode’
      data_type: uint16
      input_type: holding
      slave: 30
      address: 172
      #conext_gateway device over Modbus: BattMon 0 - Bus ID:2, Bus address:3, Modbus Slave Address (Port 503): 190
    • name: ‘BM Device State’
      data_type: uint16
      input_type: input
      count: 1
      slave: 190
      address: 64
      scale: 1.0
      offset: 0
      precision: 1
    • name: ‘BM DC Source ID’
      data_type: uint32
      input_type: input
      count: 2
      slave: 190
      address: 68
      scale: 1.0
      offset: 0
      precision: 1
    • name: ‘BM Battery Voltage’
      data_type: uint32
      input_type: input
      unit_of_measurement: V
      count: 2
      slave: 190
      address: 70
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘BM Battery Current’
      data_type: int32
      input_type: input
      unit_of_measurement: A
      count: 2
      slave: 190
      address: 72
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘BM Battery Temperature’
      data_type: uint32
      input_type: input
      unit_of_measurement: degC
      count: 2
      slave: 190
      address: 74
      scale: 0.01
      offset: -273.0
      precision: 2
    • name: ‘BM Battery State of Charge’
      data_type: uint32
      input_type: input
      unit_of_measurement: “%”
      count: 2
      slave: 190
      address: 76
      scale: 1.0
      offset: 0
      precision: 1
    • name: ‘BM Battery State of Health’
      data_type: uint32
      input_type: input
      unit_of_measurement: “%”
      count: 2
      slave: 190
      address: 78
      scale: 1.0
      offset: 0
      precision: 1
    • name: ‘BM Battery Percent Over Charge’
      data_type: uint32
      input_type: input
      unit_of_measurement: “%”
      count: 2
      slave: 190
      address: 80
      scale: 1.0
      offset: 0
      precision: 1
    • name: ‘BM Battery Midpoint 1 Voltage’
      data_type: uint32
      input_type: input
      unit_of_measurement: V
      count: 2
      slave: 190
      address: 82
      scale: 0.001
      offset: 0
      precision: 3
    • name: ‘BM Battery Capacity Remaining’
      data_type: uint32
      input_type: input
      unit_of_measurement: Ah
      count: 2
      slave: 190
      address: 88
      scale: 1.0
      offset: 0
      precision: 1
    • name: ‘BM Battery Capacity Removed’
      data_type: uint32
      input_type: input
      unit_of_measurement: Ah
      count: 2
      slave: 190
      address: 90
      scale: 1.0
      offset: 0
      precision: 1
      #conext_gateway device over Modbus: Modbus Slave Address (Port 503): 1
    • name: ‘GW PV Harvest Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 68
      unit_of_measurement: W
      scale: 1
      offset: 0
      precision: 0
    • name: ‘GW DC Charging Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 70
      unit_of_measurement: W
      scale: 1
      offset: 0
      precision: 0
    • name: ‘GW DC Inverting Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 74
      unit_of_measurement: W
      scale: 1
      offset: 0
      precision: 0
    • name: ‘GW Grid Input Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 82
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW Grid Output Power’
      data_type: uint32
      count: 2
      slave: 1
      address: 88
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW Load Power (In/Out)’
      data_type: int32
      input_type: input
      count: 2
      slave: 1
      address: 94
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW Load Output Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 96
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW Load In Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 98
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW Load In Power’
      data_type: int32
      input_type: input
      count: 2
      slave: 1
      address: 98
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW Load Power’
      data_type: int32
      input_type: input
      count: 2
      slave: 1
      address: 102
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW CSW AC1 Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 130
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW CSW AC Out Power’
      data_type: int32
      input_type: input
      count: 2
      slave: 1
      address: 136
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW MPPT PV Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 144
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W
    • name: ‘GW MPPT Battery Power’
      data_type: uint32
      input_type: input
      count: 2
      slave: 1
      address: 148
      scale: 1
      offset: 0
      precision: 0
      device_class: energy
      unit_of_measurement: W

#data_type: int16, uint32, float, string, custom (default int)
#count: 1, 2 (default 1 for 16-bit register, 2 for 32-bit register)
#input_type: holding, input (default holding)
#CSW2524 0 - Bus ID:2, Bus Address:1, Modbus Slave Address (Port 503): 90
#MPPT60 0 - Bus ID:2, Bus Address:2, Modbus Slave Address (Port 503): 30
#BattMon 0 - Bus ID:2, Bus Address:3, Modbus Slave Address (Port 503): 190
#XW SCP 0 - Bus ID:2, Bus Address:0, Modbus Slave Address (Port 503): 70
#Conext Gateway xxx.xxx.xxx.xxx, Port 503

Example sensors.yaml entries

#sensors.yaml

#conext_gateway device over Modbus

  • platform: template
    sensors:
    sw_operating_mode:
    friendly_name: “Operating Mode”
    value_template: >-
    {% if is_state(‘sensor.conext_sw_operating_mode’, ‘2’) %}
    Standby
    {% elif is_state(‘sensor.conext_sw_operating_mode’, ‘3’) %}
    Operating
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    sw_device_state:
    friendly_name: “Device State”
    value_template: >-
    {% if is_state(‘sensor.conext_sw_device_state’, ‘0’) %}
    Hibernate
    {% elif is_state(‘sensor.conext_sw_device_state’, ‘1’) %}
    Power Save
    {% elif is_state(‘sensor.conext_sw_device_state’, ‘2’) %}
    Safe Mode
    {% elif is_state(‘sensor.conext_sw_device_state’, ‘3’) %}
    Operating
    {% elif is_state(‘sensor.conext_sw_device_state’, ‘4’) %}
    Diagnostic Mode
    {% elif is_state(‘sensor.conext_sw_device_state’, ‘5’) %}
    Remote Power Off
    {% elif is_state(‘sensor.conext_sw_device_state’, ‘255’) %}
    Data Not Available
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    sw_inverter_enabled:
    friendly_name: “Inverter Enabled”
    value_template: >-
    {% if is_state(‘sensor.conext_sw_inverter_enabled’, ‘2’) %}
    Standby
    {% elif is_state(‘sensor.conext_sw_inverter_enabled’, ‘3’) %}
    Operating
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    sw_charger_enabled:
    friendly_name: “Charger Enabled”
    value_template: >-
    {% if is_state(‘sensor.conext_sw_charger_enabled’, ‘2’) %}
    Standby
    {% elif is_state(‘sensor.conext_sw_charger_enabled’, ‘3’) %}
    Operating
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    sw_active_faults:
    friendly_name: “Active Faults”
    value_template: >-
    {% if is_state(‘sensor.conext_sw_active_faults’, ‘0’) %}
    No Active Faults
    {% elif is_state(‘sensor.conext_sw_active_faults’, ‘1’) %}
    Has Active Faults
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    sw_active_warnings:
    friendly_name: “Active Warnings”
    value_template: >-
    {% if is_state(‘sensor.conext_mppt_active_warnings’, ‘0’) %}
    No Active Warnings
    {% elif is_state(‘sensor.conext_mppt_active_warnings’, ‘1’) %}
    Has Active Warnings
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    sw_charger_status:
    friendly_name: “Charger Status”
    value_template: >-
    {% if is_state(‘sensor.conext_sw_charger_status’, ‘768’) %}
    Not Charging
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘769’) %}
    Bulk
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘770’) %}
    Absorption
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘771’) %}
    Overcharge
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘772’) %}
    Equalize
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘773’) %}
    Float
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘774’) %}
    No Float
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘775’) %}
    Constant VI
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘776’) %}
    Charger Disabled
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘777’) %}
    Qualifying AC
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘778’) %}
    Qualifying APS
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘779’) %}
    Engaging Charger
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘780’) %}
    AC Good
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘781’) %}
    APS Good
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘782’) %}
    AC Fault
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘783’) %}
    Charge
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘784’) %}
    AC Fault
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘785’) %}
    Charge
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘786’) %}
    Absorption Exit Pending
    {% elif is_state(‘sensor.conext_sw_chargerstatus’, ‘787’) %}
    Ground Fault
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘788’) %}
    AC Good Pending
    {% elif is_state(‘sensor.conext_sw_chargerstatus’, ‘789’) %}
    Load Shaving
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘790’) %}
    AC Support
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘791’) %}
    AC Coupled
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘792’) %}
    AC Coupled Bulk
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘793’) %}
    AC Coupled Absorption
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘794’) %}
    AC Coupled Float
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘795’) %}
    AC Coupled No Float
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘796’) %}
    External BMS
    {% elif is_state(‘sensor.conext_sw_charger_status’, ‘797’) %}
    Load Sense
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    sw_inverter_status:
    friendly_name: “Inverter Status”
    value_template: >-
    {% if is_state(‘sensor.conext_sw_inverter_status’, ‘1024’) %}
    Invert
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1025’) %}
    AC Pass Through
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1026’) %}
    APS Only
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1027’) %}
    Load Sense
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1028’) %}
    Inverter Disabled
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1029’) %}
    Load Sense Ready
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1030’) %}
    Engaging Inverter
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1031’) %}
    Engaging Inverter
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1032’) %}
    Inverter Standby
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1033’) %}
    Grid-Tied
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1034’) %}
    Grid Support
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1035’) %}
    Gen Support
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1036’) %}
    Sell-to-Grid
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1037’) %}
    Load Shaving
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1038’) %}
    Grid Frequency Stabilization
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1039’) %}
    AC Coupling
    {% elif is_state(‘sensor.conext_sw_inverter_status’, ‘1040’) %}
    Reverse Ibatt
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    mppt_operating_mode:
    friendly_name: “Operating Mode”
    value_template: >-
    {% if is_state(‘sensor.conext_mppt_operating_mode’, ‘2’) %}
    Standby
    {% elif is_state(‘sensor.conext_mppt_operating_mode’, ‘3’) %}
    Operating
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    mppt_device_state:
    friendly_name: “Device State”
    value_template: >-
    {% if is_state(‘sensor.conext_mppt_device_state’, ‘0’) %}
    Hibernate
    {% elif is_state(‘sensor.conext_mppt_device_state’, ‘1’) %}
    Power Save
    {% elif is_state(‘sensor.conext_mppt_device_state’, ‘2’) %}
    Safe Mode
    {% elif is_state(‘sensor.conext_mppt_device_state’, ‘3’) %}
    Operating
    {% elif is_state(‘sensor.conext_mppt_device_state’, ‘4’) %}
    Diagnostic Mode
    {% elif is_state(‘sensor.conext_mppt_device_state’, ‘5’) %}
    Remote Power Off
    {% elif is_state(‘sensor.conext_mppt_device_state’, ‘255’) %}
    Data Not Available
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    mppt_charger_enabled_status:
    friendly_name: “Charger Enabled Status”
    value_template: >-
    {% if is_state(‘sensor.conext_mppt_charger_enabled_status’, ‘0’) %}
    Disabled
    {% elif is_state(‘sensor.conext_mppt_charger_enabled_status’, ‘1’) %}
    Enabled
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    mppt_active_faults:
    friendly_name: “Active Faults”
    value_template: >-
    {% if is_state(‘sensor.conext_mppt_active_faults’, ‘0’) %}
    No Active Faults
    {% elif is_state(‘sensor.conext_mppt_active_faults’, ‘1’) %}
    Has Active Faults
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    mppt_active_warnings:
    friendly_name: “Active Warnings”
    value_template: >-
    {% if is_state(‘sensor.conext_mppt_active_warnings’, ‘0’) %}
    No Active Warnings
    {% elif is_state(‘sensor.conext_mppt_active_warnings’, ‘1’) %}
    Has Active Warnings
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    mppt_charge_mode_status:
    friendly_name: “Charge Mode Status”
    value_template: >-
    {% if is_state(‘sensor.conext_mppt_charge_mode_status’, ‘0’) %}
    Stand alone
    {% elif is_state(‘sensor.conext_mppt_charge_mode_status’, ‘1’) %}
    Primary
    {% elif is_state(‘sensor.conext_mppt_charge_mode_status’, ‘2’) %}
    Secondary
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    bm_device_state:
    friendly_name: “Device State”
    value_template: >-
    {% if is_state(‘sensor.conext_bm_device_state’, ‘0’) %}
    Hibernate
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘1’) %}
    Power Save
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘2’) %}
    Safe Mode
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘3’) %}
    Operating
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘4’) %}
    Diagnostic Mode
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘5’) %}
    Remote Power Off
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘255’) %}
    Data Not Available
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    bm_dc_source_id:
    friendly_name: “DC Source ID”
    value_template: >-
    {% if is_state(‘sensor.conext_bm_device_state’, ‘3’) %}
    House Battery Bank 1
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘4’) %}
    House Battery Bank 2
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘5’) %}
    House Battery Bank 3
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘6’) %}
    House Battery Bank 4
    {% elif is_state(‘sensor.conext_bm_device_state’, ‘7’) %}
    House Battery Bank 5
    {% else %}
    N/A
    {% endif %}
  • platform: template
    sensors:
    bm_battery_temperature:
    friendly_name: “Battery Temperature”
    value_template: “{{ (states(‘sensor.bm_battery_temperature’) | float * (9.0/5.0) + 32.0) }}”
    unit_of_measurement: ‘°F’
    device_class: ‘temperature’

hey @raphsabb, I just added examples for you.

thank you very much! will post updates when I get it going!

Quick update as promised, turned out I had to upgrade hass(had been yrs lol, if it aint broke…)

Heres what my main power dashboard looks like so far

thanks for the help! much appreciated

Glad this helped. Are you leveraging the new energy mgmt feature? I’ve haven’t set that up yet. If you are, mind sharing how you set that up?

Hvnt started with the feature. I have so much data from the schneider devices already. Will look at it tho for GUI purposes. I will post when I have something

1 Like

I’m trying to figure this out, and I’m getting data, but it keeps alternating between the data I need and “Unavailable”. Any tips?

Thnks @johnnyc for your share. How about for Schneider XW series ?

hmm… It’s been quite a while, but I seem to remember having a similar issue. I initially started with a very basic setup to get things working, then built up from there. I would start with verifying ports and addresses of your connected devices. Here’s a roll-up from my config.

XW SCP - Bus ID:2, Bus Address:0, Modbus Slave Address (Port 503) 70
CSW2524 - Bus ID:2, Bus Address:1, Modbus Slave Address (Port 503): 90
MPPT60 - Bus ID:2, Bus Address:2, Modbus Slave Address (Port 503) 30
BattMon - Bus ID:2, Bus Address:3, Modbus Slave Address (Port 503) 190

I have the SW series with a Conext Gateway. I have not reviewed the docs for the XW series. However, I would assume it leverages a similar modbus structure.

I’ve been trying to recreate your success, however when I try to add the above data to the sensors.yaml file on my Home Assistant, it doesn’t seem to like the formatting. I fixed the formatting for the config yaml (Had to add spaces, and the " - " before the name entries) to make it look like the documentation examples for the modbus entry. Could you possibly either upload the text file, or recommend what the text may have to be reformatted as? I’m a little in experienced at the yaml editing but have decent IT skillz otherwise… :slight_smile:

For example, this is what some of the code looks like in notepad ++ versus the formating in the html text in the browser… sensoryaml

I worked through all the context stuff, and got it working.
Thanks for pointing me in the right direction!!
On to the NEXT custom integrations…

Thanks John!

1 Like

Can I connect Directly to the SCP, Its the only monitoring accessory I have, no Gateway or ComBox.

@Kramos As far as I know, connecting directly to the SCP is a non-starter. Schnieder’s Conext devices talk with each other via the Xanbus protocol. A Gateway or older ComBox does the conversion between their proprietary Xanbus and standard Modbus protocols. So, one or the other is required to make a connection with their devices.

Hey pal, can you provide me with you .yaml files? o paste the yaml here with code brackets?

Update 1: No problem i just saw the example you posted above lol

Update 2: Added sensors yaml as provided by @johnnyc , will edit again and add the configuration.yaml scheme

Update 3: I notice the modbus configuration style has changed and also the data_input syntax now you have to declare the full type for example int must be int16 or int32 and so on, uint must be uint16, uint32 or uint64. Other wise you will have an error. Withe the old style as it is right now you will get Integrate sensors error. I have fix the syntax and currently working on updating the data types. I have change all of the values to meet my current inverter which is a XW+6848, @johnnyc i would update all the values by making a copy of your spreadsheet, i will send you the file once updated so you add those to the document. Thanks for making all of this :slight_smile: Will update soon.

Update 4: Added the new syntax style for config scheme, added scan_interval to grid power for my use case with XW+6848, but be aware that you can add these to your entries to refresh the data more frequently. Hope this helps!

#sensors.yaml

#conext_gateway device over Modbus

- platform: template
  sensors:
    sw_operating_mode:
      friendly_name: "Operating Mode"
      value_template: >-
        {% if is_state('sensor.conext_sw_operating_mode', '2') %}
        Standby
        {% elif is_state('sensor.conext_sw_operating_mode', '3') %}
        Operating
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    sw_device_state:
      friendly_name: "Device State"
      value_template: >-
        {% if is_state('sensor.conext_sw_device_state', '0') %}
        Hibernate
        {% elif is_state('sensor.conext_sw_device_state', '1') %}
        Power Save
        {% elif is_state('sensor.conext_sw_device_state', '2') %}
        Safe Mode
        {% elif is_state('sensor.conext_sw_device_state', '3') %}
        Operating
        {% elif is_state('sensor.conext_sw_device_state', '4') %}
        Diagnostic Mode
        {% elif is_state('sensor.conext_sw_device_state', '5') %}
        Remote Power Off
        {% elif is_state('sensor.conext_sw_device_state', '255') %}
        Data Not Available
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    sw_inverter_enabled:
      friendly_name: "Inverter Enabled"
      value_template: >-
        {% if is_state('sensor.conext_sw_inverter_enabled', '2') %}
        Standby
        {% elif is_state('sensor.conext_sw_inverter_enabled', '3') %}
        Operating
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    sw_charger_enabled:
      friendly_name: "Charger Enabled"
      value_template: >-
        {% if is_state('sensor.conext_sw_charger_enabled', '2') %}
        Standby
        {% elif is_state('sensor.conext_sw_charger_enabled', '3') %}
        Operating
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    sw_active_faults:
      friendly_name: "Active Faults"
      value_template: >-
        {% if is_state('sensor.conext_sw_active_faults', '0') %}
        No Active Faults
        {% elif is_state('sensor.conext_sw_active_faults', '1') %}
        Has Active Faults
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    sw_active_warnings:
      friendly_name: "Active Warnings"
      value_template: >-
        {% if is_state('sensor.conext_mppt_active_warnings', '0') %}
        No Active Warnings
        {% elif is_state('sensor.conext_mppt_active_warnings', '1') %}
        Has Active Warnings
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    sw_charger_status:
      friendly_name: "Charger Status"
      value_template: >-
        {% if is_state('sensor.conext_sw_charger_status', '768') %}
        Not Charging
        {% elif is_state('sensor.conext_sw_charger_status', '769') %}
        Bulk
        {% elif is_state('sensor.conext_sw_charger_status', '770') %}
        Absorption
        {% elif is_state('sensor.conext_sw_charger_status', '771') %}
        Overcharge
        {% elif is_state('sensor.conext_sw_charger_status', '772') %}
        Equalize
        {% elif is_state('sensor.conext_sw_charger_status', '773') %}
        Float
        {% elif is_state('sensor.conext_sw_charger_status', '774') %}
        No Float
        {% elif is_state('sensor.conext_sw_charger_status', '775') %}
        Constant VI
        {% elif is_state('sensor.conext_sw_charger_status', '776') %}
        Charger Disabled
        {% elif is_state('sensor.conext_sw_charger_status', '777') %}
        Qualifying AC
        {% elif is_state('sensor.conext_sw_charger_status', '778') %}
        Qualifying APS
        {% elif is_state('sensor.conext_sw_charger_status', '779') %}
        Engaging Charger
        {% elif is_state('sensor.conext_sw_charger_status', '780') %}
        AC Good
        {% elif is_state('sensor.conext_sw_charger_status', '781') %}
        APS Good
        {% elif is_state('sensor.conext_sw_charger_status', '782') %}
        AC Fault
        {% elif is_state('sensor.conext_sw_charger_status', '783') %}
        Charge
        {% elif is_state('sensor.conext_sw_charger_status', '784') %}
        AC Fault
        {% elif is_state('sensor.conext_sw_charger_status', '785') %}
        Charge
        {% elif is_state('sensor.conext_sw_charger_status', '786') %}
        Absorption Exit Pending
        {% elif is_state('sensor.conext_sw_chargerstatus', '787') %}
        Ground Fault
        {% elif is_state('sensor.conext_sw_charger_status', '788') %}
        AC Good Pending
        {% elif is_state('sensor.conext_sw_chargerstatus', '789') %}
        Load Shaving
        {% elif is_state('sensor.conext_sw_charger_status', '790') %}
        AC Support
        {% elif is_state('sensor.conext_sw_charger_status', '791') %}
        AC Coupled
        {% elif is_state('sensor.conext_sw_charger_status', '792') %}
        AC Coupled Bulk
        {% elif is_state('sensor.conext_sw_charger_status', '793') %}
        AC Coupled Absorption
        {% elif is_state('sensor.conext_sw_charger_status', '794') %}
        AC Coupled Float
        {% elif is_state('sensor.conext_sw_charger_status', '795') %}
        AC Coupled No Float
        {% elif is_state('sensor.conext_sw_charger_status', '796') %}
        External BMS
        {% elif is_state('sensor.conext_sw_charger_status', '797') %}
        Load Sense
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    sw_inverter_status:
      friendly_name: "Inverter Status"
      value_template: >-
        {% if is_state('sensor.conext_sw_inverter_status', '1024') %}
        Invert
        {% elif is_state('sensor.conext_sw_inverter_status', '1025') %}
        AC Pass Through
        {% elif is_state('sensor.conext_sw_inverter_status', '1026') %}
        APS Only
        {% elif is_state('sensor.conext_sw_inverter_status', '1027') %}
        Load Sense
        {% elif is_state('sensor.conext_sw_inverter_status', '1028') %}
        Inverter Disabled
        {% elif is_state('sensor.conext_sw_inverter_status', '1029') %}
        Load Sense Ready
        {% elif is_state('sensor.conext_sw_inverter_status', '1030') %}
        Engaging Inverter
        {% elif is_state('sensor.conext_sw_inverter_status', '1031') %}
        Engaging Inverter
        {% elif is_state('sensor.conext_sw_inverter_status', '1032') %}
        Inverter Standby
        {% elif is_state('sensor.conext_sw_inverter_status', '1033') %}
        Grid-Tied
        {% elif is_state('sensor.conext_sw_inverter_status', '1034') %}
        Grid Support
        {% elif is_state('sensor.conext_sw_inverter_status', '1035') %}
        Gen Support
        {% elif is_state('sensor.conext_sw_inverter_status', '1036') %}
        Sell-to-Grid
        {% elif is_state('sensor.conext_sw_inverter_status', '1037') %}
        Load Shaving
        {% elif is_state('sensor.conext_sw_inverter_status', '1038') %}
        Grid Frequency Stabilization
        {% elif is_state('sensor.conext_sw_inverter_status', '1039') %}
        AC Coupling
        {% elif is_state('sensor.conext_sw_inverter_status', '1040') %}
        Reverse Ibatt
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    mppt_operating_mode:
      friendly_name: "Operating Mode"
      value_template: >-
        {% if is_state('sensor.conext_mppt_operating_mode', '2') %}
        Standby
        {% elif is_state('sensor.conext_mppt_operating_mode', '3') %}
        Operating
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    mppt_device_state:
      friendly_name: "Device State"
      value_template: >-
        {% if is_state('sensor.conext_mppt_device_state', '0') %}
        Hibernate
        {% elif is_state('sensor.conext_mppt_device_state', '1') %}
        Power Save
        {% elif is_state('sensor.conext_mppt_device_state', '2') %}
        Safe Mode
        {% elif is_state('sensor.conext_mppt_device_state', '3') %}
        Operating
        {% elif is_state('sensor.conext_mppt_device_state', '4') %}
        Diagnostic Mode
        {% elif is_state('sensor.conext_mppt_device_state', '5') %}
        Remote Power Off
        {% elif is_state('sensor.conext_mppt_device_state', '255') %}
        Data Not Available
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    mppt_charger_enabled_status:
      friendly_name: "Charger Enabled Status"
      value_template: >-
        {% if is_state('sensor.conext_mppt_charger_enabled_status', '0') %}
        Disabled
        {% elif is_state('sensor.conext_mppt_charger_enabled_status', '1') %}
        Enabled
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    mppt_active_faults:
      friendly_name: "Active Faults"
      value_template: >-
        {% if is_state('sensor.conext_mppt_active_faults', '0') %}
        No Active Faults
        {% elif is_state('sensor.conext_mppt_active_faults', '1') %}
        Has Active Faults
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    mppt_active_warnings:
      friendly_name: "Active Warnings"
      value_template: >-
        {% if is_state('sensor.conext_mppt_active_warnings', '0') %}
        No Active Warnings
        {% elif is_state('sensor.conext_mppt_active_warnings', '1') %}
        Has Active Warnings
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    mppt_charge_mode_status:
      friendly_name: "Charge Mode Status"
      value_template: >-
        {% if is_state('sensor.conext_mppt_charge_mode_status', '0') %}
        Stand alone
        {% elif is_state('sensor.conext_mppt_charge_mode_status', '1') %}
        Primary
        {% elif is_state('sensor.conext_mppt_charge_mode_status', '2') %}
        Secondary
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    bm_device_state:
      friendly_name: "Device State"
      value_template: >-
        {% if is_state('sensor.conext_bm_device_state', '0') %}
        Hibernate
        {% elif is_state('sensor.conext_bm_device_state', '1') %}
        Power Save
        {% elif is_state('sensor.conext_bm_device_state', '2') %}
        Safe Mode
        {% elif is_state('sensor.conext_bm_device_state', '3') %}
        Operating
        {% elif is_state('sensor.conext_bm_device_state', '4') %}
        Diagnostic Mode
        {% elif is_state('sensor.conext_bm_device_state', '5') %}
        Remote Power Off
        {% elif is_state('sensor.conext_bm_device_state', '255') %}
        Data Not Available
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    bm_dc_source_id:
      friendly_name: "DC Source ID"
      value_template: >-
        {% if is_state('sensor.conext_bm_device_state', '3') %}
        House Battery Bank 1
        {% elif is_state('sensor.conext_bm_device_state', '4') %}
        House Battery Bank 2
        {% elif is_state('sensor.conext_bm_device_state', '5') %}
        House Battery Bank 3
        {% elif is_state('sensor.conext_bm_device_state', '6') %}
        House Battery Bank 4
        {% elif is_state('sensor.conext_bm_device_state', '7') %}
        House Battery Bank 5
        {% else %}
        N/A
        {% endif %}

- platform: template
  sensors:
    bm_battery_temperature:
      friendly_name: "Battery Temperature"
      value_template: "{{ (states('sensor.bm_battery_temperature') | float * (9.0/5.0) + 32.0) }}"
      unit_of_measurement: "°F"
      device_class: "temperature"
sensor: !include sensors.yaml

modbus:
  - name: conext_gateway
    type: tcp
    host: 192.168.xxx.xxx
    port: 503
    delay: 2
    timeout: 15
    sensors:
      #Always double check your address for each device.
      #conext_gateway device over Modbus: CSW2524 0 - Bus ID:2, Bus address:1, Modbus SlaveAddress (Port 503): 90
      #conext_gateway device over Modbus: XW6848-01 0 - Bus ID:2, Bus address:1, Modbus SlaveAddress (Port 503): 10


      - name: "XW Inverter Enabled"
        data_type: uint16
        input_type: input
        slave: 10
        address: 71

      - name: XW Active Faults Flag
        data_type: uint16
        input_type: input
        slave: 10
        address: 75

      - name: XW Active Warnings Flag
        data_type: uint16
        input_type: input
        slave: 10
        address: 76

      - name: XW Inverter Status
        data_type: uint16
        input_type: input
        slave: 10
        address: 122

      - name: "XW Battery Current"
        data_type: int32
        input_type: input
        count: 2
        slave: 10
        address: 82
        unit_of_measurement: A
        scale: 0.001
        offset: 0
        precision: 3

      - name: "XW Battery Power"
        data_type: int32
        input_type: input
        count: 2
        slave: 10
        address: 84
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "XW Battery Temperature"
        data_type: uint32
        input_type: input
        slave: 10
        address: 86
        unit_of_measurement: degC
        scale: 0.01
        offset: -273
        precision: 2

      - name: "XW Load AC Voltage"
        data_type: uint32
        input_type: input
        count: 2
        slave: 10
        address: 98
        unit_of_measurement: V
        scale: 0.001
        offset: 0
        precision: 3

      - name: "XW Load AC Current"
        data_type: int32
        input_type: input
        count: 2
        slave: 10
        address: 150
        unit_of_measurement: A
        scale: 0.001
        offset: 0
        precision: 3

      - name: "XW Load AC Power"
        data_type: int32
        input_type: input
        count: 2
        slave: 10
        address: 102
        unit_of_measurement: W
        scale: 1
        offset: 0
        precision: 0
        scan_interval: 1

      - name: "XW Load AC Frequency"
        data_type: uint32
        input_type: input
        slave: 10
        address: 100
        unit_of_measurement: Hz
        scale: 0.01
        offset: 0
        precision: 2

      #conext_gateway device over Modbus: MPPT60 0 - Bus ID:2, Bus address:2, Modbus Slave Address (Port 503): 30
      - name: "MPPT Device State"
        data_type: uint16
        input_type: input
        slave: 30
        address: 64

      - name: "MPPT Active Faults"
        data_type: uint16
        input_type: input
        slave: 30
        address: 68

      - name: "MPPT Active Warnings"
        data_type: uint16
        input_type: input
        slave: 30
        address: 69

      - name: "MPPT Charger Enabled Status"
        data_type: uint16
        input_type: input
        slave: 30
        address: 65

      - name: "MPPT Charge Mode Status"
        data_type: uint16
        input_type: input
        slave: 30
        address: 67

      - name: "MPPT PV Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 80
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "MPPT PV Voltage"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 76
        unit_of_measurement: V
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT PV Current"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 78
        unit_of_measurement: A
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT DC Output Voltage"
        data_type: int32
        input_type: input
        count: 2
        slave: 30
        address: 88
        unit_of_measurement: V
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT DC Output Current"
        data_type: int32
        input_type: input
        count: 2
        slave: 30
        address: 90
        unit_of_measurement: A
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT Energy From PV This Hour"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 102
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT PV Input Active This Hour"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 104
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT Energy From PV Today"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 106
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT PV Input Active Today"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 106
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT Energy From PV This Week"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 110
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT PV Input Active This Week"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 112
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT Energy From PV This Month"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 114
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT PV Input Active This Month"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 116
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT Energy From PV This Year"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 118
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT PV Input Active This Year"
        data_type: uint32
        input_type: input
        count: 2
        slave: 30
        address: 120
        unit_of_measurement: kWh
        scale: 0.001
        offset: 0
        precision: 3

      - name: "MPPT Operating Mode"
        data_type: uint32
        input_type: holding
        slave: 30
        address: 172

      #conext_gateway device over Modbus: Modbus Slave Address (Port 503): 1
      - name: "GW PV Harvest Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 68
        unit_of_measurement: W
        scale: 1
        offset: 0
        precision: 0

      - name: "GW DC Charging Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 70
        unit_of_measurement: W
        scale: 1
        offset: 0
        precision: 0

      - name: "GW DC Inverting Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 74
        unit_of_measurement: W
        scale: 1
        offset: 0
        precision: 0

      - name: "GW Grid Input Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 82
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W
        scan_interval: 1

      - name: "GW Grid Output Power"
        data_type: uint32
        count: 2
        slave: 1
        address: 88
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW Load Power (In/Out)"
        data_type: int32
        input_type: input
        count: 2
        slave: 1
        address: 94
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW Load Output Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 96
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW Load In Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 98
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW Load In Power"
        data_type: int32
        input_type: input
        count: 2
        slave: 1
        address: 98
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW Load Power"
        data_type: int32
        input_type: input
        count: 2
        slave: 1
        address: 102
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW CXW AC1 Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 130
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW CXW AC Out Power"
        data_type: int32
        input_type: input
        count: 2
        slave: 1
        address: 136
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW MPPT PV Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 144
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

      - name: "GW MPPT Battery Power"
        data_type: uint32
        input_type: input
        count: 2
        slave: 1
        address: 148
        scale: 1
        offset: 0
        precision: 0
        device_class: energy
        unit_of_measurement: W

#data_type: int, uint, float, string, custom (default int)
#count: 1, 2 (default 1 for 16-bit register, 2 for 32-bit register)
#input_type: holding, input (default holding)
#CSW2524 0 - Bus ID:2, Bus Address:1, Modbus Slave Address (Port 503): 90
#XW+6848 0 - Bus ID:2, Bus Address:1, Modbus Slave Address (Port 503): 10
#MPPT60 0 - Bus ID:2, Bus Address:2, Modbus Slave Address (Port 503): 30
#BattMon 0 - Bus ID:2, Bus Address:3, Modbus Slave Address (Port 503): 190
#XW SCP 0 - Bus ID:2, Bus Address:0, Modbus Slave Address (Port 503): 70
#Conext Gateway xxx.xxx.xxx.xxx, Port 503
1 Like

I have a CSW4048 with the Battery Monitor and an XW SCP as well as the Generator Start.
I would love to get this working on my Home Assistant but I am having trouble getting it to connect properly.

I have added the code @Kramos posted above and change the IP address to my system as well as set the slave to 90 for my SW4048 I also had to change the line “input_type: input” to “input_type: holding” other wise I would not get any data. But now the data makes no sense just very long strings of numbers. Any help would be greatly appreciated. It appears that the Modbus mapping is different for the SW4048. Does anyone have a link for the correct mapping. I cant find it anywhere on schneiders website.

thanks in advance for any help.