[App][Pro] Sofar (Release 1.1.58, Test 1.1.61)

Hi Adrian, did you see the last log files ?

Andre

Looking at the log, it seems you have two loggers:

Endpoint 1
10.10.0.253 : 8899
Solarman V5

Endpoint 2
10.10.0.30 : 502
Modbus TCP

I am going to add new app settings so you can switch off automatic probing and define everything manually as it seems the probe might be upsetting the logger so it fails to connect after the first attempt. Hopefully I will get this done this evening.

Hello Adrian,

That is correct. The installer connected the Wi-Fi dongle, which communicates with the SOFAR server and allows the SOFAR app on my phone to retrieve the inverter information.

However, the inverter also has an Ethernet connection, which I am currently using for testing.

It seems that both connections behave differently.
Ideally, I would like to retrieve the inverter data locally through the Ethernet connection, while leaving the Wi-Fi dongle connected solely for communication with the SOFAR server and the app on my phone.

If this is possible, that would be the preferred setup.

The reason I cannot simply disable or disconnect the Wi-Fi dongle is that I would then lose access to the inverter information in the SOFAR app on my phone.
However, I can disconnect the Ethernet connection if you would like me to test whether this has any effect.

kind regards, Andre

I have published a new test version. You can now switch from automatic detection to manual setup. In manual mode it relies on the Manually added device.

Hello Adrian,

I have now installed version 1.1.59 as a test. As you mentioned, I can see that it is a newer version, but unfortunately I do not see any improvement so far.

Just for your information: the Ethernet port has IP address 10.10.0.30, and the Wi-Fi dongle has IP address 10.10.0.253.

As you can see in the screenshot, I manually entered IP address 10.10.0.30 together with a serial number. I have to be honest, I took the serial number from the log, as this is the only serial number I know or can see.

Furthermore, I can still see in the log that it is trying to connect to 10.10.0.253, which is the Wi-Fi dongle.

I am also now getting several error messages when I open the configuration section of the SOFAR application. Please see the attached screenshots.

Errors:

Manual IP:

add solar:

LOG file

TCP modbud log:

  • 2026-09-30T04:58:17.060Z
    Registering manual sensors from settings

  • 2026-09-30T04:58:17.061Z
    Using Modbus slave ID 1 when registering sensor 3161728911

  • 2026-09-30T04:58:17.062Z
    Checking register 14 for grid frequency (modbus_tcp protocol):

  • 2026-09-30T04:58:17.066Z
    send_request: slave = 1, start = 14, end = 14, fc = 3

  • 2026-09-30T04:58:17.076Z
    Register 14 (sofar_lsw3): Error reading - MODBUS TCP exception response (function code 131, exception code 2)

  • 2026-09-30T04:58:17.076Z
    Returned null.

Checking register 1156 for grid frequency:

  • 2026-09-30T04:58:17.077Z
    send_request: slave = 1, start = 1156, end = 1156, fc = 3

  • 2026-09-30T04:58:22.094Z
    Connection timeout

  • 2026-09-30T04:58:22.098Z
    Register 1156 (sofar_g3hyd): No probe match (Connection timeout: no response from 10.10.0.30:502 after 5000ms)

  • 2026-09-30T04:58:22.099Z
    Returned null.

Checking register 524 for grid frequency:

  • 2026-09-30T04:58:22.100Z
    send_request: slave = 1, start = 524, end = 524, fc = 3

  • 2026-09-30T04:58:27.106Z
    Connection timeout

  • 2026-09-30T04:58:27.108Z
    Register 524 (sofar_hy_es): No probe match (Connection timeout: no response from 10.10.0.30:502 after 5000ms)

  • 2026-09-30T04:58:27.109Z
    Returned null.

Checking register 33282 for grid frequency:

  • 2026-09-30T04:58:27.110Z
    send_request: slave = 1, start = 33282, end = 33282, fc = 3

  • 2026-09-30T04:58:32.134Z
    Connection timeout

  • 2026-09-30T04:58:32.136Z
    Register 33282 (solis_hybrid): No probe match (Connection timeout: no response from 10.10.0.30:502 after 5000ms)

  • 2026-09-30T04:58:32.137Z
    Returned null.

Checking register 609 for grid frequency:

  • 2026-09-30T04:58:32.138Z
    send_request: slave = 1, start = 609, end = 609, fc = 3

  • 2026-09-30T04:58:37.145Z
    Connection timeout

  • 2026-09-30T04:58:37.148Z
    Register 609 (sun3p): No probe match (Connection timeout: no response from 10.10.0.30:502 after 5000ms)

  • 2026-09-30T04:58:37.149Z
    Returned null.

Checking register 1156 for grid frequency using the sofar_ktlx_g profile:

  • 2026-09-30T04:58:37.149Z
    send_request: slave = 1, start = 1156, end = 1156, fc = 3

  • 2026-09-30T04:58:42.178Z
    Connection timeout

  • 2026-09-30T04:58:42.179Z
    Register 1156 (sofar_ktlx_g): No probe match (Connection timeout: no response from 10.10.0.30:502 after 5000ms)

  • 2026-09-30T04:58:42.180Z
    Returned null.

Checking register 552 for grid frequency:

  • 2026-09-30T04:58:42.180Z
    send_request: slave = 1, start = 552, end = 552, fc = 3

  • 2026-09-30T04:58:47.187Z
    Connection timeout

  • 2026-09-30T04:58:47.190Z
    Register 552 (deye_sg04lp3): No probe match (Connection timeout: no response from 10.10.0.30:502 after 5000ms)

  • 2026-09-30T04:58:47.190Z
    Returned null.

Checking register 79 for grid frequency:

  • 2026-09-30T04:58:47.191Z
    send_request: slave = 1, start = 79, end = 79, fc = 3

  • 2026-09-30T04:58:52.214Z
    Connection timeout

  • 2026-09-30T04:58:52.216Z
    Register 79 (deye_sg04lp3): No probe match (Connection timeout: no response from 10.10.0.30:502 after 5000ms)

  • 2026-09-30T04:58:52.217Z
    Returned null.

No suitable inverters found

  • 2026-09-30T04:58:52.234Z
    Searching for inverters on the LAN

  • 2026-09-30T04:58:52.239Z
    ************** App has initialised. ***************

  • 2026-09-30T04:58:52.254Z
    2026-09-30T04:58:52.254Z [log] [ManagerDrivers] [Driver:battery] BatteryDriver has been initialized

  • 2026-09-30T04:58:52.259Z
    2026-09-30T04:58:52.259Z [log] [ManagerDrivers] [Driver:grid] GridDriver has been initialized

  • 2026-09-30T04:58:52.262Z
    2026-09-30T04:58:52.262Z [log] [ManagerDrivers] [Driver:summary] InverterDriver has been initialized

  • 2026-09-30T04:58:52.266Z
    2026-09-30T04:58:52.266Z [log] [ManagerDrivers] [Driver:solar_panel] SolarPanelDriver has been initialized

  • 2026-09-30T04:58:57.359Z
    Found Inverter: IP: 10.10.0.253, S.No: 3161728911

  • 2026-09-30T04:58:57.361Z
    Using Modbus slave ID 1 when registering sensor 3161728911

  • 2026-09-30T04:58:57.363Z
    Checking register 14 for grid frequency (modbus_tcp protocol):

  • 2026-09-30T04:58:57.365Z
    send_request: slave = 1, start = 14, end = 14, fc = 3

  • 2026-09-30T04:58:57.374Z
    Connection error: Error: connect ECONNREFUSED 10.10.0.253:502

  • 2026-09-30T04:58:57.376Z
    Register 14 (sofar_lsw3): Error reading - Connection error to 10.10.0.253:502 (ECONNREFUSED)

  • 2026-09-30T04:58:57.378Z
    Returned null.

Checking register 1156 for grid frequency:

  • 2026-09-30T04:58:57.379Z
    send_request: slave = 1, start = 1156, end = 1156, fc = 3

  • 2026-09-30T04:58:57.383Z
    Connection error: Error: connect ECONNREFUSED 10.10.0.253:502

  • 2026-09-30T04:58:57.384Z
    Register 1156 (sofar_g3hyd): Error reading - Connection error to 10.10.0.253:502 (ECONNREFUSED)

  • 2026-09-30T04:58:57.385Z
    Returned null.

Checking register 524 for grid frequency:

  • 2026-09-30T04:58:57.386Z
    send_request: slave = 1, start = 524, end = 524, fc = 3

  • 2026-09-30T04:58:58.413Z
    Connection error: Error: connect ECONNREFUSED 10.10.0.253:502

  • 2026-09-30T04:58:58.415Z
    Register 524 (sofar_hy_es): Error reading - Connection error to 10.10.0.253:502 (ECONNREFUSED)

  • 2026-09-30T04:58:58.416Z
    Returned null.

Checking register 33282 for grid frequency:

  • 2026-09-30T04:58:58.418Z
    send_request: slave = 1, start = 33282, end = 33282, fc = 3

  • 2026-09-30T04:58:58.423Z
    Connection error: Error: connect ECONNREFUSED 10.10.0.253:502

  • 2026-09-30T04:58:58.424Z
    Register 33282 (solis_hybrid): Error reading - Connection error to 10.10.0.253:502 (ECONNREFUSED)

  • 2026-09-30T04:58:58.425Z
    Returned null.

Checking register 609 for grid frequency:

  • 2026-09-30T04:58:58.427Z
    send_request: slave = 1, start = 609, end = 609, fc = 3

  • 2026-09-30T04:58:58.431Z
    Connection error: Error: connect ECONNREFUSED 10.10.0.253:502

  • 2026-09-30T04:58:58.432Z
    Register 609 (sun3p): Error reading - Connection error to 10.10.0.253:502 (ECONNREFUSED)

  • 2026-09-30T04:58:58.433Z
    Returned null.

Checking register 1156 for grid frequency using the sofar_ktlx_g profile:

  • 2026-09-30T04:58:58.434Z
    send_request: slave = 1, start = 1156, end = 1156, fc = 3

  • 2026-09-30T04:58:58.929Z
    Connection error: Error: connect ECONNREFUSED 10.10.0.253:502

  • 2026-09-30T04:58:58.931Z
    Register 1156 (sofar_ktlx_g): Error reading - Connection error to 10.10.0.253:502 (ECONNREFUSED)

  • 2026-09-30T04:58:58.932Z
    Returned null.

Checking register 552 for grid frequency:

  • 2026-09-30T04:58:58.933Z
    send_request: slave = 1, start = 552, end = 552, fc = 3

  • 2026-09-30T04:58:58.937Z
    Connection error: Error: connect ECONNREFUSED 10.10.0.253:502

  • 2026-09-30T04:58:58.938Z
    Register 552 (deye_sg04lp3): Error reading - Connection error to 10.10.0.253:502 (ECONNREFUSED)

  • 2026-09-30T04:58:58.939Z
    Returned null.

Checking register 79 for grid frequency:

  • 2026-09-30T04:58:58.940Z
    send_request: slave = 1, start = 79, end = 79, fc = 3

  • 2026-09-30T04:58:58.947Z
    Connection error: Error: connect ECONNREFUSED 10.10.0.253:502

  • 2026-09-30T04:58:58.948Z
    Register 79 (deye_sg04lp3): Error reading - Connection error to 10.10.0.253:502 (ECONNREFUSED)

  • 2026-09-30T04:58:58.950Z
    Returned null.

No suitable inverters found

Kind regards

The new test version is 1.1.60.
The new settings screens look like this:

