⚡ Solarman Stick Logger by David Rapan

Thanks for your answer.
I’ve read the thread and tried all that was mentioned.
Changing to transparency mode changes back to data collection after a reboot of the stick.
In the config_hide-menu the port ist set to 8899. I’ve tried tcp and Modbus tcp and so on. Also I tried to fill in the HA-Server-IP in the advanced-page of the logger-webinterface.
(I can not try Up-/Downgrading the Logger-Firmware, because I don’t have the files. You also mention the 1.22 should work)
It is still not working.

So I guess my setup ist one of those, that won’t work and I need to look for a RS485-interface.

Here ist the Log from my actual last try. If I am reading it correctly, HA is establishing a connection, but does not get back any information?

2026-02-18T18:14:50.775505+00:00', 'options': {'host': '10.69.216.56', 'lookup_file': 'sofar_g3.yaml', 'additional_options': {'pack': 1}}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'subentries': [], 'title': '2740809903', 'unique_id': None, 'version': 2})
2026-02-18 19:15:00.270 DEBUG (MainThread) [custom_components.solarman] async_setup_entry: Coordinator.init -> async_config_entry_first_refresh
2026-02-18 19:15:00.270 DEBUG (MainThread) [custom_components.solarman.discovery] DiscoveryProtocol: Send to 10.69.216.56
2026-02-18 19:15:00.277 DEBUG (MainThread) [custom_components.solarman.discovery] DiscoveryProtocol: [10.69.216.56, E8FDF8489BD2, 2740809903] from ('10.69.216.56', 48899)
2026-02-18 19:15:00.597 DEBUG (MainThread) [custom_components.solarman.parser] sofar_g3.yaml w/ defaults for update_interval: 10, code: 3, min_span: 25, max_size: 125, digits: 6, parameters: {'mod': 0, 'mppt': 4, 'l': 3, 'pack': 1}
2026-02-18 19:15:00.600 DEBUG (MainThread) [custom_components.solarman.device] [10.69.216.56] Scheduling 11 query requests: [{'code': 3, 'start': 1028, 'end': 1067, 'count': 40}, {'code': 3, 'start': 1093, 'end': 1125, 'count': 33}, {'code': 3, 'start': 1156, 'end': 1199, 'count': 44}, {'code': 3, 'start': 1284, 'end': 1292, 'count': 9}, {'code': 3, 'start': 1412, 'end': 1417, 'count': 6}, {'code': 3, 'start': 1540, 'end': 1546, 'count': 7}, {'code': 3, 'start': 1667, 'end': 1691, 'count': 25}, {'code': 3, 'start': 4131, 'end': 4132, 'count': 2}, {'code': 3, 'start': 4173, 'end': 4178, 'count': 6}, {'code': 3, 'start': 4368, 'end': 4368, 'count': 1}, {'code': 3, 'start': 4487, 'end': 4492, 'count': 6}] #0
2026-02-18 19:15:00.600 DEBUG (MainThread) [custom_components.solarman.device] [10.69.216.56] Request 03 ❘ 0x03 ~ 1028 ❘ 0x0404: {'count': 40}
2026-02-18 19:15:00.600 DEBUG (MainThread) [custom_components.solarman.pysolarman] [10.69.216.56] SENT: a5 17 00 10 45 c2 00 af 70 5d a3 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 04 04 00 28 05 25 ad 15
2026-02-18 19:15:00.607 DEBUG (MainThread) [custom_components.solarman.pysolarman] [10.69.216.56] Successful connection!
2026-02-18 19:15:03.477 DEBUG (MainThread) [custom_components.solarman.config_flow] ConfigFlowHandler.async_get_options_flow: <ConfigEntry entry_id=01KHPFQM0E8Q8W385RFX5TVFSZ version=2 domain=solarman title=2740809903 state=ConfigEntryState.SETUP_IN_PROGRESS unique_id=None>
2026-02-18 19:15:03.478 DEBUG (MainThread) [custom_components.solarman.config_flow] OptionsFlowHandler.__init__: <ConfigEntry entry_id=01KHPFQM0E8Q8W385RFX5TVFSZ version=2 domain=solarman title=2740809903 state=ConfigEntryState.SETUP_IN_PROGRESS unique_id=None>
2026-02-18 19:15:03.478 DEBUG (MainThread) [custom_components.solarman.config_flow] OptionsFlowHandler.async_step_init: user_input: None, current: {'host': '10.69.216.56', 'lookup_file': 'sofar_g3.yaml', 'additional_options': {'pack': 1}}
2026-02-18 19:15:03.480 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_schema: custom_components/solarman/inverter_definitions/: ['Auto', 'afore_2mppt.yaml', 'afore_BNTxxxKTL-2mppt.yaml', 'afore_hybrid.yaml', 'anenji_hybrid.yaml', 'astro-energy_2mppt.yaml', 'chint_cps-scetl.yaml', 'deye_hybrid.yaml', 'deye_micro.yaml', 'deye_p3.yaml', 'deye_string.yaml', 'hinen_hybrid.yaml', 'invt_xd-tl.yaml', 'kstar_hybrid.yaml', 'maxge_string.yaml', 'megarevo_r-3h.yaml', 'pylontech_force.yaml', 'renon_ifl.yaml', 'sofar_g3.yaml', 'sofar_g3hyd.yaml', 'sofar_hybrid.yaml', 'sofar_string.yaml', 'solarman_dtsd422-d3.yaml', 'solis_1p-5g.yaml', 'solis_3p-4g.yaml', 'solis_3p-5g.yaml', 'solis_hybrid.yaml', 'solis_s6-gr1p.yaml', 'srne_asf.yaml', 'swatten_sih-th.yaml', 'tsun_tsol-ms.yaml']
2026-02-18 19:15:03.480 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_schema: data_schema: {'host': <class 'str'>, 'port': All(Coerce(int, msg=None), Range(min=1, max=65535, min_included=True, max_included=True, msg=None), msg=None), 'transport': <homeassistant.helpers.selector.SelectSelector object at 0x7fc1153514a0>, 'lookup_file': In(['Auto', 'afore_2mppt.yaml', 'afore_BNTxxxKTL-2mppt.yaml', 'afore_hybrid.yaml', 'anenji_hybrid.yaml', 'astro-energy_2mppt.yaml', 'chint_cps-scetl.yaml', 'deye_hybrid.yaml', 'deye_micro.yaml', 'deye_p3.yaml', 'deye_string.yaml', 'hinen_hybrid.yaml', 'invt_xd-tl.yaml', 'kstar_hybrid.yaml', 'maxge_string.yaml', 'megarevo_r-3h.yaml', 'pylontech_force.yaml', 'renon_ifl.yaml', 'sofar_g3.yaml', 'sofar_g3hyd.yaml', 'sofar_hybrid.yaml', 'sofar_string.yaml', 'solarman_dtsd422-d3.yaml', 'solis_1p-5g.yaml', 'solis_3p-4g.yaml', 'solis_3p-5g.yaml', 'solis_hybrid.yaml', 'solis_s6-gr1p.yaml', 'srne_asf.yaml', 'swatten_sih-th.yaml', 'tsun_tsol-ms.yaml']), 'additional_options': <homeassistant.data_entry_flow.section object at 0x7fc1152b0d70>}
2026-02-18 19:15:14.609 DEBUG (MainThread) [custom_components.solarman.pysolarman] [10.69.216.56] Connection closed. Will try to restart the connection
2026-02-18 19:15:14.617 DEBUG (MainThread) [custom_components.solarman.pysolarman] [10.69.216.56] Successful reconnection! Data expected. Will retry the last request
2026-02-18 19:15:28.609 DEBUG (MainThread) [custom_components.solarman.pysolarman] [10.69.216.56] Connection closed. Will try to restart the connection
2026-02-18 19:15:28.615 DEBUG (MainThread) [custom_components.solarman.pysolarman] [10.69.216.56] Successful reconnection! Data expected. Will retry the last request
2026-02-18 19:15:30.601 DEBUG (MainThread) [custom_components.solarman.discovery] DiscoveryProtocol: Send to 10.69.216.56
2026-02-18 19:15:30.608 DEBUG (MainThread) [custom_components.solarman.discovery] DiscoveryProtocol: [10.69.216.56, E8FDF8489BD2, 2740809903] from ('10.69.216.56', 48899)
2026-02-18 19:15:30.768 DEBUG (MainThread) [custom_components.solarman.pysolarman] [10.69.216.56] Closing connection
2026-02-18 19:15:30.768 DEBUG (MainThread) [custom_components.solarman.coordinator] Finished fetching 2740809903 data in 30.169 seconds (success: False)
2026-02-18 19:15:30.769 DEBUG (MainThread) [custom_components.solarman.pysolarman] [10.69.216.56] Closing connection

