# \[APP\]\[Pro\] Deye Inverter (Local) - Local integration for Deye inverters using Solarman V5 protocol

**URL:** <https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384>\
**Category:** Apps\
**Tags:** app, homey-pro, community-app\
**Created:** [August 16, 2026, 4:38pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384 "2026-08-16T16:38:22Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [August 16, 2026, 4:38pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/1 "2026-08-16T16:38:22Z")

</div>

**Local polling — no cloud required**

This app connects directly to your Deye logger over your local network via the SolarmanV5 protocol. No Deye account needed, no cloud dependency.

**Compatible hardware**

- String inverters (single and split-phase, 2 and 4 MPPT)
- Microinverters
- Hybrid inverters with battery (LP1 series — SG05LP1, SG08LP1, etc.)
- 3-phase hybrid (SG04LP3 series)

**Features**

- Automatic logger discovery via UDP — no IP address needed if the logger is on the same subnet
- Auto-detection of inverter model at pairing
- Separate devices for inverter, battery, and grid meter (hybrid models)
- Homey Energy Dashboard integration
- Energy Summary dashboard widget
- Smart night mode using your Homey’s location
- Flow cards: Solar production started/stopped, grid lost/restored, battery started charging/discharging, daily summary, and more
- Conditions: Is solar producing, Is battery charging, Is grid feeding, Battery SOC above

**Install:** [Homey App Store](https://homey.app/a/gpm.deye.solarpanel.tcp)  
**Source:** [GitHub](https://github.com/gpmachado/gpm.deye.solarpanel.tcp)

---

<div class="post-metadata">

**Author:** ![Majmik](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/majmik/32/34405_2.png) [@Majmik](https://community.homey.app/u/Majmik)\
**Post date:** [August 25, 2026, 7:54am UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/2 "2026-08-25T07:54:44Z")

</div>

Hi,

My Deye Station (inverter S/N 2410096799, single-phase hybrid, 4.32 kWp) reports solar production, battery SoC, charge power, consumption and grid power correctly in Homey. However, `measure_ac_temperature` and `measure_battery_temperature` always show as null.

I’ve verified in DeyeCloud ([deyecloud.com](http://deyecloud.com)) that the inverter reports these values normally: AC Temperature 32.3°C, DC Temperature 39.8°C, Battery Temperature 22.0°C.

This suggests the Homey app isn’t reading/mapping the correct registers for this inverter model, rather than a hardware or connection issue.

Is this a known limitation, or could the register mapping be fixed?

Thanks!

---

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [August 26, 2026, 10:17am UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/3 "2026-08-26T10:17:25Z")

</div>

Hi,

Thanks for the detailed report — that’s genuinely useful.

Quick check first: AC Temperature maps to an “advanced” capability that’s hidden by default at pairing (you need to check “Advanced” during the pairing wizard to get it). If you didn’t check that box, it simply wasn’t added as a capability — not a bug, just opt-in. You can confirm this by re-pairing with Advanced checked.

Battery Temperature is different — it’s not gated behind Advanced, and it lives on the same Battery device as SoC and charge power (which you say work fine), so I can’t explain it from the code alone. It’s possible your specific hybrid model (single-phase, 4.32 kWp) uses a different register for battery temperature than the one we’ve validated so far.

Could you run a diagnostic scan against your logger and paste the output here (or send it privately)? It reads all registers directly and shows raw + decoded values, which will tell me exactly what’s being received at the register we’re using for Battery Temperature (and confirm whether AC Temperature is really just the advanced-setting issue):

1. Download: [https://raw.githubusercontent.com/gpmachado/gpm.deye.solarpanel.tcp/main/scan-auto-detect/run\_mac\_linux.sh](https://raw.githubusercontent.com/gpmachado/gpm.deye.solarpanel.tcp/main/scan-auto-detect/run_mac_linux.sh) (or the equivalent .py/.bat — see the scan-auto-detect folder in the repo for Windows)
2. Run it against your logger’s IP (same network as Homey)
3. It saves a .txt report to your Desktop — paste the contents here

That’ll let me confirm whether this needs a register fix for your model or something else.

Thanks!

---

<div class="post-metadata">

**Author:** ![Majmik](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/majmik/32/34405_2.png) [@Majmik](https://community.homey.app/u/Majmik)\
**Post date:** [August 27, 2026, 5:48am UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/4 "2026-08-27T05:48:44Z")

</div>

Ran the diagnostic scan against my logger (192.168.3.230). Auto-detect correctly identified the model as deye\_hybrid (score=61).

Both temperatures are present and read correctly at the register level: AC Temperature 31C at register 91, DC Temperature 38C at register 90, and Battery Temperature 22C at register 182. These match what I see in DeyeCloud, so it looks like both are just the Advanced-capability opt-in issue at pairing rather than a register mismatch for my model.

One question on that: when I try “Repair device” on the existing Deye Station in Homey, it only re-authenticates against DeyeCloud and doesn’t show an Advanced-capability option anywhere in that flow. Is Advanced only available during a fresh “Add device” pairing, or is there a settings toggle on the device itself I should look for instead?

Happy to send the full scan output if useful.

Thanks!

---

<div class="post-metadata">

**Author:** ![smarthomesven](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/smarthomesven/32/79712_2.png) [@smarthomesven](https://community.homey.app/u/smarthomesven)\
**Post date:** [August 27, 2026, 12:20pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/5 "2026-08-27T12:20:03Z")

</div>

> [@Majmik](#):
>
> 192.168.3.230, serial

You might want to remove the serial number from your post. Depending on how well Deye Cloud is secured, it might allow others to access your device remotely.

---

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [August 27, 2026, 4:59pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/6 "2026-08-27T16:59:56Z")

</div>

Confirmed the cause: “Advanced” is currently only offered during the initial “Add device” pairing — there’s no way to turn it on afterwards for an already-paired device. Since you didn’t check it the first time, AC Temperature (and the other advanced sensors) were never added.

Two options:

1. **Remove and re-pair now** , checking “Advanced” this time. Everything else (production, SoC, etc.) comes back the same way — quick round-trip, works today.
2. **Try the test build** : [Deye Inverter (Local) | Homey](https://homey.app/a/gpm.deye.solarpanel.tcp/test/) — I’ve added an “Add advanced sensors” checkbox to the Repair flow, so you shouldn’t have to remove the device at all: install the test version, open Repair on the existing device, check it, save. Note: my own test inverter is a string model, not hybrid like yours, so I haven’t been able to verify this end-to-end on a hybrid + Grid Meter setup. If it doesn’t pick up the new sensors, fall back to option 1 (remove and re-pair) — that path is unaffected either way.

On Battery Temperature specifically: that one isn’t gated behind Advanced at all, so if it’s still missing after either option above (on the separate Battery device, not Inverter), let me know and we’ll dig further — but I suspect it’ll just show up correctly once Advanced is on, alongside the rest.

---

<div class="post-metadata">

**Author:** ![Majmik](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/majmik/32/34405_2.png) [@Majmik](https://community.homey.app/u/Majmik)\
**Post date:** [August 28, 2026, 6:15am UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/7 "2026-08-28T06:15:07Z")

</div>

Update: I removed the old device and re-paired from scratch, but I never saw an “Advanced” checkbox anywhere in the Add Device wizard. Instead the pairing created three separate devices automatically - inverter, battery, and solar panel - each with its own capabilities.

Good news either way: AC Temperature and Battery Temperature are both present and reading correctly now on the new inverter device, so whatever changed in the pairing flow, it resolved the issue on my end. Just flagging the missing checkbox in case it’s a UI regression worth a look.

Thanks again for the help!

---

<div class="post-metadata">

**Author:** ![Isra\_Onderzoekt](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/isra_onderzoekt/32/153470_2.png) [@Isra\_Onderzoekt](https://community.homey.app/u/Isra_Onderzoekt)\
**Post date:** [September 9, 2026, 11:38am UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/8 "2026-09-09T11:38:39Z")

</div>

I’ve got a new deye sun-15k-sg05lp3-eu-sm2.

The inverter is not found by scanning. With IP adress and serial number it is found.

However, the inverter type is not selectable. When 10k-sg04 is selected and choose ‘add’ it tells me that the devices is not found and can not be added. Unfortunately.

---

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [September 9, 2026, 11:00pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/9 "2026-09-09T23:00:37Z")

</div>

Thanks for the report! The SUN-15K-SG05LP3-EU-SM2 isn’t one of our currently defined models, so auto-detect correctly found nothing and — since it had to try every known model with no match — likely ran long enough to time out the pairing session, which is probably why “Add” failed right after you picked a model manually.

Could you help me confirm whether the SG05LP3 register layout is close enough to our existing “SG04LP3 Hybrid 3-phase” profile to reuse it? I don’t have this hardware to test against myself. There’s a small diagnostic script (no Homey app needed) that connects directly to your logger and dumps what each of our current models reads from it:

1. Download/clone: [GitHub - gpmachado/gpm.deye.solarpanel.tcp · GitHub](https://github.com/gpmachado/gpm.deye.solarpanel.tcp)
2. Open a terminal in the `scan-auto-detect` folder
3. macOS/Linux: `bash run_mac_linux.sh` — Windows: `run_windows.bat`
4. Enter your logger’s IP and serial number when prompted

It’ll save a `.txt` report to your Desktop — if you could paste that here (or attach the file), that tells me exactly which registers respond and with what values, so I can confirm compatibility (or build a dedicated profile) with actual data instead of guessing.

---

<div class="post-metadata">

**Author:** ![Antom](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/antom/32/169045_2.png) [@Antom](https://community.homey.app/u/Antom)\
**Post date:** [September 23, 2026, 7:37pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/10 "2026-09-23T19:37:28Z")

</div>

Hi Gabriel,

I am using your **Deye Inverter (Local)** app with a **SOFAR ESI-12K-T1 12 kW three-phase hybrid inverter** , connected through an **LSW3 Solarman logger**.

Your app successfully detects the Solarman logger automatically and communicates with it over port 8899. I tested the **Deye SG04LP3 Hybrid 3-phase — SUN-8/10/12K** profile: the app successfully creates the inverter, battery and grid devices, but of course the values are incorrect because the SOFAR register map is different. For example, the app reports 80% battery SOC while the actual SOC is 20%.

I have the official SOFAR Modbus register documentation for this inverter. I have also successfully tested local access using `pysolarmanv5`. For example, SOFAR register **0x0668 (1640)** correctly returns the battery SOC, and **0x0667 (1639)** returns battery power.

Would you be interested in adding a **SOFAR ESI / LSW3 profile** to your app? I would be happy to run your diagnostic/register scan tool and provide any information or testing you need.

Thank you!

---

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [September 24, 2026, 1:47am UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/11 "2026-09-24T01:47:30Z")

</div>

Hi Antom,

Thanks for the detailed report, and for already testing with pysolarmanv5! Yes, I’d like to add a SOFAR profile. The app is built around register maps, so the ESI‑12K‑T1 (SOFAR G3 protocol, the same family as HYD 5‑20KTL‑3PH) should fit well.

Since I don’t have the hardware, could you run this small read‑only script? It only reads registers and never writes to the inverter:  
[https://github.com/gpmachado/gpm.python.deye/blob/main/scan-auto-detect/sofar\_register\_dump.py](https://github.com/gpmachado/gpm.python.deye/blob/main/scan-auto-detect/sofar_register_dump.py)

```auto
python3 sofar_register_dump.py <logger_ip> <logger_serial> charging

```

Please run it twice if you can: once while the battery is **charging** and once while it’s **discharging** (use `discharging` as the last argument). Each run saves a `.txt` file to your Desktop.

For each run, please also note what the SOFAR app or display shows at the same moment:

- SOC
- battery power (charging or discharging)
- grid power (importing or exporting)
- PV power
- house load
- today’s PV, import and export kWh

That lets me confirm the scale and sign of each value. I’m especially interested in 0x0667: what unit does your SOFAR document give for it?

The version and title of your SOFAR Modbus document would help too.

The first version will be read‑only telemetry, and you’ll pick SOFAR manually during pairing. Auto‑detect will come once I’m sure it can’t be confused with Deye units. I’ll let you know when a test build is ready.

Thanks!  
Gabriel

---

<div class="post-metadata">

**Author:** ![Antom](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/antom/32/169045_2.png) [@Antom](https://community.homey.app/u/Antom)\
**Post date:** [September 24, 2026, 8:30am UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/12 "2026-09-24T08:30:34Z")

</div>

> [@Gabriel\_Pedrosa\_Mach](#):
>
> [https://github.com/gpmachado/gpm.python.deye/blob/main/scan-auto-detect/sofar\_register\_dump.py](https://github.com/gpmachado/gpm.python.deye/blob/main/scan-auto-detect/sofar_register_dump.py)

Hi Gabriel,  
Thank you! I’m ready to run the tests.  
Unfortunately, the GitHub link to `sofar_register_dump.py` currently returns a **404 Page not found**. Could you please check the link or publish the script?

As soon as it is available, I can run both the charging and discharging tests and provide all the simultaneous SOFAR values you requested.

Regarding register **0x0667** , my SOFAR Modbus documentation specifies: **Total battery power, I16, unit 0.1 kW, positive = charging, negative = discharging.**

---

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [September 24, 2026, 4:12pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/13 "2026-09-24T16:12:15Z")

</div>

Hi Antom,

Sorry about that, I linked the wrong repository name. The script is here:

> <https://github.com/gpmachado/gpm.deye.solarpanel.tcp/blob/main/scan-auto-detect/sofar_register_dump.py>

Direct download:  
[https://raw.githubusercontent.com/gpmachado/gpm.deye.solarpanel.tcp/main/scan-auto-detect/sofar\_register\_dump.py](https://raw.githubusercontent.com/gpmachado/gpm.deye.solarpanel.tcp/main/scan-auto-detect/sofar_register_dump.py)

```auto
python3 sofar_register_dump.py <logger_ip> <logger_serial> charging
python3 sofar_register_dump.py <logger_ip> <logger_serial> discharging

```

Thanks for the 0x0667 details (I16, 0.1 kW, + = charging, − = discharging). The script now converts it to watts using that convention. Each run saves a `.txt` file to your Desktop; please post both files along with the SOFAR app values from the same moments.

Thanks!  
Gabriel

---

<div class="post-metadata">

**Author:** ![Antom](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/antom/32/169045_2.png) [@Antom](https://community.homey.app/u/Antom)\
**Post date:** [September 25, 2026, 4:51pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/14 "2026-09-25T16:51:32Z")

</div>

Hi Gabriel,

I completed both tests you requested on my **SOFAR ESI-12K-T1** , one while charging and one while discharging.

**Charging test**  
SOFAR display just before the dump (11:07):

- Battery SOC: 89%
- Battery power: 2.47 kW charging
- PV power: 5.89 kW
- Grid: approx. 0.79 kW export
- House load: 2.47 kW
- Daily PV generation: 6.84 kWh
- Daily grid import: 9.02 kWh
- Daily grid export: 0.86 kWh
- Daily battery charge: 3.47 kWh
- Daily battery discharge: 0.00 kWh

The dump started at 11:09:48. It reported 90% SOC and +2.40 kW battery power.

**Discharging test**  
SOFAR display at 16:10:53:

- Battery SOC: 66%
- Battery power: 2.35 kW discharging
- PV power: 2.05 kW
- Grid: 0.00 kW
- House load: 4.31 kW
- Daily PV generation: 33.18 kWh
- Daily load consumption: 32.88 kWh
- Daily grid import: 9.12 kWh
- Daily grid export: 5.35 kWh
- Daily battery charge: 4.67 kWh
- Daily battery discharge: 2.15 kWh

The dump started at 16:11:45. It reported 65% SOC and -2.40 kW battery power.

This confirms on my inverter that **register 0x0667 is an I16 value with a scale of 0.1 kW: positive = charging, negative = discharging**.  
In the charging dump, raw value 24 = +2.4 kW.  
In the discharging dump, raw value 65512 interpreted as signed I16 = -24 = -2.4 kW.

**SOFAR Modbus document:**  
**SOFARSOLAR Co., Ltd. Modbus-G3 Protocol**  
**Version V1.42 — April 2026**

In section 4.5, “Registers of Energy Storage”, the document lists:

- 0x0667 — Total battery power — I16 — 0.1 kW
- 0x0668 — Total average battery SOC — U16 — 1%

One additional observation: my first full dump failed with “Connection already closed” while several Homey devices were potentially accessing the Solarman logger. After temporarily removing the Deye/SOFAR Homey devices, the simple pysolarmanv5 test and both complete dumps worked correctly. So the LSW3 logger may not handle concurrent local connections very well.

I’m attaching the **charging and discharging dump files** , together with the corresponding SOFAR display photos.

Unfortunately, the Homey forum does not allow .txt attachments. How would you prefer me to send you the two complete dump files?

Thanks again for adding SOFAR support to the app. I’ll be very happy to test the first version when it is ready!

Antom

---

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [September 25, 2026, 5:09pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/17 "2026-09-25T17:09:55Z")

</div>

> [@Antom](#):
>
> Hi Gabriel,
> 
> I completed both tests you requested on my **SOFAR ESI-12K-T1** , one while charging and one while discharging.
> 
> **Charging test**  
> SOFAR display just before the dump (11:07):
> 
> - Battery SOC: 89%
> - Battery power: 2.47 kW charging
> - PV power: 5.89 kW
> - Grid: approx. 0.79 kW export
> - House load: 2.47 kW
> - Daily PV generation: 6.84 kWh
> - Daily grid import: 9.02 kWh
> - Daily grid export: 0.86 kWh
> - Daily battery charge: 3.47 kWh
> - Daily battery discharge: 0.00 kWh
> 
> The dump started at 11:09:48. It reported 90% SOC and +2.40 kW battery power.
> 
> **Discharging test**  
> SOFAR display at 16:10:53:
> 
> - Battery SOC: 66%
> - Battery power: 2.35 kW discharging
> - PV power: 2.05 kW
> - Grid: 0.00 kW
> - House load: 4.31 kW
> - Daily PV generation: 33.18 kWh
> - Daily load consumption: 32.88 kWh
> - Daily grid import: 9.12 kWh
> - Daily grid export: 5.35 kWh
> - Daily battery charge: 4.67 kWh
> - Daily battery discharge: 2.15 kWh
> 
> The dump started at 16:11:45. It reported 65% SOC and -2.40 kW battery power.
> 
> This confirms on my inverter that **register 0x0667 is an I16 value with a scale of 0.1 kW: positive = charging, negative = discharging**.  
> In the charging dump, raw value 24 = +2.4 kW.  
> In the discharging dump, raw value 65512 interpreted as signed I16 = -24 = -2.4 kW.
> 
> **SOFAR Modbus document:**  
> **SOFARSOLAR Co., Ltd. Modbus-G3 Protocol**  
> **Version V1.42 — April 2026**
> 
> In section 4.5, “Registers of Energy Storage”, the document lists:
> 
> - 0x0667 — Total battery power — I16 — 0.1 kW
> - 0x0668 — Total average battery SOC — U16 — 1%
> 
> One additional observation: my first full dump failed with “Connection already closed” while several Homey devices were potentially accessing the Solarman logger. After temporarily removing the Deye/SOFAR Homey devices, the simple pysolarmanv5 test and both complete dumps worked correctly. So the LSW3 logger may not handle concurrent local connections very well.
> 
> I’m attaching the **charging and discharging dump files** , together with the corresponding SOFAR display photos.
> 
> Unfortunately, the Homey forum does not allow .txt attachments. How would you prefer me to send you the two complete dump files?
> 
> Thanks again for adding SOFAR support to the app. I’ll be very happy to test the first version when it is ready!
> 
> Antom

Hi Antom,

Thank you, this is exactly what I needed! Both dumps match the SOFAR display well: 0x0668 gives the SOC, and 0x0667 is total battery power in 0.1 kW with + = charging. It also agrees with the Modbus‑G3 V1.42 document.

For the files, the easiest option is to open an issue on GitHub and attach both `.txt` files (GitHub accepts .txt):

> **[Build software better, together](https://github.com/gpmachado/gpm.deye.solarpanel.tcp/issues/new)**
>
> GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.

Title: “SOFAR ESI-12K-T1 register dumps”. The display photos are welcome there too.

If you don’t have a GitHub account, you can paste each file’s contents here inside a code block instead.

Good catch on the concurrent connections. The LSW3 is known to struggle with more than one local client, so the SOFAR profile will share a single connection between the inverter, battery and grid devices. Until the test build is ready, please keep the old Deye‑profile devices removed, since they show wrong values anyway.

Next step: I’ll build the SOFAR G3 profile from your dumps, then let you know when a test version is ready.

Thanks for the photos! One detail: on the first screen, the first “Charge” line (10.97 kWh) should be the house load and “Consommation” (9.02 kWh) the grid import. Can you confirm that’s how you read it too?

Thanks again!  
Gabriel

---

<div class="post-metadata">

**Author:** ![Antom](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/antom/32/169045_2.png) [@Antom](https://community.homey.app/u/Antom)\
**Post date:** [September 25, 2026, 8:29pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/18 "2026-09-25T20:29:29Z")

</div>

Hi Gabriel,

Yes, I confirm your interpretation of the SOFAR display:

- **“Load” (10.97 kWh)** = house load / house consumption
- **“Consumption” (9.02 kWh)** = energy imported from the grid
- **“Feed-in” (0.86 kWh)** = energy exported to the grid

So you interpreted these three values correctly.

I have now created a GitHub account and opened the issue. I uploaded the **two complete `.txt` register dumps and the four SOFAR display photos** there.

For clarity, the files/photos are organized as follows:

- **The first two photos correspond to the charging test** (`charging` dump).
- **The last two photos correspond to the discharging test** (`discharging` dump).

The photos were taken immediately before their corresponding register dumps, so they can be used as the reference values for comparison.

I have also kept the old Deye profile devices removed, as you requested, and I will leave them removed until your SOFAR test version is ready.

Thanks again for your work on this. I’m looking forward to testing the SOFAR G3 profile!

Antom

---

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [September 25, 2026, 10:07pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/19 "2026-09-25T22:07:02Z")

</div>

Hi Antom,

A test build with SOFAR support is ready (v1.4.12):

> **[Deye Inverter (Local) | Homey](https://homey.app/en-us/app/gpm.deye.solarpanel.tcp/Deye-Inverter-(Local)/test/)**
>
> Local integration for Deye inverters using Solarman V5 protocol (port 8899)

1. Remove the existing Deye‑profile devices first, so only one app talks to the LSW3.
2. Install the test version from the link above.
3. Add a device. Auto‑detect will probably still say “Deye SG04LP3”. Change the model dropdown to **“SOFAR G3 Hybrid 3-phase — ESI-T1 / HYD-3PH”** before clicking Add.
4. You should get three devices: Inverter, Battery and Meter.

Things to check against the SOFAR display:

- Battery SOC and charging/discharging state
- Battery power, and grid import/export direction
- PV power
- Daily kWh
- Homey Energy: that solar, battery and grid flow in the right direction

By the way, have you tried Adrian Rockall’s “Sofar” app (ady.sofar)? It also connects locally and supports the G3 register map. If you get the chance, I’d be curious how the two compare on your ESI‑12K‑T1, especially grid power and battery charge/discharge direction. Please run them one at a time, since the LSW3 doesn’t handle two connections well.

If something looks off, a screenshot of the Homey device and of the SOFAR display taken at the same moment helps most.

Thanks for testing!  
Gabriel

---

<div class="post-metadata">

**Author:** ![Antom](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/antom/32/169045_2.png) [@Antom](https://community.homey.app/u/Antom)\
**Post date:** [September 26, 2026, 11:27am UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/20 "2026-09-26T11:27:24Z")

</div>

> [@Gabriel\_Pedrosa\_Mach](#):
>
> ESI-12K-T1 SOFAR

Hi Gabriel,

I have now completed the remaining tests with v1.4.12, and overall the SOFAR profile is working very well.

**Battery discharging:**  
SOFAR showed about 0.90 kW discharge, and Homey showed:

- Electrical Consumption: **-900 W**
- Discharge Power: **+900 W**
- SOC was also correct.

**Battery charging:**  
I have now tested the opposite direction. At 12:19:31 the SOFAR display showed:

- PV: **8.28 kW**
- Battery charging: **2.47 kW**
- SOC: **30%**
- House load: **3.94 kW**
- Grid export: **1.57 kW**

Homey showed:

- Electrical Consumption: **+2470 W**
- Discharge Power: **-2470 W**

So the battery value, scale and direction are correct. The only point I am unsure about is the label **“Discharge Power”** : when the battery is charging it displays **-2470 W** , which is mathematically consistent but the wording “Discharge Power” seems a little confusing during charging. Perhaps this is simply due to the Homey capability being used.

**Grid import/export:**  
This is also working correctly in both directions.

Earlier, during grid import, Homey showed a positive grid power. During this latest test, SOFAR showed approximately **1.57 kW export** , while Homey showed **-1620 W** grid power.

Therefore:

- positive grid power = **import**
- negative grid power = **export**

This looks correct.

The inverter/PV values are also very good. For example, SOFAR showed 1.11 kW PV while Homey showed 1100 W, and PV1 + PV2 correctly matched the total PV power.

**Homey Energy** also appears to be working correctly. It shows the same values and directions as the three SOFAR devices.

I also understand now that the grid energy values such as **1178.1 kWh imported** and **393.7 kWh exported** are cumulative counters rather than daily values.

Overall, the integration is already working remarkably well: the values are accurate and, importantly for my future energy-management flows, the local updates are very fast.

I have uploaded all **9 test photos** to GitHub in the issue titled:

**“Test Battery et grid ESI-12K-T1 SOFAR”**

GitHub displays the photos in the following order:

1. **Battery Charging + Grid Export** — SOFAR display
2. **Battery Discharging 1**
3. **Battery Charging 2**
4. **Battery Discharging 2**
5. **Inverter / PV Production 1**
6. **Inverter / PV Production 2**
7. **Grid Export 2**
8. **Grid Import 1**
9. **Grid Import 2**

Photo 1 is the SOFAR reference for both the **battery charging** test and the **grid export** test, as both conditions occurred at the same time.

The corresponding Homey screenshots can then be compared with it directly.

I’m specifying the order because GitHub may not preserve the descriptive filenames clearly.

Regarding Adrian Rockall’s **Sofar app (`ady.sofar`)**: yes, I had already tested it on my ESI-12K-T1 before testing your SOFAR profile.

Unfortunately, it did not work reliably with my inverter. I observed two main problems:

- some values were incorrect — for example, the battery device showed **80% SOC when the actual SOFAR SOC was different** ;
- the values did not always refresh correctly and could become **stuck/frozen for several hours** , while the inverter itself was still operating normally.

I therefore removed Adrian’s devices before testing your v1.4.12, to make sure there was no concurrent local connection to the LSW3.

So far, your SOFAR profile behaves much better on my ESI-12K-T1: the battery, PV and grid values closely match the SOFAR display, and the updates are fast and responsive.

If it would be useful to you, I can test Adrian’s app again later, **one application at a time as you recommended** , and make a direct comparison under the same conditions.

Thanks again — excellent work!

Antom

---

<div class="post-metadata">

**Author:** ![Gabriel\_Pedrosa\_Mach](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/gabriel_pedrosa_mach/32/176567_2.png) [@Gabriel\_Pedrosa\_Mach](https://community.homey.app/u/Gabriel_Pedrosa_Mach)\
**Post date:** [September 26, 2026, 3:06pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/21 "2026-09-26T15:06:37Z")

</div>

Hi everyone,

First, thanks to Antom for testing the new SOFAR support so thoroughly. It works well and will go Live soon.

His tests brought back a question from GitHub issue #3: the battery power labels are confusing, and I’d like your opinion before changing them. This affects **every hybrid user** (Deye and SOFAR).

**Why there are two values today**

The battery device shows the same power twice, with opposite signs:

- `measure_power`: + = charging, − = discharging. Homey Energy requires this one, so it must stay signed.
- `measure_power.battery`: + = discharging, − = charging.

So while charging you may see, for example, “Discharge Power: −2470 W”. The number is correct, but it’s confusing.

**Options: what you would see on the device card**

| Option | Labels | Charging 2470 W | Discharging 900 W |
| --- | --- | --- | --- |
| **A** (current) | Power Usage / Power Delivery | +2470 / −2470 | −900 / +900 |
| **B** | Charge Power / Discharge Power | +2470 / −2470 | −900 / +900 |
| **C** | Battery Power (+ charging) / Battery Power (+ discharging) | +2470 / −2470 | −900 / +900 |
| **D** | **Charge Power** / **Discharge Power** (new values, never negative) | 2470 / 0 | 0 / 900 |

- **A, B and C** only change the labels. One value is always negative in one direction; C at least states what the sign means.
- **D** adds two new values that are never negative, so Flows become simple (“When Charge Power becomes greater than 2000 W”). In D:
  - The Homey Energy value is hidden from the device card. Homey Energy works as before.
  - The old signed value becomes a device setting, “Show signed battery power (legacy)”. It’s **on for existing devices** so your Flows keep working, and off for new devices.

**For all options:** labels are applied automatically when the app updates. **No re-pairing, and your existing Flows keep working** , because Flows are linked to the capability, not its label.

**Questions**

1. Which option do you prefer: A, B, C or D? Or another wording?
2. If you choose D: is keeping the old signed value as an optional setting (on for existing devices) OK for you?
3. If you use Homey in another language, which wording reads naturally in your language?

---

<div class="post-metadata">

**Author:** ![Antom](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/antom/32/169045_2.png) [@Antom](https://community.homey.app/u/Antom)\
**Post date:** [September 26, 2026, 5:49pm UTC](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384/22 "2026-09-26T17:49:35Z")

</div>

My preference is clearly **Option D**.

From a user point of view, having two non-negative values is much easier to understand:

- **Charging Power: 2470 W / Discharging Power: 0 W** while charging
- **Charging Power: 0 W / Discharging Power: 900 W** while discharging

I also think this will make Advanced Flows much clearer. For example, conditions such as “Charging Power \> 2000 W” or “Discharging Power \> 1000 W” are immediately understandable without having to remember a sign convention.

Keeping measure\_power signed internally for Homey Energy makes perfect sense, since Homey Energy requires it.

For question 2, yes, keeping the legacy signed value as an optional setting, enabled for existing devices so that existing Flows continue to work, seems like a very good solution.

In French, I would naturally use:

- **Puissance de charge**
- **Puissance de décharge**

These labels are short and unambiguous.

I would also find a single signed value called **“Battery Power”** perfectly understandable, provided the convention is clearly stated (+ = charging, − = discharging). What I find confusing in the current presentation is not the signed value itself, but displaying the same power twice with opposite signs, especially when one of them is labelled “Discharge Power”. That makes “Discharge Power: -2470 W” unnecessarily difficult to interpret.

Antom

[Next page](https://community.homey.app/t/app-pro-deye-inverter-local-local-integration-for-deye-inverters-using-solarman-v5-protocol/158384.md?page=2)
