Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Communication issue SUNSYNK-12K-SG04LP3 using Waveshare RS485 to PoE (B) #438

Open
jeybee74 opened this issue Mar 2, 2025 · 6 comments
Open

Comments

@jeybee74
Copy link

jeybee74 commented Mar 2, 2025

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

@jeybee74
Copy link
Author

jeybee74 commented Mar 2, 2025

RS485 is connected using the red cat6 cable

Image

@Nurgus
Copy link

Nurgus commented Mar 10, 2025

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.

@proggaras
Copy link
Contributor

More infos about this splitter can be found here: https://solar-assistant.io/help/deye/2_in_1_bms_port

@jeybee74
Copy link
Author

jeybee74 commented Mar 10, 2025

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?

@proggaras
Copy link
Contributor

Not 100% sure, but as I understand this splitter is just used for those models that have this CAN and RS485 port combined.

@jeybee74
Copy link
Author

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..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants