Communication issue SUNSYNK-12K-SG04LP3 using Waveshare RS485 to PoE (B)
Hi, Thanks for a great integration 💯 ! I installed it yesterday and made it work using the same settings as shown in the Getting Started - Adapers & Wiring section for the SS 25k HV inverter.
When I moved the Waveshare POE device over to a permanent position I noticed that the data was not read every 5sek as I was expecting and now I feel I have tried everything. I now think that I probably had communication issues all along.
I have tried both serial-tcp with waveshare protocol set to none, and tcp with waveshare device protocol set to Modbus TCP-RTU. With excact same results. I have also tried 3 cables for RS485 and 2 LAN cables + tried without PoE and local power to waveshare device.
Does anyone else had same issues with this Waveshare RS485 to PoE (B) device, and found a fix?
Current config:
DRIVER: pymodbus
INVERTERS:
- SERIAL_NR: *******
HA_PREFIX: SS12k
MODBUS_ID: 1
DONGLE_SERIAL_NUMBER: "0"
PORT: serial-tcp://192.168.0.33:4196
SENSOR_DEFINITIONS: three-phase
SENSORS:
- energy_management
- power_flow_card
- pv2_power
SENSORS_FIRST_INVERTER:
- settings
- load_limit
MANUFACTURER: Sunsynk
READ_ALLOW_GAP: 2
READ_SENSORS_BATCH_SIZE: 20
SCHEDULES:
- KEY: W
READ_EVERY: 10
REPORT_EVERY: 60
CHANGE_ANY: false
CHANGE_BY: 80
CHANGE_PERCENT: 0
NUMBER_ENTITY_MODE: auto
PROG_TIME_INTERVAL: "60"
MQTT_HOST: core-mosquitto
MQTT_PORT: 1883
MQTT_USERNAME: *
MQTT_PASSWORD: *
Log file:
[12:23:57] INFO: Service restart after closing
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun sunsynk (no readiness notification)
s6-rc: info: service legacy-services successfully started
12:24:01 INFO Loading config: /data/options.json
12:24:01 INFO sunsynk library version: 0.8.2
12:24:01 INFO Schedules:
+-----------+-----+------+--------+-----------+----------+------------+
| Key | src | Read | Report | Change by | Change % | Change any |
+-----------+-----+------+--------+-----------+----------+------------+
| date_time | | 60 | 60 | | | True |
| rw | | 5 | 300 | | | True |
| enum | | 5 | 300 | | | True |
| w | * | 10 | 60 | 80.0 | | |
| kwh | | 300 | 300 | | | |
| any_unit | | 15 | 300 | | | |
| no_unit | | 15 | 300 | | | True |
+-----------+-----+------+--------+-----------+----------+------------+
12:24:01 INFO Using three phase sensor definitions.
12:24:01 INFO Added hidden sensors as other sensors depend on it: Device type, Protocol, Serial, Rated power
12:24:01 INFO Connecting to serial-tcp://192.168.0.33:4196
12:24:01 INFO PyModbus 3.8.3 serial-tcp: 192.168.0.33:4196
12:24:01 INFO Reading startup sensors Device type, Protocol, Serial
12:24:01 INFO ############################################################
12:24:01 INFO Inverter serial number '****7495'
12:24:01 INFO ############################################################
12:24:01 INFO Device type: Low voltage three phase hybrid, using the three-phase sensor definitions
12:24:01 INFO Protocol version: 1.4
12:24:01 INFO Reading all sensors Device type, Protocol, Serial, PV2 power, Battery current, Battery power, Battery SOC, Battery voltage, Day Battery Charge, Day Battery discharge, Day Grid Export, Day Grid Import, Day Load Energy, Day PV Energy, Grid Connected, Grid CT power, Grid frequency, Grid L1 power, Grid L2 power, Grid L3 power, Grid power, Inverter power, Load frequency, Load power, Load L1 power, Load L2 power, Load L3 power, Overall state, Priority Load, PV power, PV1 current, PV1 power, PV1 voltage, PV2 current, PV2 voltage, Use Timer, Total Battery Charge, Total Battery Discharge, Total Grid Export, Total Grid Import, Total PV Energy, Load Limit, Prog1 Capacity, Prog1 charge, Prog1 power, Prog1 Time, Prog2 Capacity, Prog2 charge, Prog2 power, Prog2 Time, Prog3 Capacity, Prog3 charge, Prog3 power, Prog3 Time, Prog4 Capacity, Prog4 charge, Prog4 power, Prog4 Time, Prog5 Capacity, Prog5 charge, Prog5 power, Prog5 Time, Prog6 Capacity, Prog6 charge, Prog6 power, Prog6 Time, Date Time, Grid Charge Battery current, Grid Charge Start Battery SOC, Grid Charge enabled, Solar Export, Export Limit power, Battery Max Charge current, Battery Max Discharge current, Battery Capacity current, Battery Shutdown Capacity, Battery Restart Capacity, Battery Low Capacity, Battery Type, Battery Wake Up, Battery Resistance, Battery Charge Efficiency, Grid Standard, Configured Grid Frequency, Configured Grid Phases, UPS delay time, Rated power
12:24:08 INFO MQTT: Connecting to userss@core-mosquitto:1883
12:24:09 INFO MQTT: Connection successful
12:24:09 INFO Read every (inverter 1)
+-----+----------------------------------------------------------------------------------+
| s | Sensors |
+-----+----------------------------------------------------------------------------------+
| 5 | prog5_power, configured_grid_frequency, prog5_time, prog1_charge, prog5_charge, |
| | prog6_power, use_timer, battery_max_discharge_current, prog6_time, prog3_time, |
| | battery_low_capacity, prog1_power, ups_delay_time, battery_type, prog6_capacity, |
| | export_limit_power, prog1_capacity, priority_load, battery_resistance, |
| | device_type, prog2_power, prog4_charge, prog4_capacity, prog2_charge, |
| | battery_max_charge_current, battery_shutdown_capacity, prog2_time, |
| | battery_restart_capacity, load_limit, prog6_charge, prog5_capacity, |
| | solar_export, prog3_charge, prog3_power, prog4_power, prog3_capacity, |
| | grid_charge_start_battery_soc, battery_capacity_current, prog1_time, |
| | prog2_capacity, prog4_time, grid_standard, grid_charge_battery_current, |
| | grid_charge_enabled, battery_wake_up, configured_grid_phases |
| 10 | pv_power, grid_l2_power, grid_power, inverter_power, battery_power, |
| | grid_ct_power, load_l2_power, pv2_power, rated_power, load_l1_power, |
| | load_l3_power, grid_l1_power, load_power, grid_l3_power, pv1_power |
| 15 | protocol, battery_voltage, pv1_current, pv1_voltage, pv2_current, |
| | grid_frequency, grid_connected, overall_state, battery_current, battery_soc, |
| | pv2_voltage, load_frequency, serial, battery_charge_efficiency |
| 60 | date_time |
| 300 | day_grid_import, day_grid_export, total_grid_import, day_load_energy, |
| | day_battery_charge, total_pv_energy, total_battery_discharge, |
| | total_battery_charge, day_battery_discharge, day_pv_energy, total_grid_export |
+-----+----------------------------------------------------------------------------------+
12:24:09 INFO Report every (inverter 1)
+-----+---------------------------------------------------------------------------------+
| s | Sensors |
+-----+---------------------------------------------------------------------------------+
| 60 | pv_power, grid_l2_power, grid_power, inverter_power, battery_power, |
| | grid_ct_power, load_l2_power, pv2_power, load_l1_power, load_l3_power, |
| | date_time, grid_l1_power, load_power, grid_l3_power, pv1_power |
| 300 | prog5_power, configured_grid_frequency, day_load_energy, prog5_time, |
| | prog1_charge, prog5_charge, total_pv_energy, use_timer, prog6_power, |
| | battery_max_discharge_current, prog6_time, prog3_time, day_battery_discharge, |
| | battery_soc, pv2_voltage, battery_low_capacity, prog1_power, ups_delay_time, |
| | battery_type, prog6_capacity, pv2_current, export_limit_power, |
| | total_grid_import, prog1_capacity, grid_frequency, day_battery_charge, |
| | priority_load, overall_state, battery_resistance, battery_current, prog2_power, |
| | prog4_capacity, prog4_charge, prog2_charge, battery_max_charge_current, |
| | battery_shutdown_capacity, prog2_time, battery_restart_capacity, |
| | battery_voltage, day_grid_import, load_limit, prog6_charge, prog5_capacity, |
| | solar_export, total_battery_discharge, prog3_charge, pv1_voltage, prog3_power, |
| | day_pv_energy, prog4_power, battery_charge_efficiency, prog3_capacity, |
| | day_grid_export, pv1_current, grid_charge_start_battery_soc, |
| | battery_capacity_current, battery_wake_up, grid_connected, prog1_time, |
| | prog2_capacity, prog4_time, total_battery_charge, grid_standard, |
| | grid_charge_battery_current, grid_charge_enabled, load_frequency, |
| | configured_grid_phases, total_grid_export |
+-----+---------------------------------------------------------------------------------+
12:25:28 ERROR OSError in callback read_ss12k: timeout reading 1 registers from 529; timeout reading 2 registers from 534; timeout reading 1 registers from 552; timeout reading 5 registers from 587; timeout reading 1 registers from 609; timeout reading 1 registers from 619; timeout reading 4 registers from 622 poll_need_to_read
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback
await cb_call
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor
await ist.read_sensors(
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 1 registers from 529; timeout reading 2 registers from 534; timeout reading 1 registers from 552; timeout reading 5 registers from 587; timeout reading 1 registers from 609; timeout reading 1 registers from 619; timeout reading 4 registers from 622 poll_need_to_read
12:30:03 ERROR OSError in callback read_ss12k: timeout reading 1 registers from 102; timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209; timeout reading 1 registers from 590; timeout reading 1 registers from 619; timeout reading 4 registers from 622; timeout reading 1 registers from 636; timeout reading 4 registers from 650; timeout reading 4 registers from 672 poll_need_to_read
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback
await cb_call
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor
await ist.read_sensors(
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 1 registers from 102; timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209; timeout reading 1 registers from 590; timeout reading 1 registers from 619; timeout reading 4 registers from 622; timeout reading 1 registers from 636; timeout reading 4 registers from 650; timeout reading 4 registers from 672 poll_need_to_read
12:30:49 ERROR OSError in callback read_ss12k: timeout reading 8 registers from 0; timeout reading 2 registers from 20; timeout reading 3 registers from 62; timeout reading 1 registers from 102 poll_need_to_read
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback
await cb_call
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor
await ist.read_sensors(
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 8 registers from 0; timeout reading 2 registers from 20; timeout reading 3 registers from 62; timeout reading 1 registers from 102 poll_need_to_read
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 1 registers from 529; timeout reading 2 registers from 534; timeout reading 1 registers from 552; timeout reading 5 registers from 587; timeout reading 1 registers from 609; timeout reading 1 registers from 619; timeout reading 4 registers from 622 poll_need_to_read
12:30:03 ERROR OSError in callback read_ss12k: timeout reading 1 registers from 102; timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209; timeout reading 1 registers from 590; timeout reading 1 registers from 619; timeout reading 4 registers from 622; timeout reading 1 registers from 636; timeout reading 4 registers from 650; timeout reading 4 registers from 672 poll_need_to_read
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback
await cb_call
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor
await ist.read_sensors(
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 1 registers from 102; timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209; timeout reading 1 registers from 590; timeout reading 1 registers from 619; timeout reading 4 registers from 622; timeout reading 1 registers from 636; timeout reading 4 registers from 650; timeout reading 4 registers from 672 poll_need_to_read
12:30:49 ERROR OSError in callback read_ss12k: timeout reading 8 registers from 0; timeout reading 2 registers from 20; timeout reading 3 registers from 62; timeout reading 1 registers from 102 poll_need_to_read
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback
await cb_call
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor
await ist.read_sensors(
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 8 registers from 0; timeout reading 2 registers from 20; timeout reading 3 registers from 62; timeout reading 1 registers from 102 poll_need_to_read
12:33:18 ERROR OSError in callback read_ss12k: timeout reading 1 registers from 0; timeout reading 1 registers from 102; timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182 poll_need_to_read
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback
await cb_call
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor
await ist.read_sensors(
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 1 registers from 0; timeout reading 1 registers from 102; timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182 poll_need_to_read
12:36:31 ERROR OSError in callback read_ss12k: timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209 poll_need_to_read
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback
await cb_call
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor
await ist.read_sensors(
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209 poll_need_to_read
12:40:01 ERROR OSError in callback read_ss12k: timeout reading 8 registers from 0; timeout reading 2 registers from 20; timeout reading 3 registers from 62; timeout reading 1 registers from 102; timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209; timeout reading 1 registers from 500; timeout reading 1 registers from 552; timeout reading 5 registers from 587; timeout reading 1 registers from 609; timeout reading 1 registers from 619; timeout reading 4 registers from 622; timeout reading 1 registers from 636; timeout reading 6 registers from 650; timeout reading 8 registers from 672 poll_need_to_read
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback
await cb_call
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor
await ist.read_sensors(
File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors
await self.inv.read_sensors(sensors)
File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors
raise IOError("; ".join(errs))
OSError: timeout reading 8 registers from 0; timeout reading 2 registers from 20; timeout reading 3 registers from 62; timeout reading 1 registers from 102; timeout reading 10 registers from 108; timeout reading 4 registers from 127; timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209; timeout reading 1 registers from 500; timeout reading 1 registers from 552; timeout reading 5 registers from 587; timeout reading 1 registers from 609; timeout reading 1 registers from 619; timeout reading 4 registers from 622; timeout reading 1 registers from 636; timeout reading 6 registers from 650; timeout reading 8 registers from 672 poll_need_to_read
12:40:52 WARNING Did not complete read, only read 1/10
12:44:58 ERROR OSError in callback read_ss12k: timeout reading 19 registers from 141; timeout reading 12 registers from 166; timeout reading 3 registers from 182; timeout reading 1 registers from 209; timeout reading 1 registers from 500; timeout reading 1 registers from 552; timeout reading 5 registers from 587; timeout reading 1 registers from 609; timeout reading 1 registers from 619; timeout reading 4 registers from 622; timeout reading 1 registers from 636; timeout reading 6 registers from 650; timeout reading 8 registers from 672 poll_need_to_read
RS485 is connected using the red cat6 cable
You have to use the same port as the battery. Not the ModeBUS port. You will need a splitter, see the guide on how to make one. Note that this is NOT just an ethernet splitter.
More infos about this splitter can be found here: https://solar-assistant.io/help/deye/2_in_1_bms_port
Thank you for the suggestion :) to connect to the BMS port,
However, I get the same issue, with the connection to the BMS port, pinout is the same, pin 1-3 for RS485.
Looks like the splitter only needs to be used on smaller inverters that is missing this ModeBUS port?
Not 100% sure, but as I understand this splitter is just used for those models that have this CAN and RS485 port combined.
Not 100% sure, but as I understand this splitter is just used for those models that have this CAN and RS485 port combined.
I did not recieve any data when I tried the BMS port. So I guess I am using the correct port. Some wrong setting somewhere is probably the issue I guess..
From your logs you successfully connect & read the initial sensors (including serial) from the inverter
12:24:01 INFO Connecting to serial-tcp://192.168.0.33:4196
12:24:01 INFO PyModbus 3.8.3 serial-tcp: 192.168.0.33:4196
12:24:01 INFO Reading startup sensors Device type, Protocol, Serial
12:24:01 INFO ############################################################
12:24:01 INFO Inverter serial number '****7495'
12:24:01 INFO ############################################################
12:24:01 INFO Device type: Low voltage three phase hybrid, using the three-phase sensor definitions
12:24:01 INFO Protocol version: 1.4
The next line successfully reads all your sensors. +mqtt connect and you should get initial values in HA
12:24:01 INFO Reading all sensors Device type, Protocol, Serial, PV2 power, Battery current, Battery power, Battery SOC, Battery voltage, Day Battery Charge, Day Battery discharge, Day Grid Export, Day Grid Import, Day Load Energy, Day PV Energy, Grid Connected, Grid CT power, Grid frequency, Grid L1 power, Grid L2 power, Grid L3 power, Grid power, Inverter power, Load frequency, Load power, Load L1 power, Load L2 power, Load L3 power, Overall state, Priority Load, PV power, PV1 current, PV1 power, PV1 voltage, PV2 current, PV2 voltage, Use Timer, Total Battery Charge, Total Battery Discharge, Total Grid Export, Total Grid Import, Total PV Energy, Load Limit, Prog1 Capacity, Prog1 charge, Prog1 power, Prog1 Time, Prog2 Capacity, Prog2 charge, Prog2 power, Prog2 Time, Prog3 Capacity, Prog3 charge, Prog3 power, Prog3 Time, Prog4 Capacity, Prog4 charge, Prog4 power, Prog4 Time, Prog5 Capacity, Prog5 charge, Prog5 power, Prog5 Time, Prog6 Capacity, Prog6 charge, Prog6 power, Prog6 Time, Date Time, Grid Charge Battery current, Grid Charge Start Battery SOC, Grid Charge enabled, Solar Export, Export Limit power, Battery Max Charge current, Battery Max Discharge current, Battery Capacity current, Battery Shutdown Capacity, Battery Restart Capacity, Battery Low Capacity, Battery Type, Battery Wake Up, Battery Resistance, Battery Charge Efficiency, Grid Standard, Configured Grid Frequency, Configured Grid Phases, UPS delay time, Rated power
but then things start timing out.
So either you unplugged the RS485 cable after the addon started up, or the waveshare acts up in some way.
You could try:
- adding only 1/2 sensors (no groups!!)
- making the schedules muuuuuch less aggressive. See the solarman example in the docs as guidance.
Once either of the above is working, gradually increase things (more sensors, more frequent reads) until it is working as you expect.
If it's a device issue, you can also try playing with these settings: (but almost doubt it will make a difference, since that first read of all sensors was ok)
READ_ALLOW_GAP: 2
READ_SENSORS_BATCH_SIZE: 20
From your logs you successfully connect & read the initial sensors (including serial) from the inverter
12:24:01 INFO Connecting to serial-tcp://192.168.0.33:4196 12:24:01 INFO PyModbus 3.8.3 serial-tcp: 192.168.0.33:4196 12:24:01 INFO Reading startup sensors Device type, Protocol, Serial 12:24:01 INFO ############################################################ 12:24:01 INFO Inverter serial number '****7495' 12:24:01 INFO ############################################################ 12:24:01 INFO Device type: Low voltage three phase hybrid, using the three-phase sensor definitions 12:24:01 INFO Protocol version: 1.4The next line successfully reads all your sensors. +mqtt connect and you should get initial values in HA
12:24:01 INFO Reading all sensors Device type, Protocol, Serial, PV2 power, Battery current, Battery power, Battery SOC, Battery voltage, Day Battery Charge, Day Battery discharge, Day Grid Export, Day Grid Import, Day Load Energy, Day PV Energy, Grid Connected, Grid CT power, Grid frequency, Grid L1 power, Grid L2 power, Grid L3 power, Grid power, Inverter power, Load frequency, Load power, Load L1 power, Load L2 power, Load L3 power, Overall state, Priority Load, PV power, PV1 current, PV1 power, PV1 voltage, PV2 current, PV2 voltage, Use Timer, Total Battery Charge, Total Battery Discharge, Total Grid Export, Total Grid Import, Total PV Energy, Load Limit, Prog1 Capacity, Prog1 charge, Prog1 power, Prog1 Time, Prog2 Capacity, Prog2 charge, Prog2 power, Prog2 Time, Prog3 Capacity, Prog3 charge, Prog3 power, Prog3 Time, Prog4 Capacity, Prog4 charge, Prog4 power, Prog4 Time, Prog5 Capacity, Prog5 charge, Prog5 power, Prog5 Time, Prog6 Capacity, Prog6 charge, Prog6 power, Prog6 Time, Date Time, Grid Charge Battery current, Grid Charge Start Battery SOC, Grid Charge enabled, Solar Export, Export Limit power, Battery Max Charge current, Battery Max Discharge current, Battery Capacity current, Battery Shutdown Capacity, Battery Restart Capacity, Battery Low Capacity, Battery Type, Battery Wake Up, Battery Resistance, Battery Charge Efficiency, Grid Standard, Configured Grid Frequency, Configured Grid Phases, UPS delay time, Rated powerbut then things start timing out.
So either you unplugged the RS485 cable after the addon started up, or the waveshare acts up in some way.
You could try:
- adding only 1/2 sensors (no groups!!)
- making the schedules muuuuuch less aggressive. See the solarman example in the docs as guidance.
Once either of the above is working, gradually increase things (more sensors, more frequent reads) until it is working as you expect.
If it's a device issue, you can also try playing with these settings: (but almost doubt it will make a difference, since that first read of all sensors was ok)
READ_ALLOW_GAP: 2 READ_SENSORS_BATCH_SIZE: 20
Thanks Johann,
I have tried updating the Waveshare rs485 to poe device to the latest firmware, still no improvements, I mean the integration is ok, I get data but still a lot of timeouts, seems to be about 3600 in a 24h period.
I have tried quite a few settings both for READ_ALLOW_GAP and READ_SENSORS_BATCH_SIZE, but it is the same issue with timeouts. I have also tried READ every 30seconds, still the same.
I just testet to read all sensors to see if it was any difference, here are the new log: ... | | battery_equalization_days, inverter_l3_voltage, battery_restart_voltage, | | | day_gen_energy, prog6_charge, inverter_l3_current, beep, prog5_capacity, | | | generator_max_operating_time, grid_peak_shaving, total_grid_export, drm4_code, | | | grid_give_power_to_relay_status, prog_wednesday_enabled, inverter_frequency, | | | drm6_code, grid_peak_shaving_power, battery_float_voltage, drm7_code, | | | prog3_mode, pv2_voltage | +-----+----------------------------------------------------------------------------------+ 16:49:16 WARNING us_version_grounding_fault: Unknown register value 0 16:49:16 WARNING allow_remote: Unknown register value 0 16:49:18 WARNING us_version_grounding_fault: Unknown register value 0 16:49:18 WARNING allow_remote: Unknown register value 0 16:49:27 WARNING us_version_grounding_fault: Unknown register value 0 16:49:27 WARNING allow_remote: Unknown register value 0 16:49:47 WARNING us_version_grounding_fault: Unknown register value 0 16:49:47 WARNING allow_remote: Unknown register value 0 16:50:26 WARNING us_version_grounding_fault: Unknown register value 0 16:50:26 WARNING allow_remote: Unknown register value 0 16:50:26 ERROR OSError in callback read_ss12k: timeout reading 1 registers from 544; timeout reading 1 registers from 552 poll_need_to_read Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/timer_callback.py", line 81, in wrap_callback await cb_call File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/sensor_callback.py", line 110, in callback_sensor await ist.read_sensors( File "/usr/local/lib/python3.12/site-packages/ha_addon_sunsynk_multi/a_inverter.py", line 55, in read_sensors await self.inv.read_sensors(sensors) File "/usr/local/lib/python3.12/site-packages/sunsynk/sunsynk.py", line 134, in read_sensors raise IOError("; ".join(errs)) OSError: timeout reading 1 registers from 544; timeout reading 1 registers from 552 poll_need_to_read 16:50:37 WARNING us_version_grounding_fault: Unknown register value 0 16:50:37 WARNING allow_remote: Unknown register value 0 16:50:48 WARNING us_version_grounding_fault: Unknown register value 0 16:50:48 WARNING allow_remote: Unknown register value 0 16:50:56 WARNING us_version_grounding_fault: Unknown register value 0 16:50:56 WARNING allow_remote: Unknown register value 0 16:50:58 WARNING us_version_grounding_fault: Unknown register value 0 16:50:58 WARNING allow_remote: Unknown register value 0 16:51:07 WARNING us_version_grounding_fault: Unknown register value 0 16:51:07 WARNING allow_remote: Unknown register value 0 16:51:18 WARNING us_version_grounding_fault: Unknown register value 0 16:51:18 WARNING allow_remote: Unknown register value 0 16:51:26 WARNING us_version_grounding_fault: Unknown register value 0 16:51:26 WARNING allow_remote: Unknown register value 0 16:51:28 WARNING us_version_grounding_fault: Unknown register value 0 16:51:28 WARNING allow_remote: Unknown register value 0 16:51:37 WARNING us_version_grounding_fault: Unknown register value 0 16:51:37 WARNING allow_remote: Unknown register value 0 16:51:45 WARNING us_version_grounding_fault: Unknown register value 0 16:51:45 WARNING allow_remote: Unknown register value 0 16:51:47 WARNING us_version_grounding_fault: Unknown register value 0 16:51:47 WARNING allow_remote: Unknown register value 0 16:51:57 WARNING us_version_grounding_fault: Unknown register value 0 16:51:57 WARNING allow_remote: Unknown register value 0 16:52:05 WARNING us_version_grounding_fault: Unknown register value 0 16:52:05 WARNING allow_remote: Unknown register value 0 16:52:07 WARNING us_version_grounding_fault: Unknown register value 0 16:52:07 WARNING allow_remote: Unknown register value 0
Does this make any sence?
I could ask for a firmware update for the Sunsynk inverter also, but I don't know if that have been a problem in the past..?
I have ordered a new waveshare device, version (C) from another supplier along with a couple of rs485 to USB, so I will test some more in a week or two. I will post my results here when I hopefully get this fixed :)
Regards Jon
Hi guys,
Here is an update of my timeout issues!
I have now bought a Waveshare USB-to-RS485 device and tested it, all timeout issues are gone (at least for the first 45min of testing). Seems ok now! I use this config:
I have tried these 3: Waveshare RS485 TO ETH (B) Waveshare RS485 TO POE ETH (B) Waveshare RS485 TO ETH (C) and I get the same timeout issues on all of them.. I'll try to test with just a few devices on my LAN as well just to be sure.
I made my own Wifi/LAN RS485 gateway device from an ESP32 with LAB and an RS485 breakout module.
https://github.com/kellerza/sunsynk/discussions/324#discussion-7043693
It has been running pretty reliably since August last year.
I made my own Wifi/LAN RS485 gateway device from an ESP32 with LAB and an RS485 breakout module.
https://github.com/kellerza/sunsynk/discussions/324#discussion-7043693
It has been running pretty reliably since August last year.
How often do you collect data, and is your entities updated consistently?
I have now run the waveshare USB-rs485 adapter since last night with READ_EVERY: 5. sometimes the entity is updated every 5sek-ish and sometimes longer, it is not consistent, often it can be over 20, and sometimes 38sek+ for a entity to update. I think the issue with the waveshare ethernet device is just that this type of delay in data is shown as timeout and that it also happens on the USB device but then it is not reported as a timeout..
I am not sure, but maybe a firmware update on the inverter could fix this, or maybe all users experience the same issue but doesn't notice it..?
I also see that the data from the CT is often reported all over the place, like you see in this picture
Log of CT-out of spec: 08:11:16 INFO grid_ct_power=-175 {619=0xff51 708=0xffff} 08:11:16 INFO grid_l1_power=-28 {622=0xffe4 687=0xffff} 08:11:16 INFO grid_l2_power=-56 {623=0xffc8 688=0xffff} 08:11:16 INFO grid_l3_power=-91 {624=0xffa5 689=0xffff} 08:11:16 INFO grid_power=-175 {625=0xff51 690=0xffff} 08:11:16 INFO inverter_power=3190 {636=0x0c76 694=0x0000} 08:11:16 INFO load_power=3015 {653=0x0bc7 659=0x0000} 08:11:16 INFO load_l1_power=869 {650=0x0365 656=0x0000} 08:11:16 INFO load_l2_power=1633 {651=0x0661 657=0x0000} 08:11:16 INFO load_l3_power=513 {652=0x0201 658=0x0000} 08:11:36 INFO grid_ct_power=-65528 {619=0x0008 708=0xffff} >12000 08:11:36 INFO grid_l1_power=-65536 {622=0x0000 687=0xffff} >12000 08:11:36 INFO grid_l2_power=-65531 {623=0x0005 688=0xffff} >12000 08:11:36 INFO grid_l3_power=-65533 {624=0x0003 689=0xffff} >12000 08:11:36 INFO grid_power=-65528 {625=0x0008 690=0xffff} >12000 08:11:36 INFO inverter_power=2967 {636=0x0b97 694=0x0000} 08:11:36 INFO load_power=2977 {653=0x0ba1 659=0x0000} 08:11:36 INFO load_l1_power=904 {650=0x0388 656=0x0000} 08:11:36 INFO load_l2_power=1587 {651=0x0633 657=0x0000} 08:11:36 INFO load_l3_power=486 {652=0x01e6 658=0x0000}
BR
`DRIVER: pymodbus INVERTERS:
- SERIAL_NR: "" HA_PREFIX: sunsynk MODBUS_ID: 1 DONGLE_SERIAL_NUMBER: "" PORT: tcp://192.168.10.**:502 SENSOR_DEFINITIONS: single-phase SENSORS:
- energy_management
- power_flow_card
- diagnostics
- battery SENSORS_FIRST_INVERTER:
- settings MANUFACTURER: Sunsynk READ_ALLOW_GAP: 5 READ_SENSORS_BATCH_SIZE: 20 SCHEDULES:
- KEY: W READ_EVERY: 10 REPORT_EVERY: 30 CHANGE_BY: 80
- KEY: RW READ_EVERY: 10 REPORT_EVERY: 30 CHANGE_ANY: true
- KEY: any_unit READ_EVERY: 15 REPORT_EVERY: 30 CHANGE_BY: 80 NUMBER_ENTITY_MODE: auto PROG_TIME_INTERVAL: 15 MQTT_HOST: 192.168.10.*** MQTT_PORT: 1883 MQTT_USERNAME: *********** MQTT_PASSWORD: *********** DEBUG: 2 DEBUG_DEVICE: /dev/ttyS0`
I am basically not using any electricity from the grid at the moment as there is still plenty of sunlight. So I have set the system up to disable charging or use from the grid when batteries are above 45%.
heres how my debug log is:
and here is my logfile from before, I can see when CT-out of spec:
08:11:16 INFO grid_ct_power=-175 {619=0xff51 708=0xffff} 08:11:16 INFO grid_l1_power=-28 {622=0xffe4 687=0xffff} 08:11:16 INFO grid_l2_power=-56 {623=0xffc8 688=0xffff} 08:11:16 INFO grid_l3_power=-91 {624=0xffa5 689=0xffff} 08:11:16 INFO grid_power=-175 {625=0xff51 690=0xffff} 08:11:16 INFO inverter_power=3190 {636=0x0c76 694=0x0000} 08:11:16 INFO load_power=3015 {653=0x0bc7 659=0x0000} 08:11:16 INFO load_l1_power=869 {650=0x0365 656=0x0000} 08:11:16 INFO load_l2_power=1633 {651=0x0661 657=0x0000} 08:11:16 INFO load_l3_power=513 {652=0x0201 658=0x0000}
here is starts: 08:11:36 INFO grid_ct_power=-65528 {619=0x0008 708=0xffff} >12000 08:11:36 INFO grid_l1_power=-65536 {622=0x0000 687=0xffff} >12000 08:11:36 INFO grid_l2_power=-65531 {623=0x0005 688=0xffff} >12000 08:11:36 INFO grid_l3_power=-65533 {624=0x0003 689=0xffff} >12000 08:11:36 INFO grid_power=-65528 {625=0x0008 690=0xffff} >12000
and rest is ok again: 08:11:36 INFO inverter_power=2967 {636=0x0b97 694=0x0000} 08:11:36 INFO load_power=2977 {653=0x0ba1 659=0x0000} 08:11:36 INFO load_l1_power=904 {650=0x0388 656=0x0000} 08:11:36 INFO load_l2_power=1587 {651=0x0633 657=0x0000} 08:11:36 INFO load_l3_power=486 {652=0x01e6 658=0x0000}
put cable in METER485 port. it will work by ORANGE pair - white-orange is B(D-) (rj45 pin 1) and orange is A(D+) (rj45 pin 2)
put cable in METER485 port. it will work by ORANGE pair - white-orange is B(D-) (rj45 pin 1) and orange is A(D+) (rj45 pin 2)
thanks for your comment.
I have now tried 7, yes SEVEN different USB-RS485 devices. ALL works fine with no timeout issues :) So I guess the cabling from the inverter is fine ;)
I have also tried 3 different Waveshare RS485-ethernet devices; (B), Poe (B) and (C), with different settings, same issue with timeouts on all. But they all work fine and data is coming in to the entities just as good as with the USB-RS485 devices 👍
BUT also with the USB device the data is not updated consistently every 5sek as it should 👎 , sometimes the entities is updated every 5 sek, but sometimes the data is 28sek, or more before the entity is updated (sometimes 1m+), there is no timeouts while this happends via the USB-RS485 devices.
I am beginning to think that the "timeout" issues or whatever is always there, but that it is visible in the logs only when I use the Ethernet devices due to the different communication methods, if this makes sense...?
Here is an update of my trials with the Waveshare ETH devices.
I have tried a lot of settings and I have found out that this is the settings that works best for me:
Marked out the RS485-ETH adapter spesific settings.
remember to set the IP and port to the Waveshare ETH device.
This gives me still a lot of timeouts, but all data is correct in the entities.
Issues with timeouts was fixed in the latest update. The integration now shows 0 timeouts with my Waveshare ETH RS-485 device since I updated to edge/dev version 3d60254.
👍👍