number: - platform: modbus_controller modbus_controller_id: inverter1 id: remote_on_off name: "Remote On/Off" # Inverter Off:0, Inverter On:1, BDC Off: 2, BDC On: 3 address: 0 register_type: holding value_type: U_WORD min_value: 0 max_value: 3 step: 1 icon: mdi:eye entity_category: diagnostic - platform: modbus_controller modbus_controller_id: inverter1 id: max_output_power name: "Max Output Power" address: 3 register_type: holding value_type: U_WORD min_value: 0 max_value: 100 step: 1 unit_of_measurement: "%" entity_category: config sensor: - platform: modbus_controller name: "status_code" skip_updates: $skip_updates_slow address: 0 register_type: "read" internal: true accuracy_decimals: 0 id: status - platform: modbus_controller name: "Input Power" address: 1 register_type: "read" unit_of_measurement: W device_class: power state_class: measurement icon: mdi:solar-power-variant value_type: U_WORD accuracy_decimals: 0 filters: - multiply: 0.1 - platform: modbus_controller name: "PV1 voltage" address: 3 register_type: "read" unit_of_measurement: V device_class: voltage state_class: measurement icon: mdi:flash value_type: U_WORD accuracy_decimals: 0 filters: - multiply: 0.1 - platform: modbus_controller name: "PV1 current" address: 4 register_type: "read" unit_of_measurement: A device_class: current state_class: measurement icon: mdi:flash value_type: U_WORD accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller name: "PV1 Active power" id: pv1_power address: 5 register_type: "read" unit_of_measurement: W device_class: power state_class: measurement icon: mdi:flash value_type: U_DWORD accuracy_decimals: 0 filters: - multiply: 0.1 - platform: modbus_controller name: "PV2 voltage" address: 7 register_type: "read" unit_of_measurement: V device_class: voltage state_class: measurement icon: mdi:flash value_type: U_WORD accuracy_decimals: 0 filters: - multiply: 0.1 - platform: modbus_controller name: "PV2 current" address: 8 register_type: "read" unit_of_measurement: A device_class: current state_class: measurement icon: mdi:flash value_type: U_WORD accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller name: "PV2 Active power" id: pv2_power address: 9 register_type: "read" unit_of_measurement: W device_class: power state_class: measurement icon: mdi:flash value_type: U_DWORD accuracy_decimals: 0 filters: - multiply: 0.1 - platform: modbus_controller name: "Frequency" address: 37 register_type: "read" unit_of_measurement: Hz state_class: measurement icon: mdi:flash value_type: U_WORD accuracy_decimals: 1 filters: - multiply: 0.01 - platform: modbus_controller name: "Voltage Phase A" address: 38 register_type: "read" unit_of_measurement: V device_class: voltage state_class: measurement icon: mdi:flash value_type: U_WORD accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller name: "Current Phase A" address: 39 register_type: "read" unit_of_measurement: A device_class: current state_class: measurement icon: mdi:flash value_type: U_WORD accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller name: "Power Phase A" address: 40 register_type: "read" unit_of_measurement: W device_class: power state_class: measurement icon: mdi:flash value_type: U_DWORD accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller name: "Grid Active Power" address: 35 register_type: "read" unit_of_measurement: W device_class: power state_class: measurement icon: mdi:solar-power value_type: U_DWORD accuracy_decimals: 0 filters: - multiply: 0.1 - platform: template id: pv_power name: "PV Active Power" unit_of_measurement: W device_class: power state_class: measurement icon: mdi:solar-power-variant accuracy_decimals: 0 lambda: |- return float((id(pv1_power).state + id(pv2_power).state)); - platform: modbus_controller name: "Today's generation" skip_updates: $skip_updates_slow address: 53 register_type: "read" unit_of_measurement: kWh state_class: total_increasing device_class: energy icon: mdi:solar-power value_type: U_DWORD accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller name: "Lifetime generation" skip_updates: $skip_updates_slow address: 55 register_type: "read" unit_of_measurement: kWh state_class: total_increasing device_class: energy icon: mdi:solar-power value_type: U_DWORD accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller name: "Inverter temperature" address: 93 register_type: "read" unit_of_measurement: °C device_class: temperature state_class: measurement entity_category: diagnostic icon: mdi:thermometer value_type: U_WORD accuracy_decimals: 1 filters: - multiply: 0.1 skip_updates: $skip_updates_slow select: - platform: modbus_controller name: "AC charging" icon: mdi:battery-charging-100 address: 1092 value_type: U_WORD optionsmap: "Disabled": 0 "Enabled": 1 skip_updates: $skip_updates_slow - platform: modbus_controller name: "Inverter priority" icon: mdi:arrow-decision-outline address: 1044 value_type: U_WORD optionsmap: "Load first": 0 "Battery first": 1 "Grid first": 2 skip_updates: $skip_updates_slow text_sensor: - platform: template name: "Status state" icon: mdi:eye entity_category: diagnostic lambda: |- if ((id(status).state) == 1) { return {"Normal"}; } else if ((id(status).state) == 0) { return {"Standby"}; } else if ((id(status).state) == 2) { return {"Discharge"}; } else if ((id(status).state) == 3) { return {"Fault"}; } else if ((id(status).state) == 4) { return {"Flash"}; } else if ((id(status).state) == 5) { return {"PV Charging"}; } else if ((id(status).state) == 6) { return {"AC Charging"}; } else if ((id(status).state) == 7) { return {"Combined Charging"}; } else if ((id(status).state) == 8) { return {"Combined Charging & Bypass"}; } else if ((id(status).state) == 9) { return {"PV Charging & Bypass"}; } else if ((id(status).state) == 10) { return {"AC Charging & Bypass"}; } else if ((id(status).state) == 11) { return {"Bypass"}; } else if (id(status).state == 12) { return {"PV Charge and Discharge"}; } else { return {"Unknown"}; } - platform: modbus_controller name: "Fault code" address: 105 register_type: "read" icon: mdi:eye entity_category: diagnostic raw_encode: HEXBYTES lambda: |- uint16_t value = modbus_controller::word_from_hex_str(x, 0); switch (value) { case 0: return std::string("No error"); case 24: return std::string("Auto test failed"); case 25: return std::string("No AC connection"); case 26: return std::string("PV isolation low"); case 27: return std::string("Residual I high"); case 28: return std::string("Output high DCI"); case 29: return std::string("PV voltage high"); case 30: return std::string("AC voltage out of range"); case 31: return std::string("AC frequency out of range"); case 32: return std::string("Module too hot"); // case 1~23 " Error: 99+x default: return std::string("Fault code: " + to_string(value)); } return x;