- alias: Sungrow_Go_to_Standby_quirk description: '' triggers: - trigger: time_pattern minutes: /10 conditions: - condition: state entity_id: sensor.sungrow_inverter_state state: Running for: hours: 1 minutes: 0 seconds: 0 - condition: state entity_id: binary_sensor.battery_discharging_delay state: 'off' for: hours: 0 minutes: 10 seconds: 0 - condition: state entity_id: binary_sensor.pv_generating_delay state: 'off' for: hours: 0 minutes: 10 seconds: 0 - condition: numeric_state entity_id: sensor.mppt1_voltage below: 10 - condition: numeric_state entity_id: sensor.mppt2_voltage below: 10 - condition: state entity_id: sensor.ems_mode_selection state: Self-consumption mode (default) - condition: state entity_id: sun.sun state: below_horizon - condition: state entity_id: sensor.backup_mode state: Disabled actions: - action: input_select.select_option metadata: {} data: option: Shutdown target: entity_id: input_select.set_sg_inverter_run_mode - delay: hours: 0 minutes: 1 seconds: 0 - action: input_select.select_option metadata: {} data: option: Enabled target: entity_id: input_select.set_sg_inverter_run_mode mode: single - id: automation_sungrow_inverter_state alias: sungrow inverter state description: Enables/ stops the inverter triggers: - trigger: state entity_id: - input_select.set_sg_inverter_run_mode conditions: [] variables: sg_start: 207 sg_stop: 206 actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 12999 value: "{% if is_state('input_select.set_sg_inverter_run_mode', \"Enabled\"\ ) %}\n {{sg_start}}\n{% else %}\n {{sg_stop}}\n{% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.system_state mode: single - id: automation_sungrow_inverter_state_input_selector_update alias: sungrow inverter enable/ stop input selector update description: Updates enable/ stops input selector triggers: - trigger: state entity_id: - sensor.sungrow_inverter_state conditions: - condition: template value_template: '{{ not is_state(''sensor.sungrow_inverter_state'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_inverter_run_mode data: option: "{% if is_state('sensor.sungrow_inverter_state', \"Shutdown\") %}\n\ \ Shutdown\n{% else %}\n Enabled\n{% endif %}\n" mode: single - id: automation_sungrow_inverter_update_max_soc alias: sungrow inverter update max SoC description: Updates Sungrow max Soc holding register triggers: - trigger: state entity_id: - input_number.set_sg_max_soc conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13057 value: '{{ states(''input_number.set_sg_max_soc'') | int *10}}' - action: homeassistant.update_entity data: entity_id: - sensor.max_soc mode: single - id: automation_sungrow_inverter_update_max_soc_input_slider_update alias: sungrow inverter max SoC input slider update description: Updates Sungrow max Soc input slider triggers: - trigger: state entity_id: - sensor.max_soc conditions: - condition: template value_template: '{{ not is_state(''sensor.max_soc'', ''unavailable'') }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_max_soc data: value: '{{ states(''sensor.max_soc'') }}' mode: single - id: automation_sungrow_inverter_update_min_soc alias: sungrow inverter update min SoC description: Updates Sungrow min Soc holding register triggers: - trigger: state entity_id: - input_number.set_sg_min_soc conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13058 value: '{{ states(''input_number.set_sg_min_soc'') | int *10}}' - action: homeassistant.update_entity data: entity_id: - sensor.min_soc mode: single - id: automation_sungrow_inverter_update_min_soc_input_slider_update alias: sungrow inverter min SoC input slider update description: Updates Sungrow min Soc input slider triggers: - trigger: state entity_id: - sensor.min_soc conditions: - condition: template value_template: '{{ not is_state(''sensor.min_soc'', ''unavailable'') }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_min_soc data: value: '{{ states(''sensor.min_soc'') }}' mode: single - id: automation_sungrow_inverter_update_reserved_soc_for_backup alias: sungrow inverter update reserved soc for backup description: Updates reserved SoC for backup register triggers: - trigger: state entity_id: - input_number.set_sg_reserved_soc_for_backup conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13099 value: '{{ states(''input_number.set_sg_reserved_soc_for_backup'') | int}}' - action: homeassistant.update_entity data: entity_id: - sensor.reserved_soc_for_backup mode: single - id: automation_sungrow_inverter_update_reserved_backup_soc_input_slider_update alias: sungrow inverter reserved backup SoC input slider update description: Updates Sungrow reserved backup Soc input slider triggers: - trigger: state entity_id: - sensor.reserved_soc_for_backup conditions: - condition: template value_template: '{{ not is_state(''sensor.reserved_soc_for_backup'', ''unavailable'') }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_reserved_soc_for_backup data: value: '{{ states(''sensor.reserved_soc_for_backup'') }}' mode: single - id: automation_sungrow_inverter_update_battery_forced_charge_discharge_cmd alias: sungrow inverter update battery forced charge discharge cmd description: Updates Sungrow holding register for battery forced charge discharge command triggers: - trigger: state entity_id: - input_select.set_sg_battery_forced_charge_discharge_cmd conditions: [] variables: ems_forced_charge: 170 ems_forced_discharge: 187 ems_stop_default: 204 actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13050 value: "{% if is_state('input_select.set_sg_battery_forced_charge_discharge_cmd',\ \ \"Stop (default)\") %} \n {{ems_stop_default}}\n{% elif is_state('input_select.set_sg_battery_forced_charge_discharge_cmd',\ \ \"Forced charge\") %} \n {{ems_forced_charge}}\n{% elif is_state('input_select.set_sg_battery_forced_charge_discharge_cmd',\ \ \"Forced discharge\") %} \n {{ems_forced_discharge}}\n{% else %}\n {{ems_stop_default}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.battery_forced_charge_discharge_cmd_raw mode: single - id: automation_sungrow_inverter_update_battery_forced_charge_discharge_cmd_input_select_update alias: sungrow inverter update battery forced charge discharge cmd input select update description: Updates Sungrow battery forced charge discharge cmd input select triggers: - trigger: state entity_id: - sensor.battery_forced_charge_discharge_cmd conditions: - condition: template value_template: '{{ not is_state(''sensor.battery_forced_charge_discharge_cmd'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_battery_forced_charge_discharge_cmd data: option: '{{ states(''sensor.battery_forced_charge_discharge_cmd'') }}' mode: single - id: automation_sungrow_inverter_update_ems_mode alias: sungrow inverter update EMS mode description: Updates EMS mode triggers: - trigger: state entity_id: - input_select.set_sg_ems_mode conditions: [] variables: ems_mode_self_consume: 0 ems_mode_forced: 2 ems_mode_external: 3 ems_mode_vpp: 4 ems_mode_microgrid: 8 actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13049 value: "{% if is_state('input_select.set_sg_ems_mode', \"Self-consumption mode\ \ (default)\") %} \n {{ems_mode_self_consume}}\n{% elif is_state('input_select.set_sg_ems_mode',\ \ \"Forced mode\") %} \n {{ems_mode_forced}}\n{% elif is_state('input_select.set_sg_ems_mode',\ \ \"External EMS\") %} \n {{ems_mode_external}}\n{% elif is_state('input_select.set_sg_ems_mode',\ \ \"VPP\") %} \n {{ems_mode_vpp}}\n{% elif is_state('input_select.set_sg_ems_mode',\ \ \"MicroGrid\") %} \n {{ems_mode_microgrid}}\n{% else %} \n {{ems_mode_self_consume}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.ems_mode_selection_raw mode: single - id: automation_sungrow_inverter_update_load_adjustment_mode alias: sungrow inverter update Load adjustment mode description: Updates Load adjustment mode triggers: - trigger: state entity_id: - input_select.set_sg_load_adjustment_mode conditions: [] variables: load_adjustment_mode_timing: 0 load_adjustment_on_off: 1 load_adjustment_power_optimized: 2 load_adjustment_disabled: 3 actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13001 value: "{% if is_state('input_select.set_sg_load_adjustment_mode', \"Timing\"\ ) %} \n {{load_adjustment_mode_timing}}\n{% elif is_state('input_select.set_sg_load_adjustment_mode',\ \ \"ON/OFF\") %} \n {{load_adjustment_on_off}}\n{% elif is_state('input_select.set_sg_load_adjustment_mode',\ \ \"Power optimization\") %} \n {{load_adjustment_power_optimized}}\n{% elif\ \ is_state('input_select.set_sg_load_adjustment_mode', \"Disabled\") %} \n\ \ {{load_adjustment_disabled}}\n{% else %} \n {{load_adjustment_disabled}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.load_adjustment_mode_selection_raw mode: single - id: automation_sungrow_inverter_update_load_adjustment_mode_on_off alias: sungrow inverter update Load adjustment mode ON/OFF description: Updates Load adjustment mode ON/OFF triggers: - trigger: state entity_id: - input_select.set_sg_load_adjustment_mode_on_off conditions: [] variables: load_adjustment_mode_on_off_on: 170 load_adjustment_mode_on_off_off: 85 actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13010 value: "{% if is_state('input_select.set_sg_load_adjustment_mode_on_off', \"\ ON\") %} \n {{load_adjustment_mode_on_off_on}}\n{% elif is_state('input_select.set_sg_load_adjustment_mode_on_off',\ \ \"OFF\") %} \n {{load_adjustment_mode_on_off_off}}\n{% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.load_adjustment_mode_on_off_selection_raw mode: single - id: automation_sungrow_inverter_export_power_limit_mode_update alias: sungrow inverter export power limit mode update description: Updates Enable/Disable for export power limit mode triggers: - trigger: state entity_id: - sensor.export_power_limit_mode_raw conditions: - condition: template value_template: '{{ not is_state(''sensor.export_power_limit_mode_raw'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_export_power_limit_mode data: option: "{% if ((states('sensor.export_power_limit_mode_raw') |int) == 0x00AA)\ \ %} \n Enabled\n{% elif ((states('sensor.export_power_limit_mode_raw') |int)\ \ == 0x0055) %} \n Disabled\n{% endif %}\n" mode: single - id: automation_sungrow_inverter_backup_mode alias: sungrow inverter backup mode description: Set backup mode triggers: - trigger: state entity_id: - input_select.set_sg_backup_mode conditions: [] variables: enable: 170 disable: 85 actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13074 value: "{% if is_state('input_select.set_sg_backup_mode', \"Enabled\") %} \n\ \ {{enable}}\n{% elif is_state('input_select.set_sg_backup_mode', \"Disabled\"\ ) %}\n {{disable}}\n{% else %}\n {{disable}}\n{% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.backup_mode_raw mode: single - id: automation_sungrow_inverter_backup_mode_update alias: sungrow inverter backup mode mode update description: Updates Enable/Disable for backup mode triggers: - trigger: state entity_id: - sensor.backup_mode_raw conditions: - condition: template value_template: '{{ not is_state(''sensor.backup_mode_raw'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_backup_mode data: option: "{% if ((states('sensor.backup_mode_raw') |int) == 0xAA) %} \n Enabled\n\ {% elif ((states('sensor.backup_mode_raw') |int) == 0x55) %} \n Disabled\n\ {% endif %}\n" mode: single - id: automation_sungrow_inverter_export_power_limit_mode alias: sungrow inverter export power limit mode description: Set export power limit mode triggers: - trigger: state entity_id: - input_select.set_sg_export_power_limit_mode conditions: [] variables: export_limit_enable: 170 export_limit_disable: 85 actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13086 value: "{% if is_state('input_select.set_sg_export_power_limit_mode', \"Enabled\"\ ) %} \n {{export_limit_enable}}\n{% elif is_state('input_select.set_sg_export_power_limit_mode',\ \ \"Disabled\") %}\n {{export_limit_disable}}\n{% else %}\n {{export_limit_disable}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.export_power_limit_mode_raw mode: single - id: automation_sungrow_inverter_export_power_limit_update alias: sungrow inverter export power limit update description: Updates export power limit slider triggers: - trigger: state entity_id: - sensor.export_power_limit conditions: - condition: template value_template: '{{ states(''sensor.export_power_limit'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_export_power_limit data: value: '{{ states(''sensor.export_power_limit'') }}' mode: single - id: automation_sungrow_inverter_set_export_power_limit alias: sungrow inverter export power limit description: Sets export power limit triggers: - trigger: state entity_id: - input_number.set_sg_export_power_limit conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13073 value: '{{ states(''input_number.set_sg_export_power_limit'') }}' - action: homeassistant.update_entity data: entity_id: - sensor.export_power_limit mode: single - id: automation_sungrow_inverter_update_load_adjustment_mode_input_select_update alias: sungrow inverter update Load adjustment mode input select update description: Updates Load adjustment mode input select triggers: - trigger: state entity_id: - sensor.load_adjustment_mode_selection conditions: - condition: template value_template: '{{ not is_state(''sensor.load_adjustment_mode_selection'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_load_adjustment_mode data: option: '{{ states(''sensor.load_adjustment_mode_selection'') }}' mode: single - id: automation_sungrow_inverter_update_ems_mode_input_select_update alias: sungrow inverter update EMS mode input select update description: Updates EMS mode input select triggers: - trigger: state entity_id: - sensor.ems_mode_selection conditions: - condition: template value_template: '{{ not is_state(''sensor.ems_mode_selection'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_ems_mode data: option: '{{ states(''sensor.ems_mode_selection'') }}' mode: single - id: automation_sungrow_inverter_update_battery_forced_charge_discharge_power alias: sungrow inverter update battery forced charge discharge power description: Sets battery forced charge discharge power triggers: - trigger: state entity_id: - input_number.set_sg_forced_charge_discharge_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 13051 value: '{{ states(''input_number.set_sg_forced_charge_discharge_power'') | int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_forced_charge_discharge_power mode: single - id: automation_sungrow_inverter_update_battery_forced_charge_discharge_power_input_slider_update alias: sungrow inverter update battery forced charge discharge power input slider update description: Updates battery forced charge discharge power input slider triggers: - trigger: state entity_id: - sensor.battery_forced_charge_discharge_power conditions: - condition: template value_template: '{{ states(''sensor.battery_forced_charge_discharge_power'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_forced_charge_discharge_power data: value: '{{ states(''sensor.battery_forced_charge_discharge_power'') }}' mode: single - id: automation_sungrow_inverter_update_battery_max_charge_power alias: sungrow inverter update battery max charge power description: Sets battery max charge power triggers: - trigger: state entity_id: - input_number.set_sg_battery_max_charge_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 33046 value: '{{ states(''input_number.set_sg_battery_max_charge_power'') |float /10 |int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_max_charge_power mode: single - id: automation_sungrow_inverter_update_battery_max_charge_power_input_slider_update alias: sungrow inverter update battery max charge power input slider update description: Updates battery max charge power input slider triggers: - trigger: state entity_id: - sensor.battery_max_charge_power conditions: - condition: template value_template: '{{ states(''sensor.battery_max_charge_power'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_battery_max_charge_power data: value: '{{ states(''sensor.battery_max_charge_power'') }}' mode: single - id: automation_sungrow_inverter_update_battery_max_discharge_power alias: sungrow inverter update battery max discharge power description: Sets battery max discharge power triggers: - trigger: state entity_id: - input_number.set_sg_battery_max_discharge_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 33047 value: '{{ states(''input_number.set_sg_battery_max_discharge_power'') |float /10 |int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_max_discharge_power mode: single - id: automation_sungrow_inverter_update_battery_max_discharge_power_input_slider_update alias: sungrow inverter update battery max discharge power input slider update description: Updates battery max discharge power input slider triggers: - trigger: state entity_id: - sensor.battery_max_discharge_power conditions: - condition: template value_template: '{{ states(''sensor.battery_max_discharge_power'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_battery_max_discharge_power data: value: '{{ states(''sensor.battery_max_discharge_power'') }}' mode: single - id: automation_sungrow_inverter_update_battery_charging_start_power alias: sungrow inverter update battery charging start power description: Sets battery charging start power triggers: - trigger: state entity_id: - input_number.set_sg_battery_charging_start_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 33148 value: '{{ states(''input_number.set_sg_battery_charging_start_power'') |float /10 |int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_charging_start_power mode: single - id: automation_sungrow_inverter_update_battery_charging_start_power_input_slider_update alias: sungrow inverter update battery charging start power input slider update description: Updates battery charging start power input slider triggers: - trigger: state entity_id: - sensor.battery_charging_start_power conditions: - condition: template value_template: '{{ states(''sensor.battery_charging_start_power'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_battery_charging_start_power data: value: '{{ states(''sensor.battery_charging_start_power'') }}' mode: single - id: automation_sungrow_inverter_update_battery_discharging_start_power alias: sungrow inverter update battery discharging start power description: Sets battery discharging start power triggers: - trigger: state entity_id: - input_number.set_sg_battery_discharging_start_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 33149 value: '{{ states(''input_number.set_sg_battery_discharging_start_power'') |float /10 | int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_discharging_start_power mode: single - id: automation_sungrow_inverter_update_battery_discharging_start_power_input_slider_update alias: sungrow inverter update battery discharging start power input slider update description: Updates battery discharging start power input slider triggers: - trigger: state entity_id: - sensor.battery_discharging_start_power conditions: - condition: template value_template: '{{ states(''sensor.set_sg_battery_discharging_start_power'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_battery_discharging_start_power data: value: '{{ states(''sensor.battery_discharging_start_power'') }}' mode: single - id: automation_sungrow_inverter_global_mpp_scan_manual_update alias: sungrow inverter global mpp scan manual update description: Updates Enable/Disable for global mpp scan manual triggers: - trigger: state entity_id: - sensor.global_mpp_scan_manual_raw conditions: - condition: template value_template: '{{ not is_state(''sensor.global_mpp_scan_manual_raw'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_global_mpp_scan_manual data: option: "{% if ((states('sensor.global_mpp_scan_manual_raw') | int(default=0))\ \ == 0x00AA) %} \n Enabled\n{% elif ((states('sensor.global_mpp_scan_manual_raw')\ \ | int(default=0)) == 0x0055) %} \n Disabled\n{% endif %}\n" mode: single - id: automation_sungrow_global_mpp_scan_manual alias: sungrow inverter global mpp scan manual description: Set global mpp scan manual triggers: - trigger: state entity_id: - input_select.set_sg_global_mpp_scan_manual conditions: [] variables: export_limit_enable: 170 export_limit_disable: 85 actions: - action: modbus.write_register data_template: hub: SungrowSHx slave: secret sungrow_modbus_slave address: 30229 value: "{% if is_state('input_select.set_sg_global_mpp_scan_manual', \"Enabled\"\ ) %} \n {{export_limit_enable}}\n{% elif is_state('input_select.set_sg_global_mpp_scan_manual',\ \ \"Disabled\") %}\n {{export_limit_disable}}\n{% else %}\n {{export_limit_disable}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.global_mpp_scan_manual_raw mode: single - id: automation_sungrow_inverter_2_state alias: sungrow inverter 2 state description: Enables/ stops the inverter triggers: - trigger: state entity_id: - input_select.set_sg_2_inverter_run_mode conditions: [] variables: sg_start: 207 sg_stop: 206 actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 12999 value: "{% if is_state('input_select.set_sg_2_inverter_run_mode', \"Enabled\"\ ) %}\n {{sg_start}}\n{% else %}\n {{sg_stop}}\n{% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.system_state_2 mode: single - id: automation_sungrow_inverter_2_state_input_selector_update alias: sungrow inverter 2 enable/ stop input selector update description: Updates enable/ stops input selector triggers: - trigger: state entity_id: - sensor.sungrow_inverter_state_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.sungrow_inverter_state_2'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_2_inverter_run_mode data: option: "{% if is_state('sensor.sungrow_inverter_state_2', \"Shutdown\") %}\n\ \ Shutdown\n{% else %}\n Enabled\n{% endif %}\n" mode: single - id: automation_sungrow_inverter_2_update_max_soc alias: sungrow inverter 2 update max SoC description: Updates Sungrow max Soc holding register triggers: - trigger: state entity_id: - input_number.set_sg_2_max_soc conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13057 value: '{{ states(''input_number.set_sg_2_max_soc'') | int *10}}' - action: homeassistant.update_entity data: entity_id: - sensor.max_soc_2 mode: single - id: automation_sungrow_inverter_2_update_max_soc_input_slider_update alias: sungrow inverter 2 max SoC input slider update description: Updates Sungrow max Soc input slider triggers: - trigger: state entity_id: - sensor.max_soc_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.max_soc_2'', ''unavailable'') }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_max_soc data: value: '{{ states(''sensor.max_soc_2'') }}' mode: single - id: automation_sungrow_inverter_2_update_min_soc alias: sungrow inverter 2 update min SoC description: Updates Sungrow min Soc holding register triggers: - trigger: state entity_id: - input_number.set_sg_2_min_soc conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13058 value: '{{ states(''input_number.set_sg_2_min_soc'') | int *10}}' - action: homeassistant.update_entity data: entity_id: - sensor.min_soc_2 mode: single - id: automation_sungrow_inverter_2_update_min_soc_input_slider_update alias: sungrow inverter 2 min SoC input slider update description: Updates Sungrow min Soc input slider triggers: - trigger: state entity_id: - sensor.min_soc_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.min_soc_2'', ''unavailable'') }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_min_soc data: value: '{{ states(''sensor.min_soc_2'') }}' mode: single - id: automation_sungrow_inverter_2_update_reserved_soc_for_backup alias: sungrow inverter 2 update reserved soc for backup description: Updates reserved SoC for backup register triggers: - trigger: state entity_id: - input_number.set_sg_2_reserved_soc_for_backup conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13099 value: '{{ states(''input_number.set_sg_2_reserved_soc_for_backup'') | int}}' - action: homeassistant.update_entity data: entity_id: - sensor.reserved_soc_for_backup_2 mode: single - id: automation_sungrow_inverter_2_update_reserved_backup_soc_input_slider_update alias: sungrow inverter 2 reserved backup SoC input slider update description: Updates Sungrow reserved backup Soc input slider triggers: - trigger: state entity_id: - sensor.reserved_soc_for_backup_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.reserved_soc_for_backup_2'', ''unavailable'') }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_reserved_soc_for_backup data: value: '{{ states(''sensor.reserved_soc_for_backup_2'') }}' mode: single - id: automation_sungrow_inverter_2_update_battery_forced_charge_discharge_cmd alias: sungrow inverter 2 update battery forced charge discharge cmd description: Updates Sungrow holding register for battery forced charge discharge command triggers: - trigger: state entity_id: - input_select.set_sg_2_battery_forced_charge_discharge_cmd conditions: [] variables: ems_forced_charge: 170 ems_forced_discharge: 187 ems_stop_default: 204 actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13050 value: "{% if is_state('input_select.set_sg_2_battery_forced_charge_discharge_cmd',\ \ \"Stop (default)\") %} \n {{ems_stop_default}}\n{% elif is_state('input_select.set_sg_2_battery_forced_charge_discharge_cmd',\ \ \"Forced charge\") %} \n {{ems_forced_charge}}\n{% elif is_state('input_select.set_sg_2_battery_forced_charge_discharge_cmd',\ \ \"Forced discharge\") %} \n {{ems_forced_discharge}}\n{% else %}\n {{ems_stop_default}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.battery_forced_charge_discharge_cmd_raw_2 mode: single - id: automation_sungrow_inverter_2_update_battery_forced_charge_discharge_cmd_input_select_update alias: sungrow inverter 2 update battery forced charge discharge cmd input select update description: Updates Sungrow battery forced charge discharge cmd input select triggers: - trigger: state entity_id: - sensor.battery_forced_charge_discharge_cmd_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.battery_forced_charge_discharge_cmd_2'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_2_battery_forced_charge_discharge_cmd data: option: '{{ states(''sensor.battery_forced_charge_discharge_cmd_2'') }}' mode: single - id: automation_sungrow_inverter_2_update_ems_mode alias: sungrow inverter 2 update EMS mode description: Updates EMS mode triggers: - trigger: state entity_id: - input_select.set_sg_2_ems_mode conditions: [] variables: ems_mode_self_consume: 0 ems_mode_forced: 2 ems_mode_external: 3 ems_mode_vpp: 4 ems_mode_microgrid: 8 actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13049 value: "{% if is_state('input_select.set_sg_2_ems_mode', \"Self-consumption\ \ mode (default)\") %} \n {{ems_mode_self_consume}}\n{% elif is_state('input_select.set_sg_2_ems_mode',\ \ \"Forced mode\") %} \n {{ems_mode_forced}}\n{% elif is_state('input_select.set_sg_2_ems_mode',\ \ \"External EMS\") %} \n {{ems_mode_external}}\n{% elif is_state('input_select.set_sg_2_ems_mode',\ \ \"VPP\") %} \n {{ems_mode_vpp}}\n{% elif is_state('input_select.set_sg_2_ems_mode',\ \ \"MicroGrid\") %} \n {{ems_mode_microgrid}}\n{% else %} \n {{ems_mode_self_consume}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.ems_mode_selection_raw_2 mode: single - id: automation_sungrow_inverter_2_update_load_adjustment_mode alias: sungrow inverter 2 update Load adjustment mode description: Updates Load adjustment mode triggers: - trigger: state entity_id: - input_select.set_sg_2_load_adjustment_mode conditions: [] variables: load_adjustment_mode_timing: 0 load_adjustment_on_off: 1 load_adjustment_power_optimized: 2 load_adjustment_disabled: 3 actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13001 value: "{% if is_state('input_select.set_sg_2_load_adjustment_mode', \"Timing\"\ ) %} \n {{load_adjustment_mode_timing}}\n{% elif is_state('input_select.set_sg_2_load_adjustment_mode',\ \ \"ON/OFF\") %} \n {{load_adjustment_on_off}}\n{% elif is_state('input_select.set_sg_2_load_adjustment_mode',\ \ \"Power optimization\") %} \n {{load_adjustment_power_optimized}}\n{% elif\ \ is_state('input_select.set_sg_2_load_adjustment_mode', \"Disabled\") %}\ \ \n {{load_adjustment_disabled}}\n{% else %} \n {{load_adjustment_disabled}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.load_adjustment_mode_selection_raw mode: single - id: automation_sungrow_inverter_2_update_load_adjustment_mode_on_off alias: sungrow inverter 2 update Load adjustment mode ON/OFF description: Updates Load adjustment mode ON/OFF triggers: - trigger: state entity_id: - input_select.set_sg_2_load_adjustment_mode_on_off conditions: [] variables: load_adjustment_mode_on_off_on: 170 load_adjustment_mode_on_off_off: 85 actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13010 value: "{% if is_state('input_select.set_sg_2_load_adjustment_mode_on_off',\ \ \"ON\") %} \n {{load_adjustment_mode_on_off_on}}\n{% elif is_state('input_select.set_sg_2_load_adjustment_mode_on_off',\ \ \"OFF\") %} \n {{load_adjustment_mode_on_off_off}}\n{% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.load_adjustment_mode_on_off_selection_raw mode: single - id: automation_sungrow_inverter_2_export_power_limit_mode_update alias: sungrow inverter 2 export power limit mode update description: Updates Enable/Disable for export power limit mode triggers: - trigger: state entity_id: - sensor.export_power_limit_mode_raw_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.export_power_limit_mode_raw_2'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_2_export_power_limit_mode data: option: "{% if ((states('sensor.export_power_limit_mode_raw_2') |int) == 0x00AA)\ \ %} \n Enabled\n{% elif ((states('sensor.export_power_limit_mode_raw_2')\ \ |int) == 0x0055) %} \n Disabled\n{% endif %}\n" mode: single - id: automation_sungrow_inverter_2_backup_mode alias: sungrow inverter 2 backup mode description: Set backup mode triggers: - trigger: state entity_id: - input_select.set_sg_2_backup_mode conditions: [] variables: enable: 170 disable: 85 actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13074 value: "{% if is_state('input_select.set_sg_2_backup_mode', \"Enabled\") %}\ \ \n {{enable}}\n{% elif is_state('input_select.set_sg_2_backup_mode', \"\ Disabled\") %}\n {{disable}}\n{% else %}\n {{disable}}\n{% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.backup_mode_raw_2 mode: single - id: automation_sungrow_inverter_2_backup_mode_update alias: sungrow inverter 2 backup mode mode update description: Updates Enable/Disable for backup mode triggers: - trigger: state entity_id: - sensor.backup_mode_raw_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.backup_mode_raw_2'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_2_backup_mode data: option: "{% if ((states('sensor.backup_mode_raw_2') |int) == 0xAA) %} \n Enabled\n\ {% elif ((states('sensor.backup_mode_raw_2') |int) == 0x55) %} \n Disabled\n\ {% endif %}\n" mode: single - id: automation_sungrow_inverter_2_export_power_limit_mode alias: sungrow inverter 2 export power limit mode description: Set export power limit mode triggers: - trigger: state entity_id: - input_select.set_sg_2_export_power_limit_mode conditions: [] variables: export_limit_enable: 170 export_limit_disable: 85 actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13086 value: "{% if is_state('input_select.set_sg_2_export_power_limit_mode', \"Enabled\"\ ) %} \n {{export_limit_enable}}\n{% elif is_state('input_select.set_sg_2_export_power_limit_mode',\ \ \"Disabled\") %}\n {{export_limit_disable}}\n{% else %}\n {{export_limit_disable}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.export_power_limit_mode_raw_2 mode: single - id: automation_sungrow_inverter_2_export_power_limit_update alias: sungrow inverter 2 export power limit update description: Updates export power limit slider triggers: - trigger: state entity_id: - sensor.export_power_limit_2 conditions: - condition: template value_template: '{{ states(''sensor.export_power_limit_2'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_export_power_limit data: value: '{{ states(''sensor.export_power_limit_2'') }}' mode: single - id: automation_sungrow_inverter_2_set_export_power_limit alias: sungrow inverter 2 export power limit description: Sets export power limit triggers: - trigger: state entity_id: - input_number.set_sg_2_export_power_limit conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13073 value: '{{ states(''input_number.set_sg_2_export_power_limit'') }}' - action: homeassistant.update_entity data: entity_id: - sensor.export_power_limit_2 mode: single - id: automation_sungrow_inverter_2_update_load_adjustment_mode_input_select_update alias: sungrow inverter 2 update Load adjustment mode input select update description: Updates Load adjustment mode input select triggers: - trigger: state entity_id: - sensor.load_adjustment_mode_selection conditions: - condition: template value_template: '{{ not is_state(''sensor.load_adjustment_mode_selection'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_2_load_adjustment_mode data: option: '{{ states(''sensor.load_adjustment_mode_selection'') }}' mode: single - id: automation_sungrow_inverter_2_update_ems_mode_input_select_update alias: sungrow inverter 2 update EMS mode input select update description: Updates EMS mode input select triggers: - trigger: state entity_id: - sensor.ems_mode_selection_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.ems_mode_selection_2'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_2_ems_mode data: option: '{{ states(''sensor.ems_mode_selection_2'') }}' mode: single - id: automation_sungrow_inverter_2_update_battery_forced_charge_discharge_power alias: sungrow inverter 2 update battery forced charge discharge power description: Sets battery forced charge discharge power triggers: - trigger: state entity_id: - input_number.set_sg_2_forced_charge_discharge_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 13051 value: '{{ states(''input_number.set_sg_2_forced_charge_discharge_power'') | int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_forced_charge_discharge_power_2 mode: single - id: automation_sungrow_inverter_2_update_battery_forced_charge_discharge_power_input_slider_update alias: sungrow inverter 2 update battery forced charge discharge power input slider update description: Updates battery forced charge discharge power input slider triggers: - trigger: state entity_id: - sensor.battery_forced_charge_discharge_power_2 conditions: - condition: template value_template: '{{ states(''sensor.battery_forced_charge_discharge_power_2'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_forced_charge_discharge_power data: value: '{{ states(''sensor.battery_forced_charge_discharge_power_2'') }}' mode: single - id: automation_sungrow_inverter_2_update_battery_max_charge_power alias: sungrow inverter 2 update battery max charge power description: Sets battery max charge power triggers: - trigger: state entity_id: - input_number.set_sg_2_battery_max_charge_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 33046 value: '{{ states(''input_number.set_sg_2_battery_max_charge_power'') |float /10 |int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_max_charge_power_2 mode: single - id: automation_sungrow_inverter_2_update_battery_max_charge_power_input_slider_update alias: sungrow inverter 2 update battery max charge power input slider update description: Updates battery max charge power input slider triggers: - trigger: state entity_id: - sensor.battery_max_charge_power_2 conditions: - condition: template value_template: '{{ states(''sensor.battery_max_charge_power_2'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_battery_max_charge_power data: value: '{{ states(''sensor.battery_max_charge_power_2'') }}' mode: single - id: automation_sungrow_inverter_2_update_battery_max_discharge_power alias: sungrow inverter 2 update battery max discharge power description: Sets battery max discharge power triggers: - trigger: state entity_id: - input_number.set_sg_2_battery_max_discharge_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 33047 value: '{{ states(''input_number.set_sg_2_battery_max_discharge_power'') |float /10 |int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_max_discharge_power_2 mode: single - id: automation_sungrow_inverter_2_update_battery_max_discharge_power_input_slider_update alias: sungrow inverter 2 update battery max discharge power input slider update description: Updates battery max discharge power input slider triggers: - trigger: state entity_id: - sensor.battery_max_discharge_power_2 conditions: - condition: template value_template: '{{ states(''sensor.battery_max_discharge_power_2'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_battery_max_discharge_power data: value: '{{ states(''sensor.battery_max_discharge_power_2'') }}' mode: single - id: automation_sungrow_inverter_2_update_battery_charging_start_power alias: sungrow inverter 2 update battery charging start power description: Sets battery charging start power triggers: - trigger: state entity_id: - input_number.set_sg_2_battery_charging_start_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 33148 value: '{{ states(''input_number.set_sg_2_battery_charging_start_power'') |float /10 |int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_charging_start_power mode: single - id: automation_sungrow_inverter_2_update_battery_charging_start_power_input_slider_update alias: sungrow inverter 2 update battery charging start power input slider update description: Updates battery charging start power input slider triggers: - trigger: state entity_id: - sensor.battery_charging_start_power conditions: - condition: template value_template: '{{ states(''sensor.battery_charging_start_power'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_battery_charging_start_power data: value: '{{ states(''sensor.battery_charging_start_power'') }}' mode: single - id: automation_sungrow_inverter_2_update_battery_discharging_start_power alias: sungrow inverter 2 update battery discharging start power description: Sets battery discharging start power triggers: - trigger: state entity_id: - input_number.set_sg_2_battery_discharging_start_power conditions: [] actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 33149 value: '{{ states(''input_number.set_sg_2_battery_discharging_start_power'') |float /10 | int}}' - action: homeassistant.update_entity data: entity_id: - sensor.battery_discharging_start_power_2 mode: single - id: automation_sungrow_inverter_2_update_battery_discharging_start_power_input_slider_update alias: sungrow inverter 2 update battery discharging start power input slider update description: Updates battery discharging start power input slider triggers: - trigger: state entity_id: - sensor.battery_discharging_start_power_2 conditions: - condition: template value_template: '{{ states(''sensor.set_sg_2_battery_discharging_start_power'') | is_number }}' actions: - action: input_number.set_value target: entity_id: input_number.set_sg_2_battery_discharging_start_power data: value: '{{ states(''sensor.battery_discharging_start_power_2'') }}' mode: single - id: automation_sungrow_inverter_2_global_mpp_scan_manual_update alias: sungrow inverter 2 global mpp scan manual update description: Updates Enable/Disable for global mpp scan manual triggers: - trigger: state entity_id: - sensor.global_mpp_scan_manual_raw_2 conditions: - condition: template value_template: '{{ not is_state(''sensor.global_mpp_scan_manual_raw_2'', ''unavailable'') }}' actions: - action: input_select.select_option target: entity_id: input_select.set_sg_2_global_mpp_scan_manual data: option: "{% if ((states('sensor.global_mpp_scan_manual_raw_2') | int(default=0))\ \ == 0x00AA) %} \n Enabled\n{% elif ((states('sensor.global_mpp_scan_manual_raw_2')\ \ | int(default=0)) == 0x0055) %} \n Disabled\n{% endif %}\n" mode: single - id: automation_sungrow_global_2_mpp_scan_manual alias: sungrow inverter 2 global mpp scan manual description: Set global mpp scan manual triggers: - trigger: state entity_id: - input_select.set_sg_2_global_mpp_scan_manual conditions: [] variables: export_limit_enable: 170 export_limit_disable: 85 actions: - action: modbus.write_register data_template: hub: SungrowSHx 2 slave: secret sungrow_modbus_slave_inv2 address: 30229 value: "{% if is_state('input_select.set_sg_2_global_mpp_scan_manual', \"Enabled\"\ ) %} \n {{export_limit_enable}}\n{% elif is_state('input_select.set_sg_2_global_mpp_scan_manual',\ \ \"Disabled\") %}\n {{export_limit_disable}}\n{% else %}\n {{export_limit_disable}}\n\ {% endif %}\n" - action: homeassistant.update_entity data: entity_id: - sensor.global_mpp_scan_manual_raw_2 mode: single