Make sure you hit save after changing the Automatic to Manual.

Just add the 10.10.0.30 IP address and set it up as a Plain MODBUS TCP protocol, Keep the connection open, then try various Register Maps. You can use the Test button to see if it returns anything useful.

Hello Adrian,

Yes, sorry. I now have the correct version and have configured it as you suggested.

I correctly received the following message:
Testing 10.10.0.30:502 (Plain MODBUS TCP, slave ID 1)
TCP connection established
Using register map: sofar_g3hyd
Read 39 values (grid frequency 50.01 Hz)
The connection is working

settings i set:

i can add my solar now:
There is just one thing I noticed: my batteries are 2 × 5 kWh, but I can only see one of them, and I cannot add another one. Both batteries are connected to the same inverter (same make and model as everything).

LOG FILES:
  • 2026-09-30T06:45:00.583Z
    Registered manual device 10.10.0.30:502 (modbus_tcp, slave ID 1, register map sofar_g3hyd)

  • 2026-09-30T06:45:00.588Z
    ************** App has initialised. ***************

  • 2026-09-30T06:45:00.610Z
    2026-09-30T06:45:00.610Z [log] [ManagerDrivers] [Driver:battery] BatteryDriver has been initialized

  • 2026-09-30T06:45:00.617Z
    2026-09-30T06:45:00.617Z [log] [ManagerDrivers] [Driver:grid] GridDriver has been initialized

  • 2026-09-30T06:45:00.622Z
    2026-09-30T06:45:00.622Z [log] [ManagerDrivers] [Driver:solar_panel] SolarPanelDriver has been initialized

  • 2026-09-30T06:45:00.627Z
    2026-09-30T06:45:00.627Z [log] [ManagerDrivers] [Driver:summary] InverterDriver has been initialized

  • 2026-09-30T06:45:00.790Z
    Get Data

  • 2026-09-30T06:45:00.795Z
    send_request: slave = 1, start = 1028, end = 1028, fc = 3

  • 2026-09-30T06:45:01.018Z
    2026-09-30T06:45:01.018Z [log] [ManagerDrivers] [Driver:battery] [Device:5ac249fe-bc8f-4da2-ba21-dc48b44e8b89] BatteryDevice has been initialized

  • 2026-09-30T06:45:01.024Z
    2026-09-30T06:45:01.024Z [log] [ManagerDrivers] [Driver:summary] [Device:da8243c9-f168-4002-8533-84f328d86746] StationDevice has been initialized

  • 2026-09-30T06:45:01.030Z
    2026-09-30T06:45:01.030Z [log] [ManagerDrivers] [Driver:solar_panel] [Device:571286a5-f331-44c6-b7bc-76b408dc6723] SolarPanelDevice has been initialized

  • 2026-09-30T06:45:01.040Z
    send_request: slave = 1, start = 1048, end = 1048, fc = 3

  • 2026-09-30T06:45:01.140Z
    send_request: slave = 1, start = 1050, end = 1050, fc = 3

  • 2026-09-30T06:45:01.171Z
    2026-09-30T06:45:01.171Z [log] [ManagerDrivers] [Driver:grid] [Device:26ea2837-0caa-4423-944f-4f37847d859a] GridDevice has been initialized

  • 2026-09-30T06:45:01.242Z
    send_request: slave = 1, start = 1056, end = 1056, fc = 3

  • 2026-09-30T06:45:01.346Z
    send_request: slave = 1, start = 1156, end = 1173, fc = 3

  • 2026-09-30T06:45:01.452Z
    send_request: slave = 1, start = 1176, end = 1184, fc = 3

  • 2026-09-30T06:45:01.556Z
    send_request: slave = 1, start = 1187, end = 1195, fc = 3

  • 2026-09-30T06:45:01.660Z
    send_request: slave = 1, start = 1199, end = 1199, fc = 3

  • 2026-09-30T06:45:01.763Z
    send_request: slave = 1, start = 1412, end = 1417, fc = 3

  • 2026-09-30T06:45:01.870Z
    send_request: slave = 1, start = 1476, end = 1476, fc = 3

  • 2026-09-30T06:45:01.971Z
    send_request: slave = 1, start = 1540, end = 1546, fc = 3

  • 2026-09-30T06:45:02.072Z
    send_request: slave = 1, start = 1668, end = 1691, fc = 3

  • 2026-09-30T06:45:02.241Z
    Inverter data: : 3161728911, {
    “Inverter_status”: “grid-connected”,
    “Ambient_temperature”: 37,
    “Heatsink_Temperature”: 39,
    “Internal_Temperature”: 38,
    “Grid_Voltage”: 227.8,
    “Grid_Current”: 1.25,
    “Grid_Frequency”: 49.980000000000004,
    “Grid_Power”: 590,
    “Consumption”: 590,
    “PV1_Voltage”: 309.90000000000003,
    “PV1_Current”: 0.48,
    “PV1_Power”: 140,
    “PV2_Voltage”: 316.1,
    “PV2_Current”: 0.58,
    “PV2_Power”: 180,
    “PV_Power”: 300,
    “Battery_Power”: -350,
    “Battery_Charge”: 29,
    “Battery_SOH”: 100,
    “Battery_Voltage”: 390.3,
    “Battery_Current”: -0.93,
    “Battery_Temperature”: 46,
    “Battery_Cycles”: 19,
    “Daily_Production”: 0.29,
    “Battery_Charge_Today”: 0,
    “Battery_Discharge_Today”: 4.09,
    “Battery_Charge_Total”: 247.60000000000002,
    “Battery_Discharge_Total”: 215.5,
    “Import_Today”: 0.06,
    “Export_Today”: 0.06,
    “Total_Import”: 36.7,
    “Total_Export”: 548.3000000000001,
    “Consumed_Today”: 3.8200000000000003,
    “Total_Consumption”: 490.40000000000003,
    “Total_Generation”: 1142.9,
    “Daily_Battery_Charge”: 0,
    “Total_Battery_Charge”: 247.60000000000002,
    “Daily_Battery_Discharge”: 4.09,
    “Total_Battery_Discharge”: 215.5
    }

  • 2026-09-30T06:45:12.259Z
    Get Data

  • 2026-09-30T06:45:12.262Z
    send_request: slave = 1, start = 1028, end = 1028, fc = 3

  • 2026-09-30T06:45:12.266Z
    send_request: slave = 1, start = 1048, end = 1048, fc = 3

  • 2026-09-30T06:45:12.369Z
    send_request: slave = 1, start = 1050, end = 1050, fc = 3

  • 2026-09-30T06:45:12.471Z
    send_request: slave = 1, start = 1056, end = 1056, fc = 3

  • 2026-09-30T06:45:12.573Z
    send_request: slave = 1, start = 1156, end = 1173, fc = 3

  • 2026-09-30T06:45:12.675Z
    send_request: slave = 1, start = 1176, end = 1184, fc = 3

  • 2026-09-30T06:45:12.777Z
    send_request: slave = 1, start = 1187, end = 1195, fc = 3

  • 2026-09-30T06:45:12.879Z
    send_request: slave = 1, start = 1199, end = 1199, fc = 3

  • 2026-09-30T06:45:12.981Z
    send_request: slave = 1, start = 1412, end = 1417, fc = 3

  • 2026-09-30T06:45:13.083Z
    send_request: slave = 1, start = 1476, end = 1476, fc = 3

  • 2026-09-30T06:45:13.184Z
    send_request: slave = 1, start = 1540, end = 1546, fc = 3

  • 2026-09-30T06:45:13.285Z
    send_request: slave = 1, start = 1668, end = 1691, fc = 3

  • 2026-09-30T06:45:13.388Z
    Inverter data: : 3161728911, {
    “Inverter_status”: “grid-connected”,
    “Ambient_temperature”: 37,
    “Heatsink_Temperature”: 39,
    “Internal_Temperature”: 38,
    “Grid_Voltage”: 227,
    “Grid_Current”: 1.21,
    “Grid_Frequency”: 49.96,
    “Grid_Power”: 570,
    “Consumption”: 570,
    “PV1_Voltage”: 309.90000000000003,
    “PV1_Current”: 0.48,
    “PV1_Power”: 140,
    “PV2_Voltage”: 311.5,
    “PV2_Current”: 0.59,
    “PV2_Power”: 180,
    “PV_Power”: 300,
    “Battery_Power”: -330,
    “Battery_Charge”: 29,
    “Battery_SOH”: 100,
    “Battery_Voltage”: 390.1,
    “Battery_Current”: -0.86,
    “Battery_Temperature”: 46,
    “Battery_Cycles”: 19,
    “Daily_Production”: 0.29,
    “Battery_Charge_Today”: 0,
    “Battery_Discharge_Today”: 4.09,
    “Battery_Charge_Total”: 247.60000000000002,
    “Battery_Discharge_Total”: 215.5,
    “Import_Today”: 0.06,
    “Export_Today”: 0.06,
    “Total_Import”: 36.7,
    “Total_Export”: 548.3000000000001,
    “Consumed_Today”: 3.8200000000000003,
    “Total_Consumption”: 490.40000000000003,
    “Total_Generation”: 1142.9,
    “Daily_Battery_Charge”: 0,
    “Total_Battery_Charge”: 247.60000000000002,
    “Daily_Battery_Discharge”: 4.09,
    “Total_Battery_Discharge”: 215.5
    }

