1035 lines
17 KiB
Markdown
1035 lines
17 KiB
Markdown
# GREE Controller - Home Assistant Add-on
|
|
|
|
This file contains the installation and release procedure in **Polish** and **English**.
|
|
|
|
---
|
|
|
|
# PL - Instalacja dodatku Home Assistant
|
|
|
|
## 1. Wymagania
|
|
|
|
Na maszynie, na której budujesz obrazy, potrzebujesz:
|
|
|
|
- Docker
|
|
- Docker Buildx
|
|
- dostępu do registry OCI, np. `zot.example.com` albo `oci.example.com`
|
|
- repozytorium Git dostępnego z Home Assistanta
|
|
|
|
Sprawdź:
|
|
|
|
```bash
|
|
docker --version
|
|
docker buildx version
|
|
```
|
|
|
|
## 2. Wejdź do katalogu dodatku
|
|
|
|
Z katalogu głównego projektu:
|
|
|
|
```bash
|
|
cd ha-addon
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edytuj `.env`:
|
|
|
|
```bash
|
|
nano .env
|
|
```
|
|
|
|
Przykład dla Zot:
|
|
|
|
```dotenv
|
|
REGISTRY=zot.example.com
|
|
IMAGE_NAME=gree-controller
|
|
DISTRO=trixie
|
|
BUILDER=gree-controller-multiarch
|
|
BUILDER_CONFIG=
|
|
```
|
|
|
|
Obsługiwane systemy bazowe:
|
|
|
|
- `DISTRO=trixie` - zalecany wariant Debian Trixie
|
|
- `DISTRO=alpine` - wariant Alpine
|
|
|
|
Na początek zalecany jest `trixie`.
|
|
|
|
## 3. Logowanie do registry
|
|
|
|
Jeżeli registry wymaga autoryzacji:
|
|
|
|
```bash
|
|
docker login zot.example.com
|
|
```
|
|
|
|
Po poprawnym logowaniu powinno pojawić się:
|
|
|
|
```text
|
|
Login Succeeded
|
|
```
|
|
|
|
## 4. Wersjonowanie
|
|
|
|
Wersję zmieniasz tylko w jednym miejscu:
|
|
|
|
```text
|
|
Cargo.toml
|
|
```
|
|
|
|
Przykład:
|
|
|
|
```toml
|
|
[package]
|
|
version = "0.13.9"
|
|
```
|
|
|
|
Przy kolejnym wydaniu zmień tylko:
|
|
|
|
```toml
|
|
version = "0.13.10"
|
|
```
|
|
|
|
Nie zmieniaj ręcznie wersji w:
|
|
|
|
- `Cargo.lock`
|
|
- `ha-addon/repository/gree-controller/config.yaml`
|
|
|
|
Skrypt `build.sh` synchronizuje te pliki automatycznie.
|
|
|
|
## 5. Włącz build ARM64 przez QEMU
|
|
|
|
Jeżeli host budujący jest `amd64`, zainstaluj emulację binfmt/QEMU:
|
|
|
|
```bash
|
|
docker run --privileged --rm tonistiigi/binfmt --install all
|
|
```
|
|
|
|
Sprawdź dostępne platformy:
|
|
|
|
```bash
|
|
docker buildx inspect --bootstrap
|
|
```
|
|
|
|
Jeżeli domyślny builder pokazuje tylko `amd64`, nie jest to problem. `build.sh` tworzy własny builder:
|
|
|
|
```text
|
|
gree-controller-multiarch
|
|
```
|
|
|
|
Po jego utworzeniu możesz sprawdzić go poleceniem:
|
|
|
|
```bash
|
|
docker buildx inspect gree-controller-multiarch --bootstrap
|
|
```
|
|
|
|
Powinny być dostępne co najmniej:
|
|
|
|
```text
|
|
linux/amd64
|
|
linux/arm64
|
|
```
|
|
|
|
Home Assistant używa nazwy architektury `aarch64`, natomiast Docker używa `linux/arm64`.
|
|
|
|
## 6. Build i push obrazu multi-arch
|
|
|
|
Będąc w katalogu:
|
|
|
|
```text
|
|
ha-addon/
|
|
```
|
|
|
|
uruchom:
|
|
|
|
```bash
|
|
./build.sh push
|
|
```
|
|
|
|
Skrypt:
|
|
|
|
1. czyta wersję z `Cargo.toml`,
|
|
2. synchronizuje `Cargo.lock`,
|
|
3. aktualizuje `ha-addon/repository/gree-controller/config.yaml`,
|
|
4. buduje `linux/amd64`,
|
|
5. buduje `linux/arm64`,
|
|
6. publikuje jeden manifest multi-arch do registry.
|
|
|
|
Przykładowy wynik:
|
|
|
|
```text
|
|
zot.example.com/gree-controller:0.13.9
|
|
```
|
|
|
|
Nie musisz ręcznie utrzymywać osobnych wersji dla `amd64` i `arm64`.
|
|
|
|
## 7. Sprawdź obraz w registry
|
|
|
|
Po poprawnym buildzie:
|
|
|
|
```bash
|
|
docker buildx imagetools inspect \
|
|
zot.example.com/gree-controller:0.13.9
|
|
```
|
|
|
|
Powinieneś zobaczyć:
|
|
|
|
```text
|
|
linux/amd64
|
|
linux/arm64
|
|
```
|
|
|
|
Możesz też sprawdzić pull dla bieżącej architektury:
|
|
|
|
```bash
|
|
docker pull zot.example.com/gree-controller:0.13.9
|
|
```
|
|
|
|
## 8. Jeżeli build kończy się błędem `docs/openapi.json`
|
|
|
|
Projekt korzysta podczas kompilacji z:
|
|
|
|
```text
|
|
src/api/openapi.rs -> ../../docs/openapi.json
|
|
```
|
|
|
|
Dockerfile musi więc kopiować katalog `docs` do etapu buildera:
|
|
|
|
```dockerfile
|
|
COPY docs ./docs
|
|
```
|
|
|
|
W tej wersji projektu jest to już poprawione dla `trixie` i `alpine`.
|
|
|
|
## 9. Przygotowanie repozytorium Home Assistant
|
|
|
|
Do Git publikujesz zawartość katalogu:
|
|
|
|
```text
|
|
ha-addon/repository/
|
|
```
|
|
|
|
Root repozytorium Git powinien wyglądać tak:
|
|
|
|
```text
|
|
repository.yaml
|
|
gree-controller/
|
|
├── config.yaml
|
|
├── README.md
|
|
├── DOCS.md
|
|
├── DOCS.pl.md
|
|
├── CHANGELOG.md
|
|
├── translations/
|
|
├── topology-ha-vlan-gree-en.png
|
|
└── topologia-ha-vlan-gree-pl.png
|
|
```
|
|
|
|
Przykład:
|
|
|
|
```bash
|
|
cd ha-addon/repository
|
|
|
|
git init -b main
|
|
git add .
|
|
git commit -m "Initial GREE Controller Home Assistant add-on"
|
|
```
|
|
|
|
Dodaj swoje repo Git:
|
|
|
|
```bash
|
|
git remote add origin \
|
|
https://git.example.pl/mateusz/gree-controller-ha-addon.git
|
|
|
|
git push -u origin main
|
|
```
|
|
|
|
Home Assistant musi mieć dostęp do tego repozytorium Git.
|
|
|
|
## 10. Prywatne registry
|
|
|
|
Jeżeli obraz OCI nie jest publiczny, Home Assistant musi mieć możliwość zalogowania się do registry.
|
|
|
|
Jeżeli używasz prywatnego registry, dodaj dane dostępowe do registry w Home Assistant/Supervisor zgodnie z konfiguracją swojej instalacji.
|
|
|
|
Najprostszy wariant do pierwszego uruchomienia:
|
|
|
|
- Git repo może być publiczne lub dostępne dla HA,
|
|
- obraz może mieć anonymous pull,
|
|
- registry powinno działać po HTTPS z poprawnym certyfikatem.
|
|
|
|
## 11. Dodanie custom repository w Home Assistant
|
|
|
|
W Home Assistant otwórz sklep Apps/Add-ons i dodaj URL repozytorium Git jako custom repository.
|
|
|
|
Podajesz URL Git, np.:
|
|
|
|
```text
|
|
https://git.example.pl/mateusz/gree-controller-ha-addon.git
|
|
```
|
|
|
|
Nie podajesz:
|
|
|
|
- ZIP-a projektu,
|
|
- adresu obrazu OCI,
|
|
- adresu `zot.example.com/gree-controller`.
|
|
|
|
Podział jest następujący:
|
|
|
|
```text
|
|
Git repository
|
|
-> opis dodatku i config.yaml
|
|
|
|
OCI/Zot registry
|
|
-> gotowy obraz kontenera
|
|
```
|
|
|
|
## 12. Instalacja dodatku
|
|
|
|
Po dodaniu custom repository odśwież sklep dodatków.
|
|
|
|
Powinien pojawić się:
|
|
|
|
```text
|
|
GREE Controller
|
|
```
|
|
|
|
Kliknij:
|
|
|
|
```text
|
|
Install
|
|
```
|
|
|
|
Home Assistant odczyta np.:
|
|
|
|
```yaml
|
|
version: "0.13.9"
|
|
image: "zot.example.com/gree-controller"
|
|
```
|
|
|
|
i pobierze:
|
|
|
|
```text
|
|
zot.example.com/gree-controller:0.13.9
|
|
```
|
|
|
|
Manifest OCI automatycznie wybierze odpowiednią architekturę.
|
|
|
|
## 13. Konfiguracja jednej sieci/VLAN GREE
|
|
|
|
Przykład:
|
|
|
|
```text
|
|
eth0.50
|
|
192.168.50.2/24
|
|
|
|
GREE devices:
|
|
192.168.50.x
|
|
```
|
|
|
|
Konfiguracja dodatku:
|
|
|
|
```yaml
|
|
gree_interface: "eth0.50"
|
|
discovery_broadcast: "192.168.50.255:7000"
|
|
simulate: false
|
|
auto_seed: false
|
|
poll_interval_seconds: 15
|
|
zone_interval_seconds: 5
|
|
discovery_timeout_ms: 3000
|
|
app_token: ""
|
|
log_level: info
|
|
```
|
|
|
|
Zamiast nazwy interfejsu można podać lokalny IPv4:
|
|
|
|
```yaml
|
|
gree_interface: "192.168.50.2"
|
|
```
|
|
|
|
## 14. Kilka VLAN-ów / kilka interfejsów
|
|
|
|
Przykład:
|
|
|
|
```text
|
|
eth0
|
|
├── eth0.50 -> 192.168.50.2/24
|
|
└── eth0.60 -> 192.168.60.2/24
|
|
```
|
|
|
|
Dla automatycznego wyboru interfejsu pozostaw:
|
|
|
|
```yaml
|
|
gree_interface: ""
|
|
```
|
|
|
|
Dla znanych urządzeń kontroler dobiera interfejs do adresu docelowego.
|
|
|
|
Discovery UDP broadcast wykonuj osobno dla każdej podsieci.
|
|
|
|
VLAN 50:
|
|
|
|
```yaml
|
|
discovery_broadcast: "192.168.50.255:7000"
|
|
```
|
|
|
|
VLAN 60:
|
|
|
|
```yaml
|
|
discovery_broadcast: "192.168.60.255:7000"
|
|
```
|
|
|
|
Broadcast zwykle nie przechodzi przez router, dlatego discovery należy wykonywać per VLAN.
|
|
|
|
## 15. VLAN-y na Home Assistant OS
|
|
|
|
Sprawdź sieć:
|
|
|
|
```bash
|
|
ha network info
|
|
```
|
|
|
|
Przykład VLAN 50:
|
|
|
|
```bash
|
|
ha network vlan eth0 50 \
|
|
--ipv4-method static \
|
|
--ipv4-address 192.168.50.2/24 \
|
|
--ipv6-method disabled
|
|
```
|
|
|
|
Przykład VLAN 60:
|
|
|
|
```bash
|
|
ha network vlan eth0 60 \
|
|
--ipv4-method static \
|
|
--ipv4-address 192.168.60.2/24 \
|
|
--ipv6-method disabled
|
|
```
|
|
|
|
Następnie:
|
|
|
|
```bash
|
|
ha network info
|
|
```
|
|
|
|
Powinny być widoczne interfejsy podobne do:
|
|
|
|
```text
|
|
eth0
|
|
eth0.50
|
|
eth0.60
|
|
```
|
|
|
|
Jeżeli główny interfejs HA ma już default gateway, nie dodawaj bez potrzeby kolejnych bram domyślnych na VLAN-ach GREE.
|
|
|
|
## 16. Dlaczego `host_network`
|
|
|
|
Dodatek ma ustawione:
|
|
|
|
```yaml
|
|
host_network: true
|
|
```
|
|
|
|
Dzięki temu kontener korzysta z przestrzeni sieciowej hosta Home Assistant OS i widzi jego interfejsy/VLAN-y.
|
|
|
|
Nie trzeba tworzyć `macvlan` wewnątrz dodatku.
|
|
|
|
Schemat:
|
|
|
|
```text
|
|
Home Assistant OS
|
|
├── eth0
|
|
├── eth0.50
|
|
├── eth0.60
|
|
└── GREE Controller add-on
|
|
└── host_network: true
|
|
├── VLAN 50 -> GREE A/B
|
|
└── VLAN 60 -> GREE C/D
|
|
```
|
|
|
|
Diagramy znajdują się w:
|
|
|
|
```text
|
|
ha-addon/docs/topologia-ha-vlan-gree-pl.png
|
|
ha-addon/docs/topology-ha-vlan-gree-en.png
|
|
```
|
|
|
|
## 17. Uruchomienie i Web UI
|
|
|
|
Po instalacji uruchom dodatek i sprawdź logi.
|
|
|
|
Przykład:
|
|
|
|
```text
|
|
GREE Controller: interface=auto discovery=192.168.50.255:7000 database=/data/gree-controller.db
|
|
```
|
|
|
|
Web UI jest dostępne przez Home Assistant Ingress.
|
|
|
|
## 18. Aktualizacja dodatku
|
|
|
|
Przy nowym wydaniu:
|
|
|
|
### Krok 1 - zmień wersję tylko w `Cargo.toml`
|
|
|
|
```toml
|
|
version = "0.13.10"
|
|
```
|
|
|
|
### Krok 2 - build i push
|
|
|
|
```bash
|
|
cd ha-addon
|
|
./build.sh push
|
|
```
|
|
|
|
### Krok 3 - sprawdź manifest
|
|
|
|
```bash
|
|
docker buildx imagetools inspect \
|
|
zot.example.com/gree-controller:0.13.10
|
|
```
|
|
|
|
### Krok 4 - wypchnij metadata repozytorium HA
|
|
|
|
```bash
|
|
cd repository
|
|
git add .
|
|
git commit -m "Release 0.13.10"
|
|
git push
|
|
```
|
|
|
|
### Krok 5 - aktualizacja w Home Assistant
|
|
|
|
Odśwież informacje o dodatkach i zainstaluj dostępną aktualizację.
|
|
|
|
Zalecana kolejność publikacji:
|
|
|
|
```text
|
|
1. zmiana Cargo.toml
|
|
2. ./build.sh push
|
|
3. sprawdzenie obrazu OCI
|
|
4. git commit/push ha-addon/repository
|
|
5. update w Home Assistant
|
|
```
|
|
|
|
Dzięki temu Home Assistant nie zobaczy nowej wersji zanim obraz będzie dostępny w registry.
|
|
|
|
---
|
|
|
|
# EN - Home Assistant Add-on installation
|
|
|
|
## 1. Requirements
|
|
|
|
The build machine needs:
|
|
|
|
- Docker
|
|
- Docker Buildx
|
|
- access to an OCI registry such as `zot.example.com` or `oci.example.com`
|
|
- a Git repository reachable by Home Assistant
|
|
|
|
Check:
|
|
|
|
```bash
|
|
docker --version
|
|
docker buildx version
|
|
```
|
|
|
|
## 2. Enter the add-on directory
|
|
|
|
From the project root:
|
|
|
|
```bash
|
|
cd ha-addon
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edit `.env`:
|
|
|
|
```bash
|
|
nano .env
|
|
```
|
|
|
|
Example for Zot:
|
|
|
|
```dotenv
|
|
REGISTRY=zot.example.com
|
|
IMAGE_NAME=gree-controller
|
|
DISTRO=trixie
|
|
BUILDER=gree-controller-multiarch
|
|
BUILDER_CONFIG=
|
|
```
|
|
|
|
Supported base distributions:
|
|
|
|
- `DISTRO=trixie` - recommended Debian Trixie variant
|
|
- `DISTRO=alpine` - Alpine variant
|
|
|
|
Start with `trixie` unless you specifically need Alpine.
|
|
|
|
## 3. Log in to the registry
|
|
|
|
If authentication is required:
|
|
|
|
```bash
|
|
docker login zot.example.com
|
|
```
|
|
|
|
Expected result:
|
|
|
|
```text
|
|
Login Succeeded
|
|
```
|
|
|
|
## 4. Versioning
|
|
|
|
Change the application version in one place only:
|
|
|
|
```text
|
|
Cargo.toml
|
|
```
|
|
|
|
Example:
|
|
|
|
```toml
|
|
[package]
|
|
version = "0.13.9"
|
|
```
|
|
|
|
For the next release change only:
|
|
|
|
```toml
|
|
version = "0.13.10"
|
|
```
|
|
|
|
Do not manually maintain the version in:
|
|
|
|
- `Cargo.lock`
|
|
- `ha-addon/repository/gree-controller/config.yaml`
|
|
|
|
`build.sh` synchronizes these files automatically.
|
|
|
|
## 5. Enable ARM64 builds with QEMU
|
|
|
|
When building on an `amd64` host, install binfmt/QEMU support:
|
|
|
|
```bash
|
|
docker run --privileged --rm tonistiigi/binfmt --install all
|
|
```
|
|
|
|
Check platforms:
|
|
|
|
```bash
|
|
docker buildx inspect --bootstrap
|
|
```
|
|
|
|
If the default builder still lists only `amd64`, that is not a problem. `build.sh` creates its own builder named:
|
|
|
|
```text
|
|
gree-controller-multiarch
|
|
```
|
|
|
|
After it has been created, inspect it with:
|
|
|
|
```bash
|
|
docker buildx inspect gree-controller-multiarch --bootstrap
|
|
```
|
|
|
|
You should have at least:
|
|
|
|
```text
|
|
linux/amd64
|
|
linux/arm64
|
|
```
|
|
|
|
Home Assistant calls the ARM architecture `aarch64`, while Docker uses `linux/arm64`.
|
|
|
|
## 6. Build and push the multi-arch image
|
|
|
|
From:
|
|
|
|
```text
|
|
ha-addon/
|
|
```
|
|
|
|
run:
|
|
|
|
```bash
|
|
./build.sh push
|
|
```
|
|
|
|
The script:
|
|
|
|
1. reads the version from `Cargo.toml`,
|
|
2. synchronizes `Cargo.lock`,
|
|
3. updates `ha-addon/repository/gree-controller/config.yaml`,
|
|
4. builds `linux/amd64`,
|
|
5. builds `linux/arm64`,
|
|
6. pushes one multi-architecture OCI manifest.
|
|
|
|
Example result:
|
|
|
|
```text
|
|
zot.example.com/gree-controller:0.13.9
|
|
```
|
|
|
|
There is no manual per-architecture version maintenance.
|
|
|
|
## 7. Verify the published image
|
|
|
|
After a successful build:
|
|
|
|
```bash
|
|
docker buildx imagetools inspect \
|
|
zot.example.com/gree-controller:0.13.9
|
|
```
|
|
|
|
Expected platforms:
|
|
|
|
```text
|
|
linux/amd64
|
|
linux/arm64
|
|
```
|
|
|
|
You can also test a pull for the current machine architecture:
|
|
|
|
```bash
|
|
docker pull zot.example.com/gree-controller:0.13.9
|
|
```
|
|
|
|
## 8. If the build fails on `docs/openapi.json`
|
|
|
|
The application embeds this file during compilation:
|
|
|
|
```text
|
|
src/api/openapi.rs -> ../../docs/openapi.json
|
|
```
|
|
|
|
Therefore each Docker builder stage must include:
|
|
|
|
```dockerfile
|
|
COPY docs ./docs
|
|
```
|
|
|
|
This project version already contains that fix for both `trixie` and `alpine`.
|
|
|
|
## 9. Prepare the Home Assistant repository
|
|
|
|
Publish the contents of:
|
|
|
|
```text
|
|
ha-addon/repository/
|
|
```
|
|
|
|
The Git repository root should contain:
|
|
|
|
```text
|
|
repository.yaml
|
|
gree-controller/
|
|
├── config.yaml
|
|
├── README.md
|
|
├── DOCS.md
|
|
├── DOCS.pl.md
|
|
├── CHANGELOG.md
|
|
├── translations/
|
|
├── topology-ha-vlan-gree-en.png
|
|
└── topologia-ha-vlan-gree-pl.png
|
|
```
|
|
|
|
Example:
|
|
|
|
```bash
|
|
cd ha-addon/repository
|
|
|
|
git init -b main
|
|
git add .
|
|
git commit -m "Initial GREE Controller Home Assistant add-on"
|
|
```
|
|
|
|
Add your Git remote:
|
|
|
|
```bash
|
|
git remote add origin \
|
|
https://git.example.pl/mateusz/gree-controller-ha-addon.git
|
|
|
|
git push -u origin main
|
|
```
|
|
|
|
Home Assistant must be able to reach this Git repository.
|
|
|
|
## 10. Private registry
|
|
|
|
If the OCI image is private, Home Assistant/Supervisor must have valid credentials for the registry.
|
|
|
|
For the simplest first installation use:
|
|
|
|
- a Git repository reachable by Home Assistant,
|
|
- anonymous pull for the OCI image if possible,
|
|
- HTTPS with a trusted certificate on the registry.
|
|
|
|
## 11. Add the custom repository to Home Assistant
|
|
|
|
Open the Apps/Add-ons store in Home Assistant and add the Git repository URL as a custom repository.
|
|
|
|
Example:
|
|
|
|
```text
|
|
https://git.example.pl/mateusz/gree-controller-ha-addon.git
|
|
```
|
|
|
|
Do not use:
|
|
|
|
- the project ZIP,
|
|
- the OCI image URL,
|
|
- `zot.example.com/gree-controller` as the repository URL.
|
|
|
|
The roles are:
|
|
|
|
```text
|
|
Git repository
|
|
-> add-on metadata and config.yaml
|
|
|
|
OCI/Zot registry
|
|
-> pre-built container image
|
|
```
|
|
|
|
## 12. Install the add-on
|
|
|
|
Refresh the Apps/Add-ons store after adding the repository.
|
|
|
|
You should see:
|
|
|
|
```text
|
|
GREE Controller
|
|
```
|
|
|
|
Select it and click:
|
|
|
|
```text
|
|
Install
|
|
```
|
|
|
|
Home Assistant reads values such as:
|
|
|
|
```yaml
|
|
version: "0.13.9"
|
|
image: "zot.example.com/gree-controller"
|
|
```
|
|
|
|
and pulls:
|
|
|
|
```text
|
|
zot.example.com/gree-controller:0.13.9
|
|
```
|
|
|
|
The OCI manifest automatically selects the correct architecture.
|
|
|
|
## 13. Single GREE network/VLAN
|
|
|
|
Example:
|
|
|
|
```text
|
|
eth0.50
|
|
192.168.50.2/24
|
|
|
|
GREE devices:
|
|
192.168.50.x
|
|
```
|
|
|
|
Add-on configuration:
|
|
|
|
```yaml
|
|
gree_interface: "eth0.50"
|
|
discovery_broadcast: "192.168.50.255:7000"
|
|
simulate: false
|
|
auto_seed: false
|
|
poll_interval_seconds: 15
|
|
zone_interval_seconds: 5
|
|
discovery_timeout_ms: 3000
|
|
app_token: ""
|
|
log_level: info
|
|
```
|
|
|
|
A local IPv4 address can be used instead of the interface name:
|
|
|
|
```yaml
|
|
gree_interface: "192.168.50.2"
|
|
```
|
|
|
|
## 14. Multiple VLANs / multiple interfaces
|
|
|
|
Example:
|
|
|
|
```text
|
|
eth0
|
|
├── eth0.50 -> 192.168.50.2/24
|
|
└── eth0.60 -> 192.168.60.2/24
|
|
```
|
|
|
|
For automatic interface selection leave:
|
|
|
|
```yaml
|
|
gree_interface: ""
|
|
```
|
|
|
|
For known devices the controller selects an interface according to the destination address.
|
|
|
|
Run UDP broadcast discovery separately for each subnet.
|
|
|
|
VLAN 50:
|
|
|
|
```yaml
|
|
discovery_broadcast: "192.168.50.255:7000"
|
|
```
|
|
|
|
VLAN 60:
|
|
|
|
```yaml
|
|
discovery_broadcast: "192.168.60.255:7000"
|
|
```
|
|
|
|
Broadcast normally does not cross routers, therefore discovery should be performed per VLAN.
|
|
|
|
## 15. VLANs on Home Assistant OS
|
|
|
|
Check the current network configuration:
|
|
|
|
```bash
|
|
ha network info
|
|
```
|
|
|
|
Example VLAN 50:
|
|
|
|
```bash
|
|
ha network vlan eth0 50 \
|
|
--ipv4-method static \
|
|
--ipv4-address 192.168.50.2/24 \
|
|
--ipv6-method disabled
|
|
```
|
|
|
|
Example VLAN 60:
|
|
|
|
```bash
|
|
ha network vlan eth0 60 \
|
|
--ipv4-method static \
|
|
--ipv4-address 192.168.60.2/24 \
|
|
--ipv6-method disabled
|
|
```
|
|
|
|
Verify again:
|
|
|
|
```bash
|
|
ha network info
|
|
```
|
|
|
|
Expected interfaces are similar to:
|
|
|
|
```text
|
|
eth0
|
|
eth0.50
|
|
eth0.60
|
|
```
|
|
|
|
If the main Home Assistant interface already has the default gateway, normally do not add additional default gateways to GREE VLAN interfaces.
|
|
|
|
## 16. Why `host_network`
|
|
|
|
The add-on uses:
|
|
|
|
```yaml
|
|
host_network: true
|
|
```
|
|
|
|
This makes the container use the Home Assistant OS host network namespace and allows it to see the host interfaces and VLANs.
|
|
|
|
There is no need to create Docker `macvlan` networks inside the add-on.
|
|
|
|
Topology:
|
|
|
|
```text
|
|
Home Assistant OS
|
|
├── eth0
|
|
├── eth0.50
|
|
├── eth0.60
|
|
└── GREE Controller add-on
|
|
└── host_network: true
|
|
├── VLAN 50 -> GREE A/B
|
|
└── VLAN 60 -> GREE C/D
|
|
```
|
|
|
|
Diagrams are stored in:
|
|
|
|
```text
|
|
ha-addon/docs/topologia-ha-vlan-gree-pl.png
|
|
ha-addon/docs/topology-ha-vlan-gree-en.png
|
|
```
|
|
|
|
## 17. Start the add-on and open the Web UI
|
|
|
|
After installation start the add-on and check its logs.
|
|
|
|
Example:
|
|
|
|
```text
|
|
GREE Controller: interface=auto discovery=192.168.50.255:7000 database=/data/gree-controller.db
|
|
```
|
|
|
|
The Web UI is available through Home Assistant Ingress.
|
|
|
|
## 18. Updating the add-on
|
|
|
|
For a new release:
|
|
|
|
### Step 1 - change only `Cargo.toml`
|
|
|
|
```toml
|
|
version = "0.13.10"
|
|
```
|
|
|
|
### Step 2 - build and push
|
|
|
|
```bash
|
|
cd ha-addon
|
|
./build.sh push
|
|
```
|
|
|
|
### Step 3 - verify the OCI manifest
|
|
|
|
```bash
|
|
docker buildx imagetools inspect \
|
|
zot.example.com/gree-controller:0.13.10
|
|
```
|
|
|
|
### Step 4 - publish updated Home Assistant metadata
|
|
|
|
```bash
|
|
cd repository
|
|
git add .
|
|
git commit -m "Release 0.13.10"
|
|
git push
|
|
```
|
|
|
|
### Step 5 - update in Home Assistant
|
|
|
|
Refresh the add-on information and install the available update.
|
|
|
|
Recommended release order:
|
|
|
|
```text
|
|
1. change Cargo.toml
|
|
2. ./build.sh push
|
|
3. verify the OCI image
|
|
4. git commit/push ha-addon/repository
|
|
5. update in Home Assistant
|
|
```
|
|
|
|
This prevents Home Assistant from seeing a new version before its image is available in the registry.
|
|
|
|
---
|
|
|
|
# References
|
|
|
|
- Home Assistant app repositories: https://developers.home-assistant.io/docs/apps/repository/
|
|
- Home Assistant app publishing: https://developers.home-assistant.io/docs/apps/publishing/
|
|
- Home Assistant app configuration: https://developers.home-assistant.io/docs/apps/configuration/
|
|
- Docker multi-platform builds: https://docs.docker.com/build/building/multi-platform/
|