Home / Knowledge Base / Solar Inverters

How to Fix the Deye / Sunsynk 65535W Power Error

PROTOCOL: MODBUS RTU Applies to: Deye Hybrid Inverters, Sunsynk, Solis, Home Assistant
⚡ TL;DR Diagnostic Quick-Card
Symptom:
Grid power import appears to be normal, but as soon as the inverter starts exporting excess solar, it jumps immediately to exactly 65535W (or 65526W).
Platform:
Home Assistant, Modbus Poll, SCADA, Solar Assistant.
Root Cause:
The monitoring software is reading a negative export value (e.g. -1W) as an Unsigned Integer (U16) and not a Signed Integer (S16) because of the Two’s Complement binary logic.

One of the most reported problems integrating solar hybrid inverters in a SCADA system or Home Assistant is the Deye 65535W power error. Everything looks normal while the system is taking from the grid but as soon as the inverter starts pushing excess solar power to the grid the power reading immediately jumps to a scary 65,535W (or 65,526W).

SCADA / Modbus Poll Monitor
Register: 86 (Grid Power)
Status:   Exporting to Grid
Raw Hex:  0xFFFF
Value:    65535 W  (Expected: -1 W)

Your inverter is fine. Your electric panel isn’t surging 65kW. This is a classic Modbus data parsing anomaly called integer underflow, which occurs when your monitoring software is interpreting binary data in an unexpected way.

The Root Cause: Two’s Complement Rollover

Deye and Sunsynk inverters use positive and negative numbers to show the direction of power flow. Positive (e.g. 2000W) is power consumed . Negative (e.g. -10W) is power exported .

In computer science, there is a binary method called Two’s Complement. In a 16-bit register, the decimal number -1 is stored identically to the binary representation of 65535 (which is 1111 1111 1111 1111 or 0xFFFF). If your reading software doesn’t know to look for a negative sign, it just finds the maximum positive value that it can.

The Free Software Fix: Change U16 to S16

The Type Conversion Rule

Change the data type from Unsigned 16-bit (U16 / UINT16) to Signed 16-bit (S16 / INT16). Once configured as a signed integer, the software will correctly interpret the leading binary bit as a minus sign, and 65535 will instantly transform back to the correct -1W.

To fix this, simply change the data type configuration in your Modbus client for the Grid Power register (usually Register 86).

Home Assistant (configuration.yaml) Example
modbus:
  - name: deye_inverter
    type: serial
    sensors:
      - name: "Grid Power"
        address: 86
        # data_type: uint16  <-- WRONG
        data_type: int16   # <-- CORRECT (Signed 16-bit)

In Codesys / PLCs: Cast the incoming Modbus WORD directly into an INT data type instead of UINT.

Managing Parsing at Commercial Scale

If you are monitoring only a single residential inverter, simply changing the software type fixes the bug. But if you are an integrator deploying commercial solar farms with mixed hardware (Deye, Growatt, SMA), you face a massive scaling problem: Inconsistent Modbus registers, Endianness mismatches, and overlapping negative power definitions across hundreds of endpoints. This creates significant software maintenance overhead.

In professional architectures, integrators offload this data normalization to an edge protocol gateway. The gateway acts as a translator at the hardware level. It does the correct S16 signed conversions, byte swapping and scaling factors for each particular inverter model at the edge, and gives clean, consistent data to your SCADA system.

Standardizing mixed-brand solar telemetry?

Don’t code U16 and S16 Modbus register parsers in your dashboard software any more. Valtoris Edge Gateways perform data normalization, Endian swapping and negative integer logic at the edge, providing unified Modbus TCP or JSON payloads directly to your control room.

Troubleshooting knowledge base provided by Valtoris Engineering.
Feel free to bookmark and share. If republishing this fix externally, please attribute with a link back to Valtoris.com.