The final solution is to do the downgrade (the rest were just experiments)…

  • Some users got it to work using that downgrade-upgrade loop
  • Others had to stick with the downgraded version
1 Like

Thanks for your great work. May I ask why the serial number is not there anymore?
Why was it used before?

On your git repo for the great Solarman Stick Logger Integration there is written:

"Built on asynchronous [pysolarmanv5] and supports Modbus TCP ([ESP] [Waveshare], [Ethernet logger] LSE-3, etc.) "

So I assume it should work with Elfin EE11a and EW11a also?



It works with the Sunsynk HA Integration.

The config of the Elfin uses port 502 so I tried your integration with port 502 instead of 8899. “failed to connect”.
As far as I unterstood the solaman stick uses a non standard protocoll which is implemented by pysolarmanv5. Waveshare, ESP32 and ELFIN EE11a / EW11a using standard protokoll. So the question is: How to use standard Modbus to tcp protokoll with your integration?
I want to change to your Integration, because there are much more entities reported for Deye 3P inverters and I miss a lot of modbus-registers in the kellerza/sunsynk integration, like inverter-temp., battery-temp., Micro-Inverter switch for inverter-generator-imput…
Any hints how to use your integration with an Elfin EE11a or EW11a as it is a quiet simple Modbus to TCP device. Would be happy for any advice.

