Files
gree-controller/ha-addon
2026-09-17 21:46:10 +02:00
..
2026-09-17 21:46:10 +02:00
2026-09-17 21:46:10 +02:00
2026-09-10 08:24:53 +02:00
2026-09-16 17:07:17 +02:00
2026-09-17 08:52:02 +02:00
2026-09-16 22:38:45 +02:00
2026-09-16 17:07:17 +02:00
2026-09-10 08:24:53 +02:00

GREE Controller — Home Assistant distribution

This directory contains the OCI build, Home Assistant add-on repository source, custom integration and repository synchronization tooling.

Configuration

Create the local build/repository configuration once:

cd ha-addon
cp .env.example .env
$EDITOR .env

build.sh and sync-repository.sh read all deployment-specific values from .env; .env is ignored by Git.

Important variables:

REGISTRY=repo.example.com
IMAGE_NAME=gree-controller
DISTRO=alpine
RUST_VERSION=1.89
BUILD_PLATFORMS=linux/amd64,linux/arm64
BUILDER=gree-controller-multiarch
BUILDER_CONFIG=
HA_REPO_URL=https://repo.example.com/gree-controller-ha-addon/
HA_REPO_BRANCH=master
HA_REPO_PATH=../gree-controller-ha-addon
ADDON_DIR=gree-controller
INTEGRATION_DOMAIN=gree_controller

OCI image

./build.sh render
./build.sh load amd64
./build.sh load aarch64
./build.sh push

The project version comes only from root Cargo.toml. render synchronizes it to Cargo.lock, add-on config.yaml and the custom integration manifest.json, and sets the OCI image from .env.

For the Home Assistant package, TCP 8787 is an intentional fixed host-network/ingress port contract. build.sh render verifies config.yaml, run.sh, the watchdog URL and Docker image metadata stay consistent. The runtime also compares the Supervisor-reported ingress port before starting. Standalone installations remain free to use any GREE_CONTROLLER_BIND port.

DISTRO still selects the target image system: alpine builds a musl binary for Alpine and trixie builds a GNU/glibc binary for Debian Trixie. Multi-architecture builds continue to run through build.sh; the Docker builder cross-compiles Rust on BUILDPLATFORM so ARM compilation does not run under QEMU, and BuildKit cache mounts preserve Cargo downloads and target artifacts between builds.

Home Assistant repository

./sync-repository.sh

The command updates/clones HA_REPO_URL, mirrors the repository and pushes only when content changed. The resulting repository contains:

repository.yaml
gree-controller/                    # Home Assistant add-on
custom_components/gree_controller/  # Home Assistant custom integration

The custom integration source is maintained only in:

ha-addon/home-assistant/custom_components/gree_controller/

It is added to the separate HA repository during synchronization, so it is not duplicated in this project.

Adding the repository to the Home Assistant add-on store installs the add-on only. The bundled custom integration can be copied from the same repository to /config/custom_components/gree_controller/ when required.

Layout

.env.example          local deployment configuration template
Dockerfile            multi-architecture image
build.sh              metadata + OCI build/push
run.sh                add-on entrypoint
sync-repository.sh    separate HA repository synchronization
repository/           add-on repository source
home-assistant/       custom integration source and migration output