Deye Inverter and Home Assistant: Complete Troubleshooting for Data, Modbus, Battery and Control Problems
Quick symptom checks
| Symptom | Likely cause | First thing to check |
|---|---|---|
| Wrong import/export or household consumption | CT/meter direction, placement or sign convention | Compare the inverter LCD and HA during a known import/export condition |
| RS485 communication drops | Wiring, communication settings or competing clients | Check A/B, the Device ID and whether more than one client polls the bus |
| Logger works in the app, but HA cannot connect | Local logger access, network reachability or firmware changes | Confirm the logger IP, supported local protocol and access after the firmware update |
| Stale or implausible readings | Wrong integration profile, scaling or lost updates | Check timestamps and compare the exact model/profile with the LCD |
| Battery communication or SOC problems | BMS communication, configuration or battery limits | Check the battery status and alarms on the inverter and BMS |
| Settings revert or only part of TOU saves | Another controller or a mismatched write profile | Confirm the value on the LCD and identify all systems writing settings |
The Deye and Home Assistant series — where are you in it?
This piece is the diagnostic hub of the series. We’re assuming the inverter is already at least partly visible in Home Assistant, or that you’re trying to figure out why the integration isn’t working. If you need a from-scratch install, a full explanation of Time of Use, or ready-made automations, use the right part of the series instead.
Safety first: what we don’t diagnose by trial and error
Home Assistant can help you spot a problem, but it doesn’t replace electrical measurements or a service visit. Don’t open the inverter, don’t swap CT, battery, AC or PV wiring while it’s live, and don’t change grid code settings, protection parameters or BMS settings just to see if the error goes away.
A 10-minute quick diagnosis
Before you go looking for someone to blame: three layers of the problem
1. The inverter draws power from the grid despite PV surplus and a full battery
2. Turn on a big load (a kettle, an oven) and watch whether the Load/Grid Power reading reacts in real time. If it doesn’t react, the CTs aren’t working correctly.
3. Compare grid import in Home Assistant against the utility meter’s reading over a few hours of sunny weather.
4. If import is a few dozen watts, that’s normal. If it’s a few hundred watts or more, move on to the fix below.
2. Wrong household consumption reading and Zero Export/CT problems
2. Switch on a load with a known power draw and check the sign of the value (positive or negative) in Home Assistant — the meter should react proportionally.
3. If the sign is wrong, swap the CT wires on the inverter’s pins — it’s the fastest test.
4. Check which phase each CT is assigned to, especially on three-phase installations with an uneven load across phases.
3. Modbus RS485 communication keeps dropping
2. As a test, disconnect the inverter’s built-in Wi-Fi module and see whether stability improves.
3. Check whether a 120 Ω termination resistor is fitted on the port, and if so, try removing it.
4. If you’re connecting directly to the serial port, try putting mbusd in between as a mediator, to eliminate conflicts between several processes fighting for access to one port.
4. Port 8899 gets blocked after a logger firmware update
2. Try a telnet connection or a simple script against ports 8899 and 48899 to see which one actually responds.
3. Check the date of the last OTA update and compare it against the date the integration stopped working.
5. Bad values in the Solarman integration in Home Assistant
2. Check whether the bad values appear cyclically (which fits the RS485 layer) or constantly (which points more toward a wrong register definition).
3. Check the Home Assistant logs for warnings about reading a specific register.
4. Check the integration’s version history and see whether the problem started right after some update.
6. Modbus Server ID reset and RS485 port reassignment after a firmware update
2. Compare it against the value stored in the integration’s configuration.
3. Check which physical port the adapter is actually connected to — Meter-485 or BMS.
7. RS485 port working as Master instead of Slave on grid-tie models
8. Battery BMS problems: Pylontech, JK-BMS, an understated capacity
2. Verify the entered capacity in Ah and the current limits against the battery’s datasheet, not from memory or a guess.
3. Check whether Activate Battery mode happens to be left permanently switched on.
4. On a parallel install, check that every BMS module is running the same firmware version.
9. The logger’s Wi-Fi module won’t connect to the home network
10. The inverter doesn’t start automatically in the morning despite voltage on the panels
11. The inverter doesn’t start correctly after a firmware update
12. Home Assistant shows import and export swapped
This usually doesn’t mean the inverter is faulty. Integrations define the grid-power sign differently: in one, a positive value means import, in another, export. On top of that, a wrongly set register profile, or a CT assumed to be wired the wrong way round, can flip the physical measurement.
13. Battery power has the wrong sign, or doesn’t match SOC
A positive battery power value doesn’t have a universal meaning. It can mean charging or discharging. SOC updates more slowly than instantaneous power, and the BMS can correct its estimate after a full charge or a longer rest period.
14. Entities are available, but the data is stale
An entity’s state can still look correct even though the integration hasn’t pulled a fresh frame in a long time. This is especially dangerous in PV-surplus, battery-charging, and import-limiting automations.
Check the second-by-second sensor history, the integration’s log, the number of reconnects, and whether several clients are polling the same interface. Don’t automatically shorten the polling interval — overly aggressive polling can make things worse.
15. Daily energy resets at the wrong time, or jumps after a restart
The cause can be a mismatched time zone between the inverter, the logger and Home Assistant, a different definition of “today” in the cloud, an internal counter restarting, or incorrect register scaling.
For the Energy panel, a total counter that keeps growing over time is better than a daily-production sensor. A daily sensor can be handy for display purposes, but once it resets you need to be careful with your long-term statistics.
16. The Energy panel double-counts energy, or the balance doesn’t add up
The most common mistake is adding both the whole inverter’s energy and the individual MPPTs’ energy to the panel, or using both the utility meter’s data and a calculated Grid Energy figure at the same time without deciding which source takes precedence.
17. The inverter doesn’t charge the battery to the set SOC
A target SOC isn’t an unconditional command. Behaviour is affected by: the active TOU period, Grid Charge, the operating mode, the maximum charging current, the source’s power, battery temperature, BMS limits, cell voltage, and the globally set reserve.
You’ll find the full logic behind these fields in the article Deye Time of Use: SOC, Grid Charge and the six time slots.
18. The battery charges or discharges much slower than set
The Power value, or the maximum current in the inverter’s menu, is only one of several limits. Real power is the smallest of what the inverter, the battery, the BMS, temperature, voltage, current SOC, the wiring, and the available energy source all allow.
Especially at high SOC, the BMS can gradually reduce current to balance the cells. At low temperatures, many lithium batteries reduce or completely block charging. Don’t try to “fix” this by raising limits without first checking the BMS’s own messages.
19. A setting changed from Home Assistant reverts after a few seconds
There are four main possible causes: the integration has no write access and only changes the entity’s state locally, the inverter rejects the value, another automation is overwriting the setting, or another system — the cloud, SolarAssistant, a second Modbus client — is writing its own profile.
20. Only part of Time of Use gets saved
A single TOU profile can consist of many independent registers: hours, SOC, power, Grid Charge and Gen Charge for six periods. If an automation only writes part of it, or runs the operations too quickly, the inverter can end up with a mix of old and new settings.
Write logical groups in a fixed order, use the short delays your integration requires, do a read-back after each group, and don’t rewrite the whole schedule every minute. Ideally, only change the parameters that actually need to change.
21. Two integrations work fine separately, but cause disconnects together
A serial port can only have one direct owner. A logger or Modbus TCP gateway can also limit the number of simultaneous sessions. Home Assistant, SolarAssistant, a diagnostic app and a test script running at the same time can interrupt each other’s transmissions.
22. A Master–Slave setup shows incomplete or doubled data
In a parallel install, you need to work out which values are global and which belong to a specific inverter. Summing Load or Grid across every device can double the result if each inverter reports the shared meter reading. Reading only the master, on the other hand, might not include the details of every MPPT and battery.
First verify each unit’s role, its unique Modbus SN/ID, and the multi-inverter documentation of your integration. Then compare the sensors during a controlled load and production test. Don’t automatically sum entities just because their names look similar.
23. After a Home Assistant restart, an automation runs a dangerous or costly command
After starting up, some entities briefly show a state of unknown or hold onto their last database value. An automation that triggers on a state change can treat that initialisation as a real event.
24. An automation keeps flipping a setting back and forth forever
A threshold with no hysteresis causes oscillation. Example: turn on a boiler above 1 kW of export, turn it off below 1 kW. Once the boiler switches on, export immediately drops, the device gets switched off, and export comes back up.
Use a separate on-threshold and off-threshold, a minimum run time, averaging or a sustained-surplus condition, and a limit on how often you write to the inverter.
25. The logger works in the app, but Home Assistant can’t connect
The cloud app working confirms the logger has an internet connection, but it doesn’t guarantee a local API is available. What matters is the logger model, its firmware, the port, the protocol, Wi-Fi client isolation, the VLAN, and firewall rules.
Check the IP address, whether it’s reachable from Home Assistant’s network, the logger’s model and serial number, and the documentation of the integration you’re using. Don’t forward port 8899 from the internet to the logger. Test locally.
26. RS485 works on a short test cable, but drops frames once fully installed
A classic sign of a physical-layer problem: the wrong wire pair, a star topology, no common reference where one’s needed, interference, too long a run, wrong termination, or a non-isolated adapter.
27. After an integration update, some entities disappeared or got renamed
A change to the profile, sensor definitions, or the discovery mechanism can create new entities and leave the old ones unavailable. Automations still referencing the old identifiers keep failing silently.
Before updating, note down the integration’s version and a list of your key entities. After updating, check Repairs, the entity registry, disabled entities, and the project’s changelog. Don’t delete old energy statistics right away, since a changed identifier can break the history.
28. The inverter works fine, but the forecast and automation make bad decisions
This doesn’t have to be a Deye problem at all. A wrong PV forecast, overlooked overnight consumption, storage losses, or an energy price that ignores distribution fees can all lead to economically bad decisions even though the inverter carries out its commands correctly.
Separate three layers: the input data, the automation’s decision, and Deye’s execution. Log the reason behind every decision — the prices used, the forecast, the SOC, and the intended target.
How to write a good problem report
The sentence “Deye doesn’t work in HA” doesn’t let anyone tell an installation error apart from a register-profile issue. A good report should include:
Bonus: the most common fault codes on the touch panel
Checklist: what to check before you contact support
If you’re still planning your integration: two paths to choose from
What’s next?
- → ESPHome — installing and flashing through Home Assistant
- → RCE in Home Assistant: how it works and where to start
- → Solar net billing — how not to give away power for free
