Skip to main content

A Python wrapper for the Huawei Inverter modbus TCP API

Project description

Homepage GitHub License Release Python Versions Testing

Python library for connecting to Huawei SUN2000 Inverters over Modbus

This library implements an easy to use interface to locally connect to Huawei Solar devices over Modbus-TCP or Modbus-RTU following the 'Solar Inverter Modbus Interface Definitions' provided by Huawei.

It was primarily developed to add support for Huawei Solar inverters to Home Assistant, resulting in the following integration: wlcrs/huawei_solar.

Supported devices:

  • SUN2000 inverters
  • LUNA2000 batteries (when connected to SUN2000)
  • EMMA
  • SCharger (when connected to EMMA)

Features:

  • Modbus-TCP support: connecting to the inverter via the SDongle, EMMA, or over the WiFi-AP (SUN2000-<serial_no>) broadcasted by the inverter
  • Modbus-RTU support: connecting to the inverter via the RS485A1 and RS485B1 pins on the COM port
  • Batched reading of Modbus registers and converting them into the correct units
  • Reading Optimizer data via the specialized 'file' Modbus extension
  • Writing to Modbus registers (mostly useful for setting battery parameters)
  • Performing the login sequence to gain 'installer'-level access rights

Installation

This library is published on PyPI.

Basic usage

The library consists out of a low level interface implemented in modbus_client.py which implements all the Modbus-operations, and a high level interface in huawei_solar/devices which facilitates easy usage (primarily meant for the HA integration).

Using the high level 'Devices' interface

An example on how to read the most interesting registers from the inverter:

import asyncio

from huawei_solar import (
    SUN2000Device,
    create_device_instance,
    create_tcp_client,
)
from huawei_solar import register_names as rn

async def test() -> None:
    """Run test."""
    client = create_tcp_client(host="192.168.1.1", port=503)
    device = await create_device_instance(client)

    assert isinstance(device, SUN2000Device)
    print(
        await device.batch_update(
            [
              rn.INPUT_POWER,
              rn.LINE_VOLTAGE_A_B,
              rn.LINE_VOLTAGE_B_C,
              rn.LINE_VOLTAGE_C_A,
            ]
        ),
    )

if __name__ == "__main__":
    asyncio.run(main())

This results in the following output being printed:

{'input_power': Result(value=82, unit='W'), 'line_voltage_A_B': Result(value=233.4, unit='V'), 'line_voltage_B_C': Result(value=0.0, unit='V'), 'line_voltage_C_A': Result(value=0.0, unit='V')}

Frequently asked questions

Q: the connection is interrupted a few seconds after connecting to the Huawei Device. How do I solve this?

A:: Huawei devices only support one connection at a time. If your connection is interrupted, this is typically because another device is trying to (re-)connect to it. Disable that device and try again.

Acknowledgements

The initial implementation of v1 was done by @Emilv2.

Subsequent development on v2 was done by @wlcrs.

Project details


Release history Release notifications | RSS feed

This version

3.0.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

huawei_solar-3.0.3.tar.gz (115.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

huawei_solar-3.0.3-py3-none-any.whl (88.7 kB view details)

Uploaded Python 3

File details

Details for the file huawei_solar-3.0.3.tar.gz.

File metadata

  • Download URL: huawei_solar-3.0.3.tar.gz
  • Upload date:
  • Size: 115.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for huawei_solar-3.0.3.tar.gz
Algorithm Hash digest
SHA256 e5631da994e0560ef4c543bcb83188e60f8bee7c42a728e94b6dc51b45ea9fba
MD5 f5182f119a652c2c85f56b9eac5f3b83
BLAKE2b-256 640ddfad292de20a7c65f7ab796b3b8ae9df5a7a9265819076de7a73bcff4265

See more details on using hashes here.

Provenance

The following attestation bundles were made for huawei_solar-3.0.3.tar.gz:

Publisher: pypi-publish.yml on wlcrs/huawei-solar-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file huawei_solar-3.0.3-py3-none-any.whl.

File metadata

  • Download URL: huawei_solar-3.0.3-py3-none-any.whl
  • Upload date:
  • Size: 88.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for huawei_solar-3.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 85035a5b513569a562ce2062ca50132f2c2d870d2afd7d21e847e82e19b31143
MD5 6b7606f45b945370a1c883e32b8b40fc
BLAKE2b-256 602c8c2258a229c2fb48c525f9fbbb6c30e35f0dbc5e25dcdb2d124039bdaff1

See more details on using hashes here.

Provenance

The following attestation bundles were made for huawei_solar-3.0.3-py3-none-any.whl:

Publisher: pypi-publish.yml on wlcrs/huawei-solar-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page