Kind regards
Andre

I have the same, 2 x 5 kWh batteries, but the inverter only reports the combined information and has no way to report individual information.
I’m not sure if other inverters can report individual data, but if you can find the appropriate registers I can add support for it.

Hi Adrian, thanks for the app. In manual mode it runs nicely on my Sofar HYD 15KTL-3PH (LSW-3 logger, app 1.1.60, Modbus TCP on port 8899, register map sofar_g3hyd).

One bug: the Grid device always shows the negative of the house consumption. In lib/sofar_g3hyd.json both Grid_Power and Consumption read register 1199 (0x04AF, load power). The same is visible in the log in post 228 above (Grid_Power 590 / Consumption 590).

The grid (PCC) power is in register 1160 (0x0488, ActivePower_PCC_Total). It is a signed value in 0.01 kW, which is why it looked like 65535 kW in post 11: 0xFFFF there is simply -1 = -0.01 kW (grid almost zero).

Register dump from my inverter, registers 1152 to 1207:

  • 0x0488 = 1 (0.01 kW); per phase 0x0493 = 26, 0x049E = -67, 0x04A9 = 43, sum 0.02 kW
  • 0x0485 = 160 (inverter output 1.60 kW), 0x04AF = 155 (load 1.55 kW)
  • At the same moment: PV 4000 W, battery charging 2220 W, load 1760 W, so grid is about 20 W export, which matches 0x0488.

Suggested fix: Grid_Power → registers [1160], rule 2 (signed), scale 10. Positive = export, so the sign handling of the Grid device can stay as it is.

FYI: with Solarman V5 my logger returned “Invalid V5 packet start” because Home Assistant was polling the same logger over Modbus TCP (the logger sends the responses to all connected clients). With HA stopped, Modbus TCP on 8899 works fine.

I have published a new test version. Can you try that to see if it fixes the issue?

Thanks a lot Adrian, 1.1.61 fixes it. The Grid device now reads its own value. At night it showed 2.63 kW import while the house load was 2.50 kW. This morning it hovers around zero (between -100 and +70 W) while PV gives 8.2 kW, the battery charges 2.9 kW and the house uses 5.1 kW, which matches the inverter keeping the grid at zero. Import is positive and export negative, as expected.

Thank you for the quick fix and for the great app!