{"id":627,"date":"2024-01-28T16:19:58","date_gmt":"2024-01-28T16:19:58","guid":{"rendered":"https:\/\/hybrydaplus.pl\/?page_id=627"},"modified":"2024-07-28T12:39:58","modified_gmt":"2024-07-28T12:39:58","slug":"esphome-deye-1-fazowe","status":"publish","type":"page","link":"https:\/\/hybrydaplus.pl\/index.php\/esphome-yaml\/esphome-deye-1-fazowe\/","title":{"rendered":"EspHome \u2013 DEYE 1 fazowe"},"content":{"rendered":"\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \" >substitutions:\n  settings_skipped_updates: \"30\"\n  devicename: sunsynk\n  device_description: \"Sunsynk RS485 Logger\"\n  friendly_name: \"SunSynk\"\n\nesphome:\n  name: $devicename\n  comment: '${device_description}'\n  \nesp32:\n  board: nodemcu-32s\n  framework:\n    type: arduino\n\n# Enable logging\nlogger:\n  baud_rate: 0\n\n# Enable Home Assistant API\napi:\n  encryption:\n    key: !secret api_encryption_key\n\nota:\n  platform: esphome\n  password: !secret ota_password_sunsynk\n\nwifi:\n  ssid: !secret wifi_ssid\n  password: !secret wifi_password\n\n  # Enable fallback hotspot (captive portal) in case wifi connection fails\n  ap:\n    ssid: '${devicename}'\n    password: !secret fallback_password\n\n  fast_connect: true\n  power_save_mode: none\n\ncaptive_portal:\n\n# Enable time component to reset energy at midnight\n# https:\/\/esphome.io\/components\/time.html#home-assistant-time-source\ntime:\n  - platform: homeassistant\n    id: homeassistant_time\n     \nuart:\n  id: mod_bus\n  tx_pin: GPIO17\n  rx_pin: GPIO16\n  baud_rate: 9600\n  stop_bits: 1\n \nmodbus:\n  id: sunsynk_modbus\n \nmodbus_controller:\n  - id: sunsynk\n    address: 0x01\n    modbus_id: sunsynk_modbus\n    setup_priority: -10\n    update_interval: \"15s\"\n    command_throttle: \"50ms\"\n\n############################################### BINARY SENSORS ########################################\nbinary_sensor:           \n  - platform: modbus_controller            # 194 Grid Connected Status\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid Connected Status\"\n    id: sunsynk_esphome_grid_connected_status\n    register_type: holding\n    address: 194\n\n  - platform: modbus_controller           # 280 Gen Peak Shaving Status\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Gen Peak Shaving Status\"\n    id: sunsynk_esphome_gen_peak_shaving_status\n    register_type: holding\n    address: 280\n    bitmask: 0x10\n\n  - platform: modbus_controller           # 280 Grid Peak Shaving Status\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid Peak Shaving Status\"\n    id: sunsynk_esphome_grid_peak_shaving_status\n    register_type: holding\n    address: 280\n    bitmask: 0x100\n\n#                                               SENSORS                                               #\n#######################################################################################################\n\n############################################### BATTERY ###############################################\nsensor:\n  - platform: modbus_controller            # 182 Battery Temperature\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Battery Temperature\"\n    id: sunsynk_esphome_battery_temperature\n    register_type: holding\n    address: 182\n    unit_of_measurement: \"\u00b0C\"\n    accuracy_decimals: 1\n    device_class: temperature\n    state_class: measurement\n    value_type: U_WORD \n    filters:\n      - offset: -1000\n      - multiply: 0.1\n\n  - platform: modbus_controller            # 183 Battery Voltage\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Battery Voltage\"\n    id: sunsynk_esphome_battery_voltage\n    register_type: holding\n    address: 183\n    unit_of_measurement: \"V\"\n    accuracy_decimals: 1\n    device_class: voltage\n    state_class: measurement\n    filters:\n      - multiply: 0.01\n    value_type: U_WORD\n\n  - platform: modbus_controller            # 184 Battery SOC\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Battery SOC\"\n    id: sunsynk_esphome_battery_soc\n    register_type: holding\n    address: 184\n    unit_of_measurement: \"%\"\n    accuracy_decimals: 0\n    device_class: battery\n    value_type: U_WORD\n\n  - platform: modbus_controller            # 190 Battery Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Battery Power\"\n    id: sunsynk_esphome_battery_power\n    register_type: holding\n    address: 190\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    value_type: S_WORD\n\n  - platform: modbus_controller            # 191 Battery Current\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Battery Current\"\n    id: sunsynk_esphome_battery_current\n    register_type: holding\n    address: 191\n    unit_of_measurement: \"A\"\n    accuracy_decimals: 1\n    device_class: current\n    state_class: measurement\n    value_type: S_WORD\n    filters:\n      - multiply: 0.01\n\n  - platform: modbus_controller            # 217 Battery Capacity Shutdown\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Battery Capacity Shutdown\"\n    id: sunsynk_esphome_battery_capacity_shutdown\n    register_type: holding\n    address: 217\n    unit_of_measurement: \"%\"\n    accuracy_decimals: 0\n    device_class: battery\n\n############################################### INVERTER ##############################################\n\n  - platform: modbus_controller            # 175 Inverter Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Inverter Power\"\n    id: sunsynk_esphome_inverter_power\n    register_type: holding\n    address: 175\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    value_type: S_WORD\n\n  - platform: modbus_controller            # 154 Inverter Voltage\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Inverter Voltage\"\n    id: sunsynk_esphome_inverter_voltage\n    register_type: holding\n    address: 154\n    unit_of_measurement: \"V\"\n    accuracy_decimals: 1\n    device_class: voltage\n    state_class: measurement\n    filters:\n      - multiply: 0.1\n    value_type: U_WORD \n\n  - platform: modbus_controller            # 164 Inverter Current\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Inverter Current\"\n    id: sunsynk_esphome_inverter_current\n    register_type: holding\n    address: 164\n    unit_of_measurement: \"A\"\n    accuracy_decimals: 1\n    device_class: current\n    state_class: measurement\n    value_type: S_WORD\n    filters:\n      - multiply: 0.01\n\n  - platform: modbus_controller            # 193 Inverter Frequency\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Inverter Frequency\"\n    id: sunsynk_esphome_inverter_frequency\n    register_type: holding\n    address: 193\n    unit_of_measurement: \"Hz\"\n    accuracy_decimals: 2\n    filters:\n      - multiply: 0.01\n    value_type: U_WORD\n    state_class: measurement\n\n############################################### GRID ##################################################\n\n  - platform: modbus_controller             # 079 Grid Frequency\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid Frequency\"\n    id: sunsynk_esphome_grid_frequency\n    register_type: holding\n    address: 79\n    unit_of_measurement: \"Hz\"\n    accuracy_decimals: 2\n    filters:\n      - multiply: 0.01\n    value_type: U_WORD\n    state_class: measurement\n\n  - platform: modbus_controller             # 169 Grid Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid Power\"\n    id: sunsynk_esphome_grid_power_169\n    register_type: holding\n    address: 169\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: S_WORD\n\n  - platform: modbus_controller             # 167 Grid LD Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid LD Power 167\"\n    id: sunsynk_esphome_grid_power_167\n    register_type: holding\n    address: 167\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: S_WORD\n\n  - platform: modbus_controller             # 168 Grid L2 Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid L2 Power 168\"\n    id: sunsynk_esphome_grid_power_168\n    register_type: holding\n    address: 168\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: S_WORD\n\n  - platform: modbus_controller             # 150 Grid Voltage\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid Voltage\"\n    id: sunsynk_esphome_grid_voltage\n    register_type: holding\n    address: 150\n    unit_of_measurement: \"V\"\n    accuracy_decimals: 1\n    device_class: voltage\n    state_class: measurement\n    filters:\n      - multiply: 0.1\n    value_type: U_WORD \n\n  - platform: modbus_controller             # 160 Grid Current\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid Current\"\n    id: sunsynk_esphome_grid_current\n    register_type: holding\n    address: 160\n    unit_of_measurement: \"A\"\n    accuracy_decimals: 1\n    device_class: current\n    state_class: measurement\n    value_type: S_WORD\n    filters:\n      - multiply: 0.01\n\n  - platform: modbus_controller             # 172 Grid CT Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid CT Power\"\n    id: sunsynk_esphome_grid_ct_power\n    register_type: holding\n    address: 172\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: S_WORD\n\n############################################### LOAD ################################################\n\n  - platform: modbus_controller            # 178 Load Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Load Power\"\n    id: sunsynk_esphome_load_power\n    register_type: holding\n    address: 178\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: S_WORD\n\n  - platform: modbus_controller            # 176 Load L1 Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Load L1 Power\"\n    id: sunsynk_esphome_load_l1_power\n    register_type: holding\n    address: 176\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: S_WORD\n\n  - platform: modbus_controller            # 177 Load L2 Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Load L2 Power\"\n    id: sunsynk_esphome_load_l2_power\n    register_type: holding\n    address: 177\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: S_WORD\n\n  - platform: modbus_controller            # 192 Load Frequency\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Load Frequency\"\n    id: sunsynk_esphome_load_frequency\n    register_type: holding\n    address: 192\n    unit_of_measurement: \"Hz\"\n    accuracy_decimals: 2\n    filters:\n      - multiply: 0.01\n    value_type: U_WORD\n    state_class: measurement\n\n############################################### SOLAR PV1 #############################################\n\n  - platform: modbus_controller            # 186 PV1 Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} PV1 Power\"\n    id: sunsynk_esphome_pv1_power\n    register_type: holding\n    address: 186\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: U_WORD\n\n  - platform: modbus_controller            # 109 PV1 Voltage\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} PV1 Voltage\"\n    id: sunsynk_esphome_pv1_voltage\n    register_type: holding\n    address: 109\n    unit_of_measurement: \"V\"\n    device_class: voltage\n    state_class: measurement\n    accuracy_decimals: 1\n    filters:\n      - multiply: 0.1\n    value_type: U_WORD\n\n  - platform: modbus_controller            # 110 PV1 Current\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} PV1 Current\"\n    id: sunsynk_esphome_pv1_current\n    register_type: holding\n    address: 110\n    unit_of_measurement: \"A\"\n    accuracy_decimals: 1\n    device_class: current\n    state_class: measurement\n    filters:\n      - multiply: 0.1\n    value_type: U_WORD\n\n############################################### SOLAR PV2 #############################################\n\n  - platform: modbus_controller            # 187 PV2 Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} PV2 Power\"\n    id: sunsynk_esphome_pv2_power\n    register_type: holding\n    address: 187\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: U_WORD\n\n  - platform: modbus_controller            # 111 PV2 Voltage\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} PV2 Voltage\"\n    id: sunsynk_esphome_pv2_voltage\n    register_type: holding\n    address: 111\n    unit_of_measurement: \"V\"\n    accuracy_decimals: 1\n    filters:\n      - multiply: 0.1\n    device_class: voltage\n    state_class: measurement\n    value_type: U_WORD\n\n  - platform: modbus_controller            # 112 PV2 Current\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} PV2 Current\"\n    id: sunsynk_esphome_pv2_current\n    register_type: holding\n    address: 112\n    unit_of_measurement: \"A\"\n    accuracy_decimals: 1\n    device_class: current\n    state_class: measurement\n    filters:\n      - multiply: 0.1\n    value_type: U_WORD\n\n############################################### SOLAR TOTAL ###########################################\n\n  - platform: template                   # Sum of PV1 and PV2 to get total PV Power\n    name: \"${friendly_name} Solar Power\"\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    lambda: |-\n      return (id(sunsynk_esphome_pv1_power).state + id(sunsynk_esphome_pv2_power).state);\n    update_interval: 5s\n\n############################################### OUTPUTS ###############################################\n\n  - platform: modbus_controller            # 166 Aux Power\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} AUX Power\"\n    id: sunsynk_esphome_aux_power\n    register_type: holding\n    address: 166\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    value_type: S_WORD\n\n  - platform: template                   # Essential Power based on register 175 + 167 - 166\n    name: \"${friendly_name} Essential Power\"\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    lambda: |-\n      return (id(sunsynk_esphome_inverter_power).state + id(sunsynk_esphome_grid_power_167).state - id(sunsynk_esphome_aux_power).state);\n    update_interval: 5s\n\n  - platform: template                   # Essential Power1 based on register 175 + 169 - 166\n    name: \"${friendly_name} Essential Power 1\"\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    lambda: |-\n      return (id(sunsynk_esphome_inverter_power).state + id(sunsynk_esphome_grid_power_169).state - id(sunsynk_esphome_aux_power).state);\n    update_interval: 5s\n\n  - platform: template                   # Nonessential Power 172 - 167\n    name: \"${friendly_name} Nonessential Power\"\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    lambda: |-\n      return (id(sunsynk_esphome_grid_ct_power).state - id(sunsynk_esphome_grid_power_167).state);\n    update_interval: 5s\n\n  - platform: template                   # Nonessential Power1 172 - 169\n    name: \"${friendly_name} Nonessential Power 1\"\n    unit_of_measurement: \"W\"\n    accuracy_decimals: 0\n    device_class: power\n    state_class: measurement\n    lambda: |-\n      return (id(sunsynk_esphome_grid_ct_power).state - id(sunsynk_esphome_grid_power_169).state);\n    update_interval: 5s\n\n############################################### ENERGY ################################################\n\n  - platform: modbus_controller            # 070 Day Battery Charge\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Day Battery Charge\"\n    id: sunsynk_esphome_day_battery_charge\n    register_type: holding\n    address: 70\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 1\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_WORD\n    filters:\n      - multiply: 0.1\n\n  - platform: modbus_controller            # 071 Day Battery Discharge\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Day Battery Discharge\"\n    id: sunsynk_esphome_day_battery_discharge\n    register_type: holding\n    address: 71\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 1\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_WORD\n    filters:\n      - multiply: 0.1\n\n  - platform: modbus_controller            # 072 Total Battery Charge\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Total Battery Charge\"\n    id: sunsynk_esphome_total_battery_charge\n    register_type: holding\n    address: 72\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 1\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_DWORD_R\n    filters:\n     - multiply: 0.1\n\n  - platform: modbus_controller            # 074 Total Battery Discharge\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Total Battery Discharge\"\n    id: sunsynk_esphome_total_battery_discharge\n    register_type: holding\n    address: 74\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 0\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_DWORD_R\n    filters:\n     - multiply: 0.1\n\n  - platform: modbus_controller            # 076 Day Grid Import\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Day Grid Import\"\n    id: sunsynk_esphome_day_grid_import\n    register_type: holding\n    address: 76\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 1\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_WORD\n    filters:\n      - multiply: 0.1\n\n  - platform: modbus_controller            # 077 Day Grid Export\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Day Grid Export\"\n    id: sunsynk_esphome_day_grid_export\n    register_type: holding\n    address: 77\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 1\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_WORD\n    filters:\n      - multiply: 0.1\n\n  - platform: modbus_controller            # 078 Total Grid Import\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Total Grid Import\"\n    id: sunsynk_esphome_total_grid_import\n    register_type: holding\n    address: 78\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 2\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_WORD\n    filters:\n      - multiply: 0.1\n\n  - platform: modbus_controller            # 081 Total Grid Export\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Total Grid Export\"\n    id: sunsynk_esphome_total_grid_export\n    register_type: holding\n    address: 81\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 2\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_WORD\n    filters:\n      - multiply: 0.1\n\n  - platform: modbus_controller            # 084 Day Load Energy\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Day Load Energy\"\n    id: sunsynk_esphome_day_load_energy\n    register_type: holding\n    address: 84\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 2\n    device_class: energy\n    state_class: total_increasing\n    filters:\n      - multiply: 0.1\n    value_type: U_WORD\n\n  - platform: modbus_controller            # 085 Total Load Energy\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Total Load Energy\"\n    id: sunsynk_esphome_total_load_energy\n    register_type: holding\n    address: 85\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 2\n    device_class: energy\n    state_class: total_increasing\n    value_type: U_DWORD_R\n    filters:\n      - multiply: 0.1\n\n  - platform: modbus_controller            # 096 Total PV Energy\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Total PV Energy\"\n    id: sunsynk_esphome_total_pv_energy\n    register_type: holding\n    address: 96\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 2\n    device_class: energy\n    state_class: total_increasing\n    filters:\n      - multiply: 0.1\n    value_type: U_DWORD_R  \n\n  - platform: modbus_controller            # 108 Day PV Energy\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Day PV Energy\"\n    id: sunsynk_esphome_day_pv_energy\n    register_type: holding\n    address: 108\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 1\n    device_class: energy\n    state_class: total_increasing\n    filters:\n      - multiply: 0.1\n    value_type: U_WORD\n\n############################################### TEMPERATURE ################################################\n\n  - platform: modbus_controller            # 090 DC Transformer Temperature\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} DC Transformer Temperature\"\n    id: sunsynk_esphome_dc_transformer_temperature\n    register_type: holding\n    address: 090\n    unit_of_measurement: \"\u00b0C\"\n    accuracy_decimals: 1\n    device_class: temperature\n    state_class: measurement\n    value_type: S_WORD\n    filters:\n      - offset: -1000\n      - multiply:  0.1\n\n  - platform: modbus_controller            # 091 Radiator Temperature\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Radiator Temperature\"\n    id: sunsynk_esphome_radiator_temperature\n    register_type: holding\n    address: 091\n    unit_of_measurement: \"\u00b0C\"\n    accuracy_decimals: 1\n    device_class: temperature\n    state_class: measurement\n    value_type: S_WORD\n    filters:\n      - offset: -1000\n      - multiply:  0.1\n\n################################################ READ SETTINGS #############################################\n\n  - platform: modbus_controller          # 250 System Mode Time 1\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} System Mode Time1\"\n    id: sunsynk_esphome_system_mode_time1\n    register_type: holding\n    skip_updates: ${settings_skipped_updates}\n    address: 250\n    icon: \"mdi:clock\"\n\n  - platform: modbus_controller          # 251 System Mode Time 2\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} System Mode Time2\"\n    id: sunsynk_esphome_system_mode_time2\n    register_type: holding\n    skip_updates: ${settings_skipped_updates}\n    address: 251   \n    icon: \"mdi:clock\"\n\n  - platform: modbus_controller          # 252 System Mode Time 3\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} System Mode Time3\"\n    id: sunsynk_esphome_system_mode_time3\n    register_type: holding\n    skip_updates: ${settings_skipped_updates}\n    address: 252\n    icon: \"mdi:clock\"\n\n  - platform: modbus_controller          # 253 System Mode Time 4\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} System Mode Time4\"\n    id: sunsynk_esphome_system_mode_time4\n    register_type: holding\n    skip_updates: ${settings_skipped_updates}\n    address: 253\n    icon: \"mdi:clock\"\n\n  - platform: modbus_controller          # 254 System Mode Time 5\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} System Mode Time5\"\n    id: sunsynk_esphome_system_mode_time5\n    register_type: holding\n    skip_updates: ${settings_skipped_updates}\n    address: 254\n    icon: \"mdi:clock\"\n\n  - platform: modbus_controller          # 255 System Mode Time 6\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} System Mode Time6\"\n    id: sunsynk_esphome_system_mode_time6\n    register_type: holding\n    skip_updates: ${settings_skipped_updates}\n    address: 255\n    icon: \"mdi:clock\"\n\n  - platform: modbus_controller        # 255 Grid Peak Shaving raw register value\n    modbus_controller_id: sunsynk\n    id: grid_peak_shaving_raw\n    register_type: holding\n    address: 280\n    value_type: U_WORD\n\n################################################ WRITE SETTINGS ############################################\n\nswitch:\n  - platform: modbus_controller          # 326 Toggle Force Generator\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Toggle Force Generator\"\n    id: sunsynk_esphome_toggle_force_generator\n    register_type: holding\n    address: 326\n    bitmask: 8192 # 2^13 to target bit 13\n    icon: \"mdi:toggle-switch\"\n    \n  - platform: modbus_controller          # 247 Toggle Solar Sell\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Toggle Solar sell\"\n    id: sunsynk_esphome_toggle_solar_sell\n    register_type: holding\n    address: 247\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\n  - platform: modbus_controller          # 248 Toggle System Timer\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Toggle System Timer\" \n    id: sunsynk_esphome_toggle_Time_of_Use\n    register_type: holding\n    address: 248\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\n  - platform: modbus_controller          # 243 Priority Load\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Toggle Priority Load\" \n    id: sunsynk_esphome_toggle_priority_load\n    register_type: holding\n    address: 243\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\n  - platform: modbus_controller          # 274 System Mode Grid Charge Time 1\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} System Mode Grid Charge Time1\"\n    id: sunsynk_esphome_toggle_grid_charge_time1\n    register_type: holding\n    address: 274\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\n  - platform: modbus_controller          # 275 System Mode Grid Charge Time 2\n    modbus_controller_id: sunsynk\n    use_write_multiple: true\n    name: \"${friendly_name} System Mode Grid Charge Time2\"\n    id: sunsynk_esphome_toggle_grid_charge_time2\n    register_type: holding\n    address: 275\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\n  - platform: modbus_controller          # 276 System Mode Grid Charge Time 3\n    modbus_controller_id: sunsynk\n    use_write_multiple: true\n    name: \"${friendly_name} System Mode Grid Charge Time3\"\n    id: sunsynk_esphome_toggle_grid_charge_time3\n    register_type: holding\n    address: 276\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\n  - platform: modbus_controller          # 277 System Mode Grid Charge Time 4\n    modbus_controller_id: sunsynk\n    use_write_multiple: true\n    name: \"${friendly_name} System Mode Grid Charge Time4\"\n    id: sunsynk_esphome_toggle_grid_charge_time4\n    register_type: holding\n    address: 277\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\n  - platform: modbus_controller          # 278 System Mode Grid Charge Time 5\n    modbus_controller_id: sunsynk\n    use_write_multiple: true\n    name: \"${friendly_name} System Mode Grid Charge Time5\"\n    id: sunsynk_esphome_toggle_grid_charge_time5\n    register_type: holding\n    address: 278\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\n  - platform: modbus_controller          # 279 System Mode Grid Charge Time 6\n    modbus_controller_id: sunsynk\n    use_write_multiple: true\n    name: \"${friendly_name} System Mode Grid Charge Time6\"\n    id: sunsynk_esphome_toggle_grid_charge_time6\n    register_type: holding\n    address: 279\n    bitmask: 1\n    icon: \"mdi:toggle-switch\"\n\nnumber:\n  - platform: modbus_controller         # 268 System Mode SoC Time 1\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_soc_time1\n    name: \"${friendly_name} System Mode SoC Time1\"\n    unit_of_measurement: \"%\"\n    address: 268\n    min_value: 0\n    max_value: 100\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 269 System Mode SoC Time 2\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_soc_time2\n    name: \"${friendly_name} System Mode SoC Time2\"\n    unit_of_measurement: \"%\"\n    address: 269\n    min_value: 0\n    max_value: 100\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 270 System Mode SoC Time 3\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_soc_time3\n    name: \"${friendly_name} System Mode SoC Time3\"\n    unit_of_measurement: \"%\"\n    address: 270\n    min_value: 0\n    max_value: 100\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 271 System Mode SoC Time 4\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_soc_time4\n    name: \"${friendly_name} System Mode SoC Time4\"\n    unit_of_measurement: \"%\"\n    address: 271\n    min_value: 0\n    max_value: 100\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 272 System Mode SoC Time 5\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_soc_time5\n    name: \"${friendly_name} System Mode SoC Time5\"\n    unit_of_measurement: \"%\"\n    address: 272\n    min_value: 0\n    max_value: 100\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 273 System Mode SoC Time 6\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_soc_time6\n    name: \"${friendly_name} System Mode SoC Time6\"\n    unit_of_measurement: \"%\"\n    address: 273\n    min_value: 0\n    max_value: 100\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 256 System Mode Power Time 1\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_power_time1\n    name: \"${friendly_name} System Mode Power Time1\"\n    unit_of_measurement: \"W\"\n    address: 256\n    min_value: 0\n    max_value: 8000\n    step: 100\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 257 System Mode Power Time 2\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_power_time2\n    name: \"${friendly_name} System Mode Power Time2\"\n    unit_of_measurement: \"W\"\n    address: 257\n    min_value: 0\n    max_value: 8000\n    step: 100\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 258 System Mode Power Time 3\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_power_time3\n    name: \"${friendly_name} System Mode Power Time3\"\n    unit_of_measurement: \"W\"\n    address: 258\n    min_value: 0\n    max_value: 8000\n    step: 100\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 259 System Mode Power Time 4\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_power_time4\n    name: \"${friendly_name} System Mode Power Time4\"\n    unit_of_measurement: \"W\"\n    address: 259\n    min_value: 0\n    max_value: 8000\n    step: 100\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 260 System Mode Power Time 5\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_power_time5\n    name: \"${friendly_name} System Mode Power Time5\"\n    unit_of_measurement: \"W\"\n    address: 260\n    min_value: 0\n    max_value: 8000\n    step: 100\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 261 System Mode Power Time 6\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_set_power_time6\n    name: \"${friendly_name} System Mode Power Time6\"\n    unit_of_measurement: \"W\"\n    address: 261\n    min_value: 0\n    max_value: 8000\n    step: 100\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 230 Grid Charge Battery current\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_grid_charge_bat_current\n    name: \"${friendly_name} Grid Charge Battery current\"\n    unit_of_measurement: \"A\"\n    address: 230\n    min_value: 0\n    max_value: 185\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 210 Battery Max Charge current\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_bat_max_charge_current\n    name: \"${friendly_name} Battery Max Charge current\"\n    unit_of_measurement: \"A\"\n    address: 210\n    min_value: 0\n    max_value: 185\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller         # 211 Battery Max Discharge current\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_bat_max_discharge_current\n    name: \"${friendly_name} Battery Max Discharge current\"\n    unit_of_measurement: \"A\"\n    address: 211\n    min_value: 0\n    max_value: 185\n    step: 5\n    value_type: U_WORD  \n\n  - platform: modbus_controller            # 293 Grid Peak Shaving Power\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid Peak shaving power\"\n    id: sunsynk_grid_peak_shaving_power\n    address: 293\n    unit_of_measurement: \"W\"\n    min_value: 0\n    max_value: 8000\n    step: 500\n    value_type: U_WORD\n\n  - platform: modbus_controller            # 245 Max Sell Power\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Max Sell power\"\n    id: sunsynk_max_sell_power\n    address: 245\n    unit_of_measurement: \"W\"\n    min_value: 0\n    max_value: 8000\n    step: 500\n    value_type: U_WORD\n\n\n################################################ TEXT SENSORS ##################################################\n\ntext_sensor:\n  - platform: modbus_controller            # 059 Overall State\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Overall State\"\n    id: sunsynk_esphome_overall_state\n    register_type: holding\n    skip_updates: ${settings_skipped_updates}\n    raw_encode: HEXBYTES\n    address: 59\n    lambda: |- \n      uint16_t value = modbus_controller::word_from_hex_str(x, 0);\n      switch (value) {\n        case 0: return std::string(\"standby\");\n        case 1: return std::string(\"selftest\");\n        case 2: return std::string(\"normal\");\n        case 3: return std::string(\"alarm\");\n        case 4: return std::string(\"fault\");\n        default: return std::string(\"unknown\");\n      }\n\n  - platform: template\n    name: \"${friendly_name} Time Slot 1\"\n    id: sunsynk_esphome_time_slot_1\n    icon: \"mdi:clock\"\n    lambda: |-\n        int minutes, hours;\n        if (id(sunsynk_esphome_system_mode_time1).state) {\n        minutes = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time1).state) % 100;\n        hours = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time1).state) \/ 100;\n        } else {\n          minutes = 0;\n          hours = 0;\n        }\n        char formatted_time[6];\n        snprintf(formatted_time, sizeof(formatted_time), \"%02d:%02d\", hours, minutes);\n        return esphome::optional&lt;std::string&gt;(formatted_time);\n  - platform: template\n    name: \"${friendly_name} Time Slot 2\"\n    id: sunsynk_esphome_time_slot_2\n    icon: \"mdi:clock\"\n    lambda: |-\n        int minutes, hours;\n        if (id(sunsynk_esphome_system_mode_time2).state) {\n        minutes = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time2).state) % 100;\n        hours = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time2).state) \/ 100;\n        } else {\n          minutes = 0;\n          hours = 0;\n        }\n        char formatted_time[6];\n        snprintf(formatted_time, sizeof(formatted_time), \"%02d:%02d\", hours, minutes);\n        return esphome::optional&lt;std::string&gt;(formatted_time);\n  - platform: template\n    name: \"${friendly_name} Time Slot 3\"\n    id: sunsynk_esphome_time_slot_3\n    icon: \"mdi:clock\"\n    lambda: |-\n        int minutes, hours;\n        if (id(sunsynk_esphome_system_mode_time3).state) {\n        minutes = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time3).state) % 100;\n        hours = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time3).state) \/ 100;\n        } else {\n          minutes = 0;\n          hours = 0;\n        }\n        char formatted_time[6];\n        snprintf(formatted_time, sizeof(formatted_time), \"%02d:%02d\", hours, minutes);\n        return esphome::optional&lt;std::string&gt;(formatted_time);\n  - platform: template\n    name: \"${friendly_name} Time Slot 4\"\n    id: sunsynk_esphome_time_slot_4\n    icon: \"mdi:clock\"\n    lambda: |-\n        int minutes, hours;\n        if (id(sunsynk_esphome_system_mode_time4).state) {\n        minutes = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time4).state) % 100;\n        hours = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time4).state) \/ 100;\n        } else {\n          minutes = 0;\n          hours = 0;\n        }\n        char formatted_time[6];\n        snprintf(formatted_time, sizeof(formatted_time), \"%02d:%02d\", hours, minutes);\n        return esphome::optional&lt;std::string&gt;(formatted_time);\n  - platform: template\n    name: \"${friendly_name} Time Slot 5\"\n    id: sunsynk_esphome_time_slot_5\n    icon: \"mdi:clock\"\n    lambda: |-\n        int minutes, hours;\n        if (id(sunsynk_esphome_system_mode_time5).state) {\n        minutes = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time5).state) % 100;\n        hours = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time5).state) \/ 100;\n        } else {\n          minutes = 0;\n          hours = 0;\n        }\n        char formatted_time[6];\n        snprintf(formatted_time, sizeof(formatted_time), \"%02d:%02d\", hours, minutes);\n        return esphome::optional&lt;std::string&gt;(formatted_time);\n  - platform: template\n    name: \"${friendly_name} Time Slot 6\"\n    id: sunsynk_esphome_time_slot_6\n    icon: \"mdi:clock\"\n    lambda: |-\n        int minutes, hours;\n        if (id(sunsynk_esphome_system_mode_time6).state) {\n        minutes = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time6).state) % 100;\n        hours = static_cast&lt;int&gt;(id(sunsynk_esphome_system_mode_time6).state) \/ 100;\n        } else {\n          minutes = 0;\n          hours = 0;\n        }\n        char formatted_time[6];\n        snprintf(formatted_time, sizeof(formatted_time), \"%02d:%02d\", hours, minutes);\n        return esphome::optional&lt;std::string&gt;(formatted_time);\n\n\n################################################ SELECT SENSORS ################################################\n\nselect:\n  - platform: modbus_controller                   #243 Select Energy Patern\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_select_energy_pattern\n    name: \"${friendly_name} Energy Pattern\"\n    address: 243\n    value_type: U_WORD\n    optionsmap:\n      \"Battery first\": 0\n      \"Load first\": 1   \n         \n  - platform: modbus_controller                   #244 Select Work Mode\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    id: sunsynk_esphome_select_work_mode\n    name: \"${friendly_name} Work Mode\"\n    address: 244\n    value_type: U_WORD\n    optionsmap:\n      \"Selling First\": 0\n      \"Zero Export + Limit to Load Only\": 1\n      \"Limited to Home\": 2    \n\n  - platform: modbus_controller                  #280 Select Grid Peak Shaving\n    use_write_multiple: true\n    modbus_controller_id: sunsynk\n    name: \"${friendly_name} Grid Peak Shaving\"\n    id: sunsynk_esphome_select_grid_peak_shaving\n    address: 280\n    value_type: U_WORD\n    optionsmap:\n      \"Disabled\": 0\n      \"Enabled\": 256\n    lambda: |-\n      \/\/ we are only interested in the 8th bit binary 0001 0000 0000 need to map the options 0, 256 in select \n      \/\/ESP_LOGE(\"main\",\"Modbus Number incoming value = %d\",x);\n      \/\/ESP_LOGE(\"main\",\"Modbus eval value = %d\",(x &amp; 0x0100));\n      if ((x &amp; 0x0100) == 0)\n        return  std::string(\"Disabled\");\n      if ((x &amp; 0x0100) == 256)\n        return  std::string(\"Enabled\");\n      return {};\n    write_lambda: |-\n      \/\/ESP_LOGE(\"main\",\"Modbus write gets = %d\",value);\n      uint16_t unmodified =  id(grid_peak_shaving_raw).state;\n      \/\/ESP_LOGE(\"main\",\"Modbus write unmodified = %d\", unmodified);\n      \/\/ optionsmap should only return 2 values... 0 , 256 so bitmask with complement 0x0100 to ensure we keep the original values in register. Then appply OR with the value that was chosen\n      uint16_t modified = ((unmodified &amp; ~0x0100) | value);\n      \/\/ESP_LOGE(\"main\",\"Modbus write to write = %d\", modified);\n      return modified;<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":636,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-627","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/pages\/627","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/comments?post=627"}],"version-history":[{"count":2,"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/pages\/627\/revisions"}],"predecessor-version":[{"id":821,"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/pages\/627\/revisions\/821"}],"up":[{"embeddable":true,"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/pages\/636"}],"wp:attachment":[{"href":"https:\/\/hybrydaplus.pl\/index.php\/wp-json\/wp\/v2\/media?parent=627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}