Skip to main content

Get information from Deye Microinverter

Project description

inverter

tests codecov inverter-connect @ PyPi Python Versions License GPL-3.0-or-later

Get information from Deye Microinverter

The whole thing is just a learning exercise for now. We will see.

quickstart

Currently just clone the project and just start the cli (that will create a virtualenv and installs every dependencies)

Note: Please enable https://www.piwheels.org/ if you are on a Raspberry Pi !

e.g.:

~$ git clone https://github.com/jedie/inverter-connect.git
~$ cd inverter-connect
~/inverter-connect$ ./cli.py --help

The output of ./cli.py --help looks like:

Usage: ./cli.py [OPTIONS] COMMAND [ARGS]...

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --help      Show this message and exit.                                                          │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────╮
│ debug-settings           Display (anonymized) MQTT server username and password                  │
│ print-at-commands        Print one or more AT command values from Inverter.                      │
│ print-values             Print all known register values from Inverter, e.g.:                    │
│ publish-loop             Publish current data via MQTT for Home Assistant (endless loop)         │
│ read-register            Read register(s) from the inverter                                      │
│ set-time                 Set current date time in the inverter device.                           │
│ store-settings           Store MQTT server settings.                                             │
│ test-mqtt-connection     Test connection to MQTT Server                                          │
│ version                  Print version and exit                                                  │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

most important commands

publish-loop

Help from ./cli.py print-values --help Looks like:

Usage: ./cli.py publish-loop [OPTIONS] IP

 Publish current data via MQTT for Home Assistant (endless loop)
 The "Daily Production" count will be cleared in the night, by set the current date time via
 AT-command.

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --port                    INTEGER RANGE [1000<=x<=65535]  Port of the inverter                   │
│                                                           [default: 48899; 1000<=x<=65535]       │
│ --log/--no-log                                            [default: log]                         │
│ --verbose/--no-verbose                                    [default: verbose]                     │
│ --debug/--no-debug                                        [default: no-debug]                    │
│ --help                                                    Show this message and exit.            │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

print-values

Help from ./cli.py print-values --help Looks like:

Usage: ./cli.py print-values [OPTIONS] IP

 Print all known register values from Inverter, e.g.:
 .../inverter-connect$ ./cli.py print-values 192.168.123.456

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --port                INTEGER RANGE [1000<=x<=65535]  Port of the inverter                       │
│                                                       [default: 48899; 1000<=x<=65535]           │
│ --debug/--no-debug                                    [default: no-debug]                        │
│ --help                                                Show this message and exit.                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

Example output of print-values call:

print-values


print-at-commands

Help from ./cli.py print-at-commands --help Looks like:

Usage: ./cli.py print-at-commands [OPTIONS] IP [COMMANDS]...

 Print one or more AT command values from Inverter.
 Use all known AT commands, if no one is given, e.g.:
 .../inverter-connect$ ./cli.py print-at-commands 192.168.123.456
 Or specify one or more AT-commands, e.g.:
 .../inverter-connect$ ./cli.py print-at-commands 192.168.123.456 WEBVER .../inverter-connect$
 ./cli.py print-at-commands 192.168.123.456 WEBVER WEBU
 e.g.: Set NTP server, enable NTP and check the values:
 .../inverter-connect$ ./cli.py print-at-commands 192.168.123.456 NTPSER=192.168.1.1 NTPEN=on
 NTPSER NTPEN
 wait a while and request the current date time:
 .../inverter-connect$ ./cli.py print-at-commands 192.168.123.456 NTPTM
 (Note: The prefix "AT+" will be added to every command)

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --port                INTEGER RANGE [1000<=x<=65535]  Port of the inverter                       │
│                                                       [default: 48899; 1000<=x<=65535]           │
│ --debug/--no-debug                                    [default: no-debug]                        │
│ --help                                                Show this message and exit.                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

Example output of print-at-commands call:

print-at-commands


read-register

Help from ./cli.py read-register --help Looks like:

Usage: ./cli.py read-register [OPTIONS] IP REGISTER LENGTH

 Read register(s) from the inverter
 e.g.: read 3 registers starting from 0x16:
 .../inverter-connect$ ./cli.py read-register 192.168.123.456 0x16 3
 e.g.: read the first 32 registers:
 .../inverter-connect$ ./cli.py read-register 192.168.123.456 0 32
 The start address can be pass as decimal number or as hex string, e.g.: 0x123

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --port                INTEGER RANGE [1000<=x<=65535]  Port of the inverter                       │
│                                                       [default: 48899; 1000<=x<=65535]           │
│ --debug/--no-debug                                    [default: debug]                           │
│ --help                                                Show this message and exit.                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

Example output of read-register call:

read-register


start development

For development, we have a separate CLI, just call it:

~/inverter-connect$ ./dev-cli.py --help

The output of ./dev-cli.py --help looks like:

Usage: ./dev-cli.py [OPTIONS] COMMAND [ARGS]...

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --help      Show this message and exit.                                                          │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────╮
│ check-code-style            Check code style by calling darker + flake8                          │
│ coverage                    Run and show coverage.                                               │
│ fix-code-style              Fix code style of all inverter source code files via darker          │
│ install                     Run pip-sync and install 'inverter' via pip as editable.             │
│ mypy                        Run Mypy (configured in pyproject.toml)                              │
│ publish                     Build and upload this project to PyPi                                │
│ safety                      Run safety check against current requirements files                  │
│ test                        Run unittests                                                        │
│ tox                         Run tox                                                              │
│ update                      Update "requirements*.txt" dependencies files                        │
│ update-test-snapshot-files  Update all test snapshot files (by remove and recreate all snapshot  │
│                             files)                                                               │
│ version                     Print version and exit                                               │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

credits

Others before me have done good work. In particular, I have learned a lot from the following projects:

The included definitions yaml files are from:

https://github.com/StephanJoubert/home_assistant_solarman/tree/main/custom_components/solarman/inverter_definitions

various links

Project details


Download files

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

Source Distribution

inverter-connect-0.5.0.tar.gz (57.8 kB view details)

Uploaded Source

Built Distribution

inverter_connect-0.5.0-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file inverter-connect-0.5.0.tar.gz.

File metadata

  • Download URL: inverter-connect-0.5.0.tar.gz
  • Upload date:
  • Size: 57.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for inverter-connect-0.5.0.tar.gz
Algorithm Hash digest
SHA256 824173e9dd8615a15ad1167e3a098d331e52b693fe9a5632320bfda2c20285ff
MD5 bf4ecadd9c1e439dfba0186b6ce232b5
BLAKE2b-256 686f785d38923db18d3cbffe7039f889f2e4c5eb46386cd306e2f6b91a3b8f94

See more details on using hashes here.

Provenance

File details

Details for the file inverter_connect-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for inverter_connect-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe89aeb429774e7c99fc3eed7cc95f843ad5e5c45f8c6d649ae572ae60d53532
MD5 c1b44f16d239630c4e95dbc45285461e
BLAKE2b-256 08e767add7a6d0eb90bf3f8fa6d1acd9c4fe1cd1a1c54e740e0fb4d63567a570

See more details on using hashes here.

Provenance

Supported by

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