Skip to content

Intercept locally your equipment messages and use the data locally.

License

Notifications You must be signed in to change notification settings

stefa168/growatt_server

Repository files navigation

GPL3 License Issues build-shield

GrowattServer

A server to intercept Growatt Inverters and Smart Energy Meters messages in order to use them locally.

Report Bug · Request Feature

About The Project

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.

Getting Started

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.

Prerequisites

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.

Installation

From sources

I expect you to know what you're doing. You'll need to:

  1. Pull the repository:
    git clone https://github.com/stefa168/growatt_server.git
  2. Install the Rust toolchain
  3.  cd growatt_server
     cargo install --path .

Docker

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.

Usage

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.

Roadmap

  • Message interception
    • Proxy
      • Basic proxy
      • Proxy with filtering features (for unwanted remote control)
    • Impersonator
    • Protocols
      • Protocol v6
      • ?
  • Data
    • Storage
    • MQTT
    • Home Assistant
  • Frontend

See the open issues for a full list of proposed features (and known issues).

Contributing

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.

License

Distributed under the GNU GPL3 License. See LICENSE.md for more information.

Contact

Stefano Vittorio Porta - @stefa168

Project Link: https://github.com/stefa168/growatt_server

Acknowledgments