Thank you

Updated due to more insights

I found this on your github repo, went one step further, struggled again and described the current issue there:

Perhaps a documentation for usb modbus-rtu sticks, waveshare, esp32 and elfin EE11a / EW11a would be helpful? I could provide the Elfin doc when my szenario is up and running. :slightly_smiling_face:

Hi @TSA-lab, it’s just a feature added for convenience, but we may add some docs in the future, and sure if you’d like you can contribute too. That being said, there is a lot of information about this from other Modbus integrations. It’s just one google search away. :wink:

I got this working now. Just posting for future reference. I read a thread to upgrade 1.53 then downgrade back to 1.22. It’s strange but it did just that and it did fix the problem.

Does anyone know of any firmware updates for the Solis EN2-8M wifi data logger? Currently running MW3_15_0501_1.18 which has worked fine for 4 years but since I updated my home router to the WiFi AX standard the logger keeps losing wifi connection and then will not reconnect unless it is powered off / on. Router manufacturer (Fritz) suggested that logger needs a firmware update but Solis has said it’s obsolete and will not provide access to a later firmware. Have turned the AX mode off on the router which has helped but not eliminated the issue.

I’ve a different logger but ran into a very similar issue after a router upgrade…in the end I put in a 2.4GHz extender (with different wifi name) and inverter rock sold since then

1 Like

Thanks, after hunting though the cupboards I eventually found an old TP-Link MR3020 and I’ve set this into AP mode with a unique SSID and have now connected the inverter via that, fingers crossed it’s more reliable.

Whilst looking around at the numerous Solis data loggers I notice that the current one appears to be the S5-WiFi-ST which has 2.4GHz and 5GHz Wifi at £20. Has anyone evaluated it yet to see if there is anyway of getting a local interface?

I’ve created the below automation to enable the TOU Rule 0 which I think aligns with the registry definition.

  - action: solarman.write_multiple_registers
    data:
      device: 905228336e90c08a75f802196c9d9257
      address: 4384 #0x1120
      values:
        - 0       #0x1120
        - 1       #0x1121  
        - 256     #0x1122
        - 1536    #0x1123 
        - 50      #0x1124 
        - 0       #0x1125 
        - 2000    #0x1126
        - 257     #0x1127
        - 3103    #0x1128
        - 1       #0x1129
mode: single

I’m getting the below error though

