Reputation Activity
-
sjlouw got a reaction from georgelza in My Sunsynk 8Kw & data collection setupHi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant:
Required Hardware:
ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-esp32-development-board.html?search_query=esp32&results=26
MAX485 RS-485 to TTL Convert Module @R19.95 https://www.diyelectronics.co.za/store/serial/1204-max485-rs-485-to-ttl-converter-module.html?search_query=485&results=21
3D Printed Case I use to pack it all: https://www.thingiverse.com/thing:4670334
My code for ESPHome https://esphome.io/
Note: On the Sunsynk inverter side it is set to Modbus ID 1 and runs in Slave mode. (I think this is default for the inverter)
esphome: name: "sunsynk" esp32: board: esp32dev framework: type: arduino logger: baud_rate: 0 api: ota: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "SOMEFALLBACKAP" password: "password" fast_connect: true power_save_mode: none time: - platform: sntp id: sntp_time timezone: Africa/Johannesburg servers: - pool.ntp.org uart: id: mod_bus tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: 4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: 20000ms sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Charge (kWh)" id: total_battery_charge_kwh register_type: holding address: 72 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Discharge (kWh)" id: total_battery_discharge_kwh register_type: holding address: 74 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Export (kWh)" id: total_grid_export_kwh register_type: holding address: 81 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Import (kWh)" id: total_grid_import_kwh register_type: holding address: 78 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Load Power (kWh)" id: total_load_power_kwh register_type: holding address: 85 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total PV Power (kWh)" id: total_pv_power_kwh register_type: holding address: 96 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Power" id: grid_power register_type: holding address: 169 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement filters: - lambda: |- float MIN_VALUE = 0.00; float MAX_VALUE = 8000.00; if (MIN_VALUE <= x && x <= MAX_VALUE) return x; else return {}; - platform: modbus_controller modbus_controller_id: sunsynk name: "Load Power" id: load_power register_type: holding address: 178 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV1 Power" id: pv1_power register_type: holding address: 186 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV2 Power" id: pv2_power register_type: holding address: 187 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery SOC" id: battery_soc register_type: holding address: 184 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery Charging Efficiency" id: battery_charging_efficiency register_type: holding address: 216 unit_of_measurement: "%" accuracy_decimals: 1 device_class: battery filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Connected Status" id: grid_connected_status register_type: holding address: 194 accuracy_decimals: 0 In Home Assistant, ensure to include the new sensors in the recorder:
recorder: include: entity_globs: - sensor.total_* - sensor.grid_* - sensor.load_* - sensor.pv*_power - sensor.power_production*
-
sjlouw got a reaction from chickenbeef in My Sunsynk 8Kw & data collection setupHi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant:
Required Hardware:
ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-esp32-development-board.html?search_query=esp32&results=26
MAX485 RS-485 to TTL Convert Module @R19.95 https://www.diyelectronics.co.za/store/serial/1204-max485-rs-485-to-ttl-converter-module.html?search_query=485&results=21
3D Printed Case I use to pack it all: https://www.thingiverse.com/thing:4670334
My code for ESPHome https://esphome.io/
Note: On the Sunsynk inverter side it is set to Modbus ID 1 and runs in Slave mode. (I think this is default for the inverter)
esphome: name: "sunsynk" esp32: board: esp32dev framework: type: arduino logger: baud_rate: 0 api: ota: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "SOMEFALLBACKAP" password: "password" fast_connect: true power_save_mode: none time: - platform: sntp id: sntp_time timezone: Africa/Johannesburg servers: - pool.ntp.org uart: id: mod_bus tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: 4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: 20000ms sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Charge (kWh)" id: total_battery_charge_kwh register_type: holding address: 72 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Discharge (kWh)" id: total_battery_discharge_kwh register_type: holding address: 74 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Export (kWh)" id: total_grid_export_kwh register_type: holding address: 81 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Import (kWh)" id: total_grid_import_kwh register_type: holding address: 78 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Load Power (kWh)" id: total_load_power_kwh register_type: holding address: 85 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total PV Power (kWh)" id: total_pv_power_kwh register_type: holding address: 96 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Power" id: grid_power register_type: holding address: 169 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement filters: - lambda: |- float MIN_VALUE = 0.00; float MAX_VALUE = 8000.00; if (MIN_VALUE <= x && x <= MAX_VALUE) return x; else return {}; - platform: modbus_controller modbus_controller_id: sunsynk name: "Load Power" id: load_power register_type: holding address: 178 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV1 Power" id: pv1_power register_type: holding address: 186 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV2 Power" id: pv2_power register_type: holding address: 187 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery SOC" id: battery_soc register_type: holding address: 184 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery Charging Efficiency" id: battery_charging_efficiency register_type: holding address: 216 unit_of_measurement: "%" accuracy_decimals: 1 device_class: battery filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Connected Status" id: grid_connected_status register_type: holding address: 194 accuracy_decimals: 0 In Home Assistant, ensure to include the new sensors in the recorder:
recorder: include: entity_globs: - sensor.total_* - sensor.grid_* - sensor.load_* - sensor.pv*_power - sensor.power_production*
-
sjlouw got a reaction from iiznh in My Sunsynk 8Kw & data collection setupHi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant:
Required Hardware:
ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-esp32-development-board.html?search_query=esp32&results=26
MAX485 RS-485 to TTL Convert Module @R19.95 https://www.diyelectronics.co.za/store/serial/1204-max485-rs-485-to-ttl-converter-module.html?search_query=485&results=21
3D Printed Case I use to pack it all: https://www.thingiverse.com/thing:4670334
My code for ESPHome https://esphome.io/
Note: On the Sunsynk inverter side it is set to Modbus ID 1 and runs in Slave mode. (I think this is default for the inverter)
esphome: name: "sunsynk" esp32: board: esp32dev framework: type: arduino logger: baud_rate: 0 api: ota: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "SOMEFALLBACKAP" password: "password" fast_connect: true power_save_mode: none time: - platform: sntp id: sntp_time timezone: Africa/Johannesburg servers: - pool.ntp.org uart: id: mod_bus tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: 4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: 20000ms sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Charge (kWh)" id: total_battery_charge_kwh register_type: holding address: 72 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Discharge (kWh)" id: total_battery_discharge_kwh register_type: holding address: 74 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Export (kWh)" id: total_grid_export_kwh register_type: holding address: 81 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Import (kWh)" id: total_grid_import_kwh register_type: holding address: 78 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Load Power (kWh)" id: total_load_power_kwh register_type: holding address: 85 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total PV Power (kWh)" id: total_pv_power_kwh register_type: holding address: 96 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Power" id: grid_power register_type: holding address: 169 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement filters: - lambda: |- float MIN_VALUE = 0.00; float MAX_VALUE = 8000.00; if (MIN_VALUE <= x && x <= MAX_VALUE) return x; else return {}; - platform: modbus_controller modbus_controller_id: sunsynk name: "Load Power" id: load_power register_type: holding address: 178 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV1 Power" id: pv1_power register_type: holding address: 186 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV2 Power" id: pv2_power register_type: holding address: 187 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery SOC" id: battery_soc register_type: holding address: 184 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery Charging Efficiency" id: battery_charging_efficiency register_type: holding address: 216 unit_of_measurement: "%" accuracy_decimals: 1 device_class: battery filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Connected Status" id: grid_connected_status register_type: holding address: 194 accuracy_decimals: 0 In Home Assistant, ensure to include the new sensors in the recorder:
recorder: include: entity_globs: - sensor.total_* - sensor.grid_* - sensor.load_* - sensor.pv*_power - sensor.power_production*
-
sjlouw got a reaction from BrettC in My Sunsynk 8Kw & data collection setupHi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant:
Required Hardware:
ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-esp32-development-board.html?search_query=esp32&results=26
MAX485 RS-485 to TTL Convert Module @R19.95 https://www.diyelectronics.co.za/store/serial/1204-max485-rs-485-to-ttl-converter-module.html?search_query=485&results=21
3D Printed Case I use to pack it all: https://www.thingiverse.com/thing:4670334
My code for ESPHome https://esphome.io/
Note: On the Sunsynk inverter side it is set to Modbus ID 1 and runs in Slave mode. (I think this is default for the inverter)
esphome: name: "sunsynk" esp32: board: esp32dev framework: type: arduino logger: baud_rate: 0 api: ota: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "SOMEFALLBACKAP" password: "password" fast_connect: true power_save_mode: none time: - platform: sntp id: sntp_time timezone: Africa/Johannesburg servers: - pool.ntp.org uart: id: mod_bus tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: 4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: 20000ms sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Charge (kWh)" id: total_battery_charge_kwh register_type: holding address: 72 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Discharge (kWh)" id: total_battery_discharge_kwh register_type: holding address: 74 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Export (kWh)" id: total_grid_export_kwh register_type: holding address: 81 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Import (kWh)" id: total_grid_import_kwh register_type: holding address: 78 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Load Power (kWh)" id: total_load_power_kwh register_type: holding address: 85 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total PV Power (kWh)" id: total_pv_power_kwh register_type: holding address: 96 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Power" id: grid_power register_type: holding address: 169 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement filters: - lambda: |- float MIN_VALUE = 0.00; float MAX_VALUE = 8000.00; if (MIN_VALUE <= x && x <= MAX_VALUE) return x; else return {}; - platform: modbus_controller modbus_controller_id: sunsynk name: "Load Power" id: load_power register_type: holding address: 178 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV1 Power" id: pv1_power register_type: holding address: 186 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV2 Power" id: pv2_power register_type: holding address: 187 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery SOC" id: battery_soc register_type: holding address: 184 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery Charging Efficiency" id: battery_charging_efficiency register_type: holding address: 216 unit_of_measurement: "%" accuracy_decimals: 1 device_class: battery filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Connected Status" id: grid_connected_status register_type: holding address: 194 accuracy_decimals: 0 In Home Assistant, ensure to include the new sensors in the recorder:
recorder: include: entity_globs: - sensor.total_* - sensor.grid_* - sensor.load_* - sensor.pv*_power - sensor.power_production*
-
sjlouw got a reaction from jacauc in My Sunsynk 8Kw & data collection setupHi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant:
Required Hardware:
ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-esp32-development-board.html?search_query=esp32&results=26
MAX485 RS-485 to TTL Convert Module @R19.95 https://www.diyelectronics.co.za/store/serial/1204-max485-rs-485-to-ttl-converter-module.html?search_query=485&results=21
3D Printed Case I use to pack it all: https://www.thingiverse.com/thing:4670334
My code for ESPHome https://esphome.io/
Note: On the Sunsynk inverter side it is set to Modbus ID 1 and runs in Slave mode. (I think this is default for the inverter)
esphome: name: "sunsynk" esp32: board: esp32dev framework: type: arduino logger: baud_rate: 0 api: ota: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "SOMEFALLBACKAP" password: "password" fast_connect: true power_save_mode: none time: - platform: sntp id: sntp_time timezone: Africa/Johannesburg servers: - pool.ntp.org uart: id: mod_bus tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: 4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: 20000ms sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Charge (kWh)" id: total_battery_charge_kwh register_type: holding address: 72 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Discharge (kWh)" id: total_battery_discharge_kwh register_type: holding address: 74 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Export (kWh)" id: total_grid_export_kwh register_type: holding address: 81 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Import (kWh)" id: total_grid_import_kwh register_type: holding address: 78 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Load Power (kWh)" id: total_load_power_kwh register_type: holding address: 85 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total PV Power (kWh)" id: total_pv_power_kwh register_type: holding address: 96 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Power" id: grid_power register_type: holding address: 169 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement filters: - lambda: |- float MIN_VALUE = 0.00; float MAX_VALUE = 8000.00; if (MIN_VALUE <= x && x <= MAX_VALUE) return x; else return {}; - platform: modbus_controller modbus_controller_id: sunsynk name: "Load Power" id: load_power register_type: holding address: 178 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV1 Power" id: pv1_power register_type: holding address: 186 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV2 Power" id: pv2_power register_type: holding address: 187 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery SOC" id: battery_soc register_type: holding address: 184 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery Charging Efficiency" id: battery_charging_efficiency register_type: holding address: 216 unit_of_measurement: "%" accuracy_decimals: 1 device_class: battery filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Connected Status" id: grid_connected_status register_type: holding address: 194 accuracy_decimals: 0 In Home Assistant, ensure to include the new sensors in the recorder:
recorder: include: entity_globs: - sensor.total_* - sensor.grid_* - sensor.load_* - sensor.pv*_power - sensor.power_production*
-
sjlouw got a reaction from ella in My Sunsynk 8Kw & data collection setupHi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant:
Required Hardware:
ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-esp32-development-board.html?search_query=esp32&results=26
MAX485 RS-485 to TTL Convert Module @R19.95 https://www.diyelectronics.co.za/store/serial/1204-max485-rs-485-to-ttl-converter-module.html?search_query=485&results=21
3D Printed Case I use to pack it all: https://www.thingiverse.com/thing:4670334
My code for ESPHome https://esphome.io/
Note: On the Sunsynk inverter side it is set to Modbus ID 1 and runs in Slave mode. (I think this is default for the inverter)
esphome: name: "sunsynk" esp32: board: esp32dev framework: type: arduino logger: baud_rate: 0 api: ota: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "SOMEFALLBACKAP" password: "password" fast_connect: true power_save_mode: none time: - platform: sntp id: sntp_time timezone: Africa/Johannesburg servers: - pool.ntp.org uart: id: mod_bus tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: 4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: 20000ms sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Charge (kWh)" id: total_battery_charge_kwh register_type: holding address: 72 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Discharge (kWh)" id: total_battery_discharge_kwh register_type: holding address: 74 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Export (kWh)" id: total_grid_export_kwh register_type: holding address: 81 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Import (kWh)" id: total_grid_import_kwh register_type: holding address: 78 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Load Power (kWh)" id: total_load_power_kwh register_type: holding address: 85 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total PV Power (kWh)" id: total_pv_power_kwh register_type: holding address: 96 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Power" id: grid_power register_type: holding address: 169 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement filters: - lambda: |- float MIN_VALUE = 0.00; float MAX_VALUE = 8000.00; if (MIN_VALUE <= x && x <= MAX_VALUE) return x; else return {}; - platform: modbus_controller modbus_controller_id: sunsynk name: "Load Power" id: load_power register_type: holding address: 178 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV1 Power" id: pv1_power register_type: holding address: 186 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV2 Power" id: pv2_power register_type: holding address: 187 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery SOC" id: battery_soc register_type: holding address: 184 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery Charging Efficiency" id: battery_charging_efficiency register_type: holding address: 216 unit_of_measurement: "%" accuracy_decimals: 1 device_class: battery filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Connected Status" id: grid_connected_status register_type: holding address: 194 accuracy_decimals: 0 In Home Assistant, ensure to include the new sensors in the recorder:
recorder: include: entity_globs: - sensor.total_* - sensor.grid_* - sensor.load_* - sensor.pv*_power - sensor.power_production*
-
sjlouw got a reaction from Sc00bs in My Sunsynk 8Kw & data collection setup@Sc00bs
Yes. Please see screenshot. The F13 Grid_mode_changed error is normal. Im also getting that if I switch between Slave and Master. The error should clear after a few mins.
-
sjlouw got a reaction from werner.potgieter in My Sunsynk 8Kw & data collection setupHi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant:
Required Hardware:
ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-esp32-development-board.html?search_query=esp32&results=26
MAX485 RS-485 to TTL Convert Module @R19.95 https://www.diyelectronics.co.za/store/serial/1204-max485-rs-485-to-ttl-converter-module.html?search_query=485&results=21
3D Printed Case I use to pack it all: https://www.thingiverse.com/thing:4670334
My code for ESPHome https://esphome.io/
Note: On the Sunsynk inverter side it is set to Modbus ID 1 and runs in Slave mode. (I think this is default for the inverter)
esphome: name: "sunsynk" esp32: board: esp32dev framework: type: arduino logger: baud_rate: 0 api: ota: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "SOMEFALLBACKAP" password: "password" fast_connect: true power_save_mode: none time: - platform: sntp id: sntp_time timezone: Africa/Johannesburg servers: - pool.ntp.org uart: id: mod_bus tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: 4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: 20000ms sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Charge (kWh)" id: total_battery_charge_kwh register_type: holding address: 72 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Discharge (kWh)" id: total_battery_discharge_kwh register_type: holding address: 74 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Export (kWh)" id: total_grid_export_kwh register_type: holding address: 81 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Import (kWh)" id: total_grid_import_kwh register_type: holding address: 78 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Load Power (kWh)" id: total_load_power_kwh register_type: holding address: 85 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total PV Power (kWh)" id: total_pv_power_kwh register_type: holding address: 96 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Power" id: grid_power register_type: holding address: 169 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement filters: - lambda: |- float MIN_VALUE = 0.00; float MAX_VALUE = 8000.00; if (MIN_VALUE <= x && x <= MAX_VALUE) return x; else return {}; - platform: modbus_controller modbus_controller_id: sunsynk name: "Load Power" id: load_power register_type: holding address: 178 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV1 Power" id: pv1_power register_type: holding address: 186 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV2 Power" id: pv2_power register_type: holding address: 187 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery SOC" id: battery_soc register_type: holding address: 184 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery Charging Efficiency" id: battery_charging_efficiency register_type: holding address: 216 unit_of_measurement: "%" accuracy_decimals: 1 device_class: battery filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Connected Status" id: grid_connected_status register_type: holding address: 194 accuracy_decimals: 0 In Home Assistant, ensure to include the new sensors in the recorder:
recorder: include: entity_globs: - sensor.total_* - sensor.grid_* - sensor.load_* - sensor.pv*_power - sensor.power_production*
-
sjlouw got a reaction from Sc00bs in My Sunsynk 8Kw & data collection setupHi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant:
Required Hardware:
ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-esp32-development-board.html?search_query=esp32&results=26
MAX485 RS-485 to TTL Convert Module @R19.95 https://www.diyelectronics.co.za/store/serial/1204-max485-rs-485-to-ttl-converter-module.html?search_query=485&results=21
3D Printed Case I use to pack it all: https://www.thingiverse.com/thing:4670334
My code for ESPHome https://esphome.io/
Note: On the Sunsynk inverter side it is set to Modbus ID 1 and runs in Slave mode. (I think this is default for the inverter)
esphome: name: "sunsynk" esp32: board: esp32dev framework: type: arduino logger: baud_rate: 0 api: ota: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "SOMEFALLBACKAP" password: "password" fast_connect: true power_save_mode: none time: - platform: sntp id: sntp_time timezone: Africa/Johannesburg servers: - pool.ntp.org uart: id: mod_bus tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: 4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: 20000ms sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Charge (kWh)" id: total_battery_charge_kwh register_type: holding address: 72 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Battery Discharge (kWh)" id: total_battery_discharge_kwh register_type: holding address: 74 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Export (kWh)" id: total_grid_export_kwh register_type: holding address: 81 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Grid Import (kWh)" id: total_grid_import_kwh register_type: holding address: 78 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total Load Power (kWh)" id: total_load_power_kwh register_type: holding address: 85 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Total PV Power (kWh)" id: total_pv_power_kwh register_type: holding address: 96 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Power" id: grid_power register_type: holding address: 169 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement filters: - lambda: |- float MIN_VALUE = 0.00; float MAX_VALUE = 8000.00; if (MIN_VALUE <= x && x <= MAX_VALUE) return x; else return {}; - platform: modbus_controller modbus_controller_id: sunsynk name: "Load Power" id: load_power register_type: holding address: 178 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV1 Power" id: pv1_power register_type: holding address: 186 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "PV2 Power" id: pv2_power register_type: holding address: 187 unit_of_measurement: "W" accuracy_decimals: 2 device_class: power state_class: measurement - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery SOC" id: battery_soc register_type: holding address: 184 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery - platform: modbus_controller modbus_controller_id: sunsynk name: "Battery Charging Efficiency" id: battery_charging_efficiency register_type: holding address: 216 unit_of_measurement: "%" accuracy_decimals: 1 device_class: battery filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: sunsynk name: "Grid Connected Status" id: grid_connected_status register_type: holding address: 194 accuracy_decimals: 0 In Home Assistant, ensure to include the new sensors in the recorder:
recorder: include: entity_globs: - sensor.total_* - sensor.grid_* - sensor.load_* - sensor.pv*_power - sensor.power_production*