A server to intercept Growatt Inverters and Smart Energy Meters messages in order to use them locally.
Report Bug
·
Request Feature
This project aims to allow Growatt Inverters owners to take full ownership of their systems. This can be for various reasons; at first it was conceived to be able to get data from the inverters with as little changes as possible to the system.
Since the inverters by themselves do not have the capability to connect to the internet, they need a middleman to query them and report the data online. There are excellent projects that replace the middleman with a custom device that can interrogate the inverter(s) via RS485, however it may not be the best solution, especially if the system is made of multiple inverters.
In this case, the other option is to intercept the messages of the middleman and act as a second one ourselves. This way, the messages are decoded, and sent via MQTT or similar means (planned) to whatever system that may consume the data.
Currently, the project allows for the messages exchanged between the system and Growatt's server to be forwarded, but it is planned to be able to take it offline for complete control.
It is known that there are different protocol versions used by Growatt devices. Right now the project can "understand" Protocol V6, however as soon as data from other protocol versions will be available, the project will be updated to support them.
Given the current project status, no standalone runtime is available for download, but they're planned for the near future.
Right now the only way available is to pull the repository and compile it. There is a docker image, but it is currently updated only during testing, so to follow the latest version right now it is suggested to pull directly from the repository.
It is planned to supply executables (GNU/Linux only) and a Docker image.
Once the executable will be released here on GitHub, it will be sufficient to download it and run it alongside the inverters
configuration directory, which contains mappings for the data returned by the inverters.
I expect you to know what you're doing. You'll need to:
- Pull the repository:
git clone https://github.com/stefa168/growatt_server.git
- Install the Rust toolchain
-
cd growatt_server cargo install --path .
You can use the following compose sample:
version: "3.9"
services:
growatt_server:
image: stefa168/growatt_server:latest
build: .
ports:
- "5279:5279/tcp"
volumes:
- ./inverters:/usr/local/bin/inverters
Please note that the inverters
folder is mandatory, and must contain the (currently only) mapping file.
Right now it is sufficient to run the executable, or start the container.
Please note that currently the server does not relay the data to anything else except Growatt's servers on server.growatt.com
.
- Message interception
- Proxy
- Basic proxy
- Proxy with filtering features (for unwanted remote control)
- Impersonator
- Protocols
- Protocol v6
- ?
- Proxy
- Data
- Storage
- MQTT
- Home Assistant
- Frontend
See the open issues for a full list of proposed features (and known issues).
Contributions are vital to the Open Source ecosystem. If you have any suggestion or improvement, please submit it!
You can open an issue, or fork the repository and then make a pull request with your new features and suggestions.
The commit messages are expected to follow the Conventional Commits format.
Distributed under the GNU GPL3 License. See LICENSE.md
for more information.
Stefano Vittorio Porta - @stefa168
Project Link: https://github.com/stefa168/growatt_server