2026-04-26 23:51:05.298 ERROR (MainThread) [homeassistant.components.automation.tou_rule] TOU Rule: Error executing script. Error for call_service at pos 1: The value contained in the request data field is not an allowable value
for the server.
2026-04-26 23:51:05.300 ERROR (MainThread) [homeassistant.components.automation.tou_rule] Error while executing automation automation.tou_rule: The value contained in the request data field is not an allowable value
for the server.

Any advise on what I’m not doing correctly?

I want to express my sincere gratitude for your work! I have a Deye SUN-6K-SG05LP1-EU-AM2 inverter and a Deye SE-F5 Pro-C battery, and the HA connection was quick and easy.
I have a question: can the following sensors be added to the default configuration?

10042 Temperate-AVE
10043 Temperate-CellMax
10044 Temperate-CellMin
10045 Temperate-MosMax
10048 SOH
10054 Max Cell V
10055 Min Cell V
10056 Cycle number

I checked the registers using the solarman.read_holding_registers action and compared the values ​​with those specified in the Deye Cloud app. Everything looks correct.

Read Holding Registers

"10040": 524
"10041": 10
"10042": 1215
"10043": 1220
"10044": 1210
"10045": 1250
"10046": 600
"10047": 422
"10048": 1000
"10049": 0
"10050": 1000
"10051": 0
"10052": 0
"10053": 0
"10054": 3280
"10055": 3278
"10056": 0

I am happy to provide any information that will help you. Thank you in advance!

I'm having trouble getting the integration working with an Anenji 6kw inverter. i get communication, but doesnt complete. here are the logs. Thanks for any help I can get.


Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 787, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/solarman/__init__.py", line 56, in async_setup_entry
2026-05-09 10:08:49.055 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] Closing connection

2026-05-09 10:08:54.133 DEBUG (MainThread) [custom_components.solarman] async_setup_entry({'created_at': '2026-05-02T17:58:28.823045+00:00', 'data': {}, 'discovery_keys': {}, 'disabled_by': None, 'domain': 'solarman', 'entry_id': '01KQMXF16PEYZMDW9ZDHHB45C5', 'minor_version': 0, 'modified_at': '2026-05-09T14:00:32.754578+00:00', 'options': {'host': '192.168.1.25', 'additional_options': {'mppt': 1, 'phase': 1, 'mb_slave_id': 2}}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'subentries': [], 'title': 'Inverter', 'unique_id': None, 'version': 2})

2026-05-09 10:08:54.134 DEBUG (MainThread) [custom_components.solarman] async_setup_entry: Coordinator.init -> async_config_entry_first_refresh

2026-05-09 10:08:54.135 DEBUG (MainThread) [custom_components.solarman.discovery] DiscoveryProtocol: Send to 192.168.1.25

2026-05-09 10:08:54.642 DEBUG (MainThread) [custom_components.solarman.device] [192.168.1.25] Scheduling 1 query request: [{'code': 3, 'start': 0, 'end': 22, 'count': 23}] #0

2026-05-09 10:08:54.642 DEBUG (MainThread) [custom_components.solarman.device] [192.168.1.25] Request 03 ❘ 0x03 ~ 0000 ❘ 0x0000: {'count': 23}

2026-05-09 10:08:54.643 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] SENT: a5 17 00 10 45 aa 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 00 00 00 17 05 f7 30 15

2026-05-09 10:08:54.650 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] Successful connection!

2026-05-09 10:08:54.659 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] RECV: a5 10 00 10 15 aa 5e fb 3f 77 d5 02 01 74 79 03 00 4d 10 00 00 82 c6 fb 69 06 00 c5 15

2026-05-09 10:08:54.659 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] SERIAL_SET: 3581362171

2026-05-09 10:08:54.743 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] SENT: a5 17 00 10 45 ab 00 fb 3f 77 d5 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 00 00 00 17 05 f7 b7 15

2026-05-09 10:09:00.760 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] RECV: a5 10 00 10 15 ab 5f fb 3f 77 d5 02 01 7a 79 03 00 53 10 00 00 82 c6 fb 69 05 00 d2 15

2026-05-09 10:09:00.761 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] SENT: a5 17 00 10 45 ac 00 fb 3f 77 d5 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 00 00 00 17 05 f7 b8 15

