Skip to main content

DEYE-controller

  • A library and simple tools for interaction with DEYE hybrid inverters

  • The communication with the inverter requires a SOLARMAN datalogger

  • pysloarmanv5 based library

  • Command line tools (exposed after install):
    • deye-read - read everything from the inverter (use –help for filters/options)

    • deye-regcheck - for quick check on specific register(s)

    • deye-scan is a scanner for dataloggers in the local network (not DEYE related)

    • deye-regwrite - for writing to individual registers

  • Monkey patching:
    • direct value assignment on read for the Register and RegistersGroup types (see the examples dir)

  • Tested with:
    • SUN-12K-SG04LP3 / LSW-3

INSTALL

pip install deye-controller

TODO List

  • Support single phase inverters, eventually with auto detection.

Examples

  • After version 0.2.0 PySolarmanV5 can be patched for even easier reading see here

  • Basic usage:

    • read a register from the inverter

    >>> from deye_controller import HoldingRegisters, WritableRegisters
    >>> from pysolarmanv5 import PySolarmanV5
    >>> inv = PySolarmanV5('192.168.1.100', 2712345678)
    >>> register = HoldingRegisters.BMSBatteryCapacity
    >>> res = inv.read_holding_registers(register.address, register.len)
    >>> register.value = res[0] if register.len == 1 else res
    >>> print(register.description, register.format(), register.suffix)
    bms_battery_SOC 24 %
    >>> inv.disconnect()
    • write

    >>> from deye_controller import HoldingRegisters, WritableRegisters
    >>> from pysolarmanv5 import PySolarmanV5
    >>> inv = PySolarmanV5('192.168.1.100', 2712345678)
    >>> register = WritableRegisters.SellModeSOC3
    >>> register.set(23)
    
    >>> inv.write_multiple_holding_registers(register.address, [register.modbus_value])
    1
    >>> inv.disconnect()
  • SellMode programming:

    >>> from deye_controller import SellProgrammer
    >>> prog = SellProgrammer('192.168.1.108', 2799999999)
    >>> prog.show_as_screen()
    ____________________________________________________
    | Grid  |  Gen  |      Time     |   Pwr    |  SOC % |
    |       |       | 00:00 | 03:00 |     3500 |   100% |
    |       |       | 03:00 | 04:00 |     3500 |    30% |
    |       |       | 04:00 | 05:00 |     3500 |    30% |
    |       |       | 05:00 | 10:00 |     3500 |    30% |
    |       |       | 10:00 | 23:00 |     3500 |   100% |
    |       |       | 23:00 | 00:00 |     3500 |    30% |
    ----------------------------------------------------
    >>> prog.update_program(3, start_t='6:30', power=2500, soc=35, grid_ch=True)
    Program updated
     >>> prog.show_as_screen()  # For visual confirmation of the settings
    ____________________________________________________
    | Grid  |  Gen  |      Time     |   Pwr    |  SOC % |
    |       |       | 00:00 | 03:00 |     3500 |   100% |
    |       |       | 03:00 | 04:00 |     3500 |    30% |
    |       |       | 04:00 | 06:30 |     3500 |    30% |
    |   ✓   |       | 06:30 | 10:00 |     2500 |    35% |
    |       |       | 10:00 | 23:00 |     3500 |   100% |
    |       |       | 23:00 | 00:00 |     3500 |    30% |
    ----------------------------------------------------
    >>> prog.upload_settings()  # In order to upload the settings to the inverter
    >>> prog.disconnect()  # Needed if PySolarmanV5 >= 3.0.0

Notes

  • It is possible the inverter to be completely deactivated by writing 0 to register 80 WritableRegisters.SwitchOnOff.set(False) but it will raise an alarm and will show error F19. The normal state is restored as soon as the register is set to its default value 1.

  • The WritableRegisters.GridExportLimit register can be used if the grid export is not desired when the battery is charged and the PV generation exceeds the load.

Metadata

Release files for deye-controller 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for deye-controller 0.2.4
File Size Uploaded
deye_controller-0.2.4.tar.gz 20.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for deye-controller 0.2.4
File Interpreter ABI Platform
deye_controller-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 44.4 kB

Release files / deye_controller-0.2.4.tar.gz

Download URL deye_controller-0.2.4.tar.gz
Size 20.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2624bbd69088cbcd2896714937256dec78f8bdcfef96bf082acc5fe8e580f323
BLAKE2b-256 checksum
How to use checksums
4fa774439b31d8f94567e4b809dd2ea618a2e894ec08c728f3c999950dff39ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.4 CPython/3.13.7 Linux/6.19.8-lqx2-1-liquorix

Release files / deye_controller-0.2.4-py3-none-any.whl

Download URL deye_controller-0.2.4-py3-none-any.whl
Size 24.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
58b2cebd6941f4ff118bdc8ab3f2efdcb51fbcce60795849c04405360e0e9cbb
BLAKE2b-256 checksum
How to use checksums
09a089b42927332b9d70a9069ddf216de5c7758688174ba5c97085e4fb96aa87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.4 CPython/3.13.7 Linux/6.19.8-lqx2-1-liquorix

Release history Release notifications | RSS feed

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page