2026-05-09 10:09:06.769 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] RECV: a5 10 00 10 15 ac 60 fb 3f 77 d5 02 01 80 79 03 00 59 10 00 00 82 c6 fb 69 05 00 e0 15

2026-05-09 10:09:06.769 DEBUG (MainThread) [custom_components.solarman.device] [192.168.1.25] Request 03 ❘ 0x03 ~ 0000 ❘ 0x0000: {'count': 23}

2026-05-09 10:09:06.770 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] SENT: a5 17 00 10 45 ad 00 fb 3f 77 d5 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 00 00 00 17 05 f7 b9 15

2026-05-09 10:09:12.783 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] RECV: a5 10 00 10 15 ad 61 fb 3f 77 d5 02 01 86 79 03 00 5f 10 00 00 82 c6 fb 69 05 00 ee 15

2026-05-09 10:09:12.783 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] SENT: a5 17 00 10 45 ae 00 fb 3f 77 d5 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 00 00 00 17 05 f7 ba 15

2026-05-09 10:09:20.890 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] RECV: a5 10 00 10 15 ae 62 fb 3f 77 d5 02 01 8e 79 03 00 67 10 00 00 82 c6 fb 69 05 00 00 15

2026-05-09 10:09:20.890 DEBUG (MainThread) [custom_components.solarman.pysolarman] [192.168.1.25] Closing connection

2026-05-09 10:09:20.892 INFO (MainThread) [custom_components.solarman] Config entry 'Inverter' for solarman integration not ready yet: Error setuping Inverter: 'NoneType' object has no attribute 'parser'; Retrying in 10 seconds

2026-05-09 10:09:20.892 DEBUG (MainThread) [custom_components.solarman] Full exception

Traceback (most recent call last):

File "/config/custom_components/solarman/common.py", line 28, in wrapper

return await f(*args, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^
    config_entry.runtime_data = await Coordinator(hass, config_entry).init()
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/solarman/coordinator.py", line 70, in init
    await super().async_config_entry_first_refresh()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 326, in async_config_entry_first_refresh
    await self._async_config_entry_first_refresh()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 358, in _async_config_entry_first_refresh
    raise ex
homeassistant.exceptions.ConfigEntryNotReady: Error setuping Inverter: 'NoneType' object has no attribute 'parser'
` ` `

Awesome work @davidrapan . Data is everything. Data is King. I can now get data from my Sofar 3000TL string inverter. I had resorted to using a spare MyEnergi CT clamp, but that was only giving me generation and nothing else. Thank you

Hi @jigsaw, I'm facing similar problems, Sofar support remotely upgraded my hardware. I have 1.22 and my intergration (operational for 2 years) stopped working. I cannot permanently switch to "transparent" mode. Where did you find this thread about upgrade to 1.53 and downgrade back to 1.22? (hopefully with .bin files)

Took a while to find it again :grinning_face: ... Sofar: Unable to connect after firmware update · Issue #762 · davidrapan/ha-solarman

Firmwares GitHub - cvandesande/solarman-firmwares: A collection of firmware versions for the Solarman PV stick logger · GitHub

Hi @davidrapan, I hope you can assist me, I have had some problems setting up my Deye SUN-6K-SG04LP1-EU-SME 6kw hybrid inverter. I have tried going the modbus route, solarman direct integration and now your custom Solarman Integration. I keep getting errors. I even tried a beta version to see if that might accept my inverter but to no avail. The last error I have been getting is: " Failed setup, will retry: Error setuping Deye Inverter: 'NoneType' object has no attribute 'parser' "
I would appreciate any assistance.

Hi,
I have been using ‘Solarman integration by Stephan Joubert’ for several years now but I am interested in upgrading to ‘Solarman Stick Logger by David Rapan’. The Solarman integration by Stephan Joubert needs a separate installations in order to control the inverter, is this the same for Solarman Stick Logger by David Rapan?

Hi…welcome to the forum…have fun!

There is a whole lot on switching Integrations (and keeping your history) in the GitHub repository so suggest having a look/read there before doing anything…lots of steps to follow but is straight forward enough as long as you do everything
(and take a backup of HA first too)

This might be a good starting point for you > How to keep history data from previous solarman? · davidrapan/ha-solarman · Discussion #127 · GitHub