Tutorial: Gladys Assistant auf einem Home Assistant Yellow (internes Zigbee) installieren
- Nov. 2026 · @XDECO
Einführung
Dieses Tutorial erklärt, wie man Home Assistant OS durch Gladys Assistant (unter Docker) auf einem Home Assistant Yellow ersetzt, wobei das integrierte Zigbee-Radio auf der Karte beibehalten wird. Das Verfahren wurde einmal an einem einzigen Yellow durchgeführt: Es ist weder offiziell von Gladys noch von Nabu Casa.
Lesen Sie dies, bevor Sie beginnen:
- Die Installation löscht Home Assistant OS und alle Inhalte der SSD. Sichern Sie alles, was Sie behalten möchten.
- Das Zigbee-Radio muss ein für Zigbee2MQTT geeignetes Firmware erhalten (Schritt 1). Führen Sie dies von Home Assistant OS aus, bevor Sie es löschen.
- In unserem Test funktioniert das Wi-Fi nicht (fehlendes Firmware): Verbinden Sie den Yellow per Ethernet.
- Nur Zigbee, Ethernet und der NVMe-SSD wurden überprüft. Die anderen Funktionen der Karte (Wi-Fi, Bluetooth, Uhr, LED, Taste) wurden nicht getestet.
- Die Befehle zur Vorbereitung der SSD werden für macOS angegeben; unter Linux oder Windows ist die Logik dieselbe.
Verwendete Hardware und Software
Hier ist die genaue Konfiguration, auf der das Verfahren getestet wurde.
Hardware
| Element | Details |
|---|---|
| Karte | Home Assistant Yellow |
| Rechenmodul | Raspberry Pi CM4 Lite (ohne eMMC), 8 GB RAM, mit Wi-Fi |
| Speicher | Samsung 970 EVO Plus 500 GB NVMe-SSD, im M.2-Anschluss des Yellow |
| Netzwerk | Ethernet (Wi-Fi funktioniert in dieser Anordnung nicht) |
| Zigbee-Radio | Internes Silicon Labs-Radio des Yellow, an den seriellen Port /dev/ttyAMA1 angeschlossen |
Software
| Element | Details |
|---|---|
| System | Raspberry Pi OS Lite 64-Bit (Debian Trixie), Kernel 6.18.50+rpt-rpi-v8 |
| Container | Docker und Docker Compose |
| Gladys Assistant | Image gladysassistant/gladys:v5 |
| Automatische Updates | Watchtower (nickfedor/watchtower) |
| MQTT-Broker | Mosquitto (eclipse-mosquitto:2) |
| Zigbee | Zigbee2MQTT (koenkk/zigbee2mqtt), Adapter ember |
| Radio-Firmware | yellow_zigbee_ncp_7.4.4.0, installiert mit dem Silicon Labs Flasher-Modul |
| Hardware-Konfigurationsdatei | bcm2711-rpi-cm4-ha-yellow.dtb, extrahiert aus dem Home Assistant OS 18.4-Image für Yellow |
Wenn Ihr Yellow ein CM4 mit eMMC ist, unterscheiden sich die Installationsschritte auf der SSD: Dieses Verfahren deckt dies nicht ab.
Schritt 1: Installieren des geeigneten Zigbee-Firmware auf dem Radio (von Home Assistant OS aus)
Zigbee2MQTT benötigt ein „NCP“-Zigbee-Firmware auf dem Radio des Yellow. Führen Sie diesen Schritt aus, solange Home Assistant OS noch funktioniert: Er basiert auf einem Zusatzmodul (Add-on), das nach dem Löschen nicht mehr existiert.
- In Home Assistant alles stoppen, das das Radio verwendet (ZHA, Zigbee2MQTT, Multiprotocol-Modul), um den seriellen Port freizugeben.
- Installieren Sie das Modul Silicon Labs Flasher aus dem Zusatzmodul-Shop.
- In dessen Konfiguration einstellen: Gerät
/dev/ttyAMA1, Baudrate115200, Hardware-Flow-Control aktiviert. Wählen Sie das Zigbee-Firmware des Yellow (yellow_zigbee_ncp_7.4.4.0). Die Bezeichnungen können je nach Modulversion variieren. - Starten Sie das Modul und lesen Sie seine Protokolle. In unserem Fall hat es das Radio erkannt, dann wurde das Flashen erfolgreich abgeschlossen.
Das Firmware wird nur einmal geschrieben: Es bleibt nach dem Löschen der SSD erhalten.
Schritt 2: Abrufen der Hardware-Konfigurationsdatei des Yellow
Raspberry Pi OS kennt die Yellow-Karte nicht: Es muss die Datei bcm2711-rpi-cm4-ha-yellow.dtb (Device Tree) bereitgestellt werden, die die mit dem Radio verbundenen seriellen Ports beschreibt. Diese wird aus dem offiziellen Home Assistant OS-Image für Yellow entnommen.
- Laden Sie das Image
haos_yellow-<version>.img.xzauf der Seite der Home Assistant Operating System-Versionen herunter (wir haben die 18.4 verwendet), und entpacken Sie es. - Mounten Sie die erste Partition des Images (die Startpartition im FAT-Format) und kopieren Sie die
.dtb-Datei. Bewahren Sie auch die Dateienconfig.txtundcmdline.txtals Referenz auf.
Unter macOS:
xz -d haos_yellow-18.4.img.xz
hdiutil attach -nomount haos_yellow-18.4.img
diskutil list # Identifizieren Sie die Festplatte des Bildes, z. B. disk4
diskutil mount readOnly /dev/disk4s1
mkdir -p ~/yellow-gladys
cp /Volumes/*/bcm2711-rpi-cm4-ha-yellow.dtb ~/yellow-gladys/
cp /Volumes/*/config.txt /Volumes/*/cmdline.txt ~/yellow-gladys/
hdiutil detach /dev/disk4
Kopieren Sie die Datei vor dem Trennen des Bildes. Passen Sie die Festplattennummer (disk4) an Ihren Computer an und überprüfen Sie mit ls /Volumes, ob das richtige Volume gemountet ist: Der Platzhalter * kann mehrere bezeichnen.
Unter Linux: sudo losetup -fP --show haos_yellow-18.4.img, dann mounten Sie die Partition p1 des erhaltenen Geräts und kopieren Sie dieselben Dateien.
Schritt 3: Raspberry Pi OS Lite auf den NVMe-SSD schreiben
Nehmen Sie den SSD aus dem Yellow und schließen Sie ihn mit einem Gehäuse oder einem USB-Adapter für NVMe an Ihren Computer an. Wenn Ihr Yellow bereits von diesem SSD unter Home Assistant OS gestartet wurde, ist die Bootreihenfolge des CM4 bereits für NVMe eingestellt.
- Starten Sie Raspberry Pi Imager.
- Kartenmodell: Raspberry Pi 4 (das CM4 ist ähnlich).
- Betriebssystem: Unter Raspberry Pi OS (other) wählen Sie Raspberry Pi OS Lite (64-bit). Es erscheint nicht in der Hauptliste.
- Speicher: Wählen Sie den SSD aus und stellen Sie sicher, dass es der richtige und kein anderes Laufwerk ist, da es gelöscht wird.
- Anpassung: Hostname
gladys, Benutzerpimit einem Passwort, das Sie sich merken, SSH aktiviert, Zeitzone und Tastaturlayout nach Ihren Wünschen. Deaktivieren Sie Raspberry Pi Connect, wenn der Assistent dies vorschlägt. - Schreiben Sie das Bild und warten Sie, bis die Überprüfung abgeschlossen ist.
Setzen Sie den SSD noch nicht in den Yellow ein: Der nächste Schritt ändert seine Boot-Partition.
Schritt 4: Anpassen der Boot-Partition für den Yellow
Nach dem Schreiben ist die Partition bootfs des SSDs (im FAT-Format) auf Ihrem Computer sichtbar. Drei Änderungen reichen aus. Machen Sie zunächst eine Kopie der Originaldateien.
cd /Volumes/bootfs # Pfad unter Linux oder Windows anpassen
cp config.txt config.txt.orig
cp cmdline.txt cmdline.txt.orig
cp ~/yellow-gladys/bcm2711-rpi-cm4-ha-yellow.dtb .
1. config.txt: Fügen Sie diese Zeilen am Ende der Datei hinzu.
[cm4]
device_tree=bcm2711-rpi-cm4-ha-yellow.dtb
enable_uart=1
arm_64bit=1
gpu_mem=32
2. cmdline.txt: Diese Datei enthält nur eine einzige Zeile. Ersetzen Sie die Standard-Serienkonsole (console=serial0,115200) durch console=ttyAMA2,115200n8 und ändern Sie nichts anderes, insbesondere nicht root=PARTUUID=.... Die Datei muss in einer einzigen Zeile bleiben, ohne Zeilenumbrüche in der Mitte.
3. Die .dtb-Datei ist die oben kopierte: Sie muss sich im Stammverzeichnis von bootfs, neben config.txt, befinden.
Trennen Sie den SSD ordnungsgemäß, setzen Sie ihn in den Yellow ein und schließen Sie das Ethernet-Kabel an. Wenn der Yellow nicht startet, ermöglichen die .orig-Dateien eine Rückkehr zum ursprünglichen Zustand zum Vergleich.
Schritt 5: Erster Start, serielle Ports und Docker
Der erste Start dauert eine bis zwei Minuten. Melden Sie sich anschließend per SSH von Ihrem Computer aus an:
ssh pi@gladys.local
Wenn der Name gladys.local nicht aufgelöst wird, verwenden Sie die IP-Adresse des Yellow, die von Ihrer Internet-Box angezeigt wird.
Überprüfen Sie, ob die Hardware-Konfigurationsdatei korrekt geladen wird
ls /dev | grep -E 'tty(AMA|S|USB|ACM)'
Die Ports ttyAMA0, ttyAMA1 und ttyAMA2 müssen angezeigt werden. ttyAMA1 ist der der Zigbee-Funkgerät. Wenn sie nicht vorhanden sind, wird das .dtb nicht geladen: Lesen Sie Schritt 4 noch einmal.
Docker installieren
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker pi
exit
Melden Sie sich erneut per SSH an, damit die Zugehörigkeit zur Gruppe docker berücksichtigt wird, und testen Sie dann:
docker run --rm hello-world
docker compose version
Schritt 6: Gladys Assistant und Watchtower installieren
Dies ist die übliche Docker-Installation von Gladys, geschrieben als Docker Compose-Datei. Erstellen Sie den Ordner und die Datei:
mkdir -p ~/gladys && cd ~/gladys
nano gladys-compose.yml
Inhalt der Datei gladys-compose.yml:
services:
gladys:
image: gladysassistant/gladys:v5
container_name: gladys
restart: always
privileged: true
network_mode: host
cgroup: host
environment:
NODE_ENV: production
SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
SERVER_PORT: 80
TZ: Europe/Paris
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/gladysassistant:/var/lib/gladysassistant
- /dev:/dev
- /run/udev:/run/udev:ro
- /run/dbus:/run/dbus:ro
watchtower:
image: nickfedor/watchtower
container_name: watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --cleanup --include-restarting
Passen Sie die Zeitzone (TZ) an. Watchtower aktualisiert Gladys automatisch; wir haben das Bild nickfedor/watchtower verwendet, aber jedes andere Watchtower-Bild funktioniert ebenfalls.
Starten Sie alles:
docker compose -f gladys-compose.yml up -d
docker logs --tail 20 gladys
Öffnen Sie anschließend http://gladys.local in einem Browser. Wenn Sie von vorne beginnen, erstellen Sie Ihr Konto. Wenn Sie eine bestehende Instanz migrieren (Schritt 9), erstellen Sie hier kein Konto: Der Import bringt die Konten der alten Instanz mit.
Schritt 7: Mosquitto und Zigbee2MQTT auf dem internen Radio
Der Modus “Installation von Gladys” der Zigbee2MQTT-Integration ist für einen USB-Dongle vorgesehen, den Gladys auf den USB-Ports sucht. Das Radio des Yellow ist ein interner Serial-Port (/dev/ttyAMA1): Wir starten also Mosquitto und Zigbee2MQTT selbst und verbinden Gladys dann mit dieser bestehenden Installation (Schritt 8).
mkdir -p ~/zigbee/mosquitto/config ~/zigbee/mosquitto/data ~/zigbee/z2m-data
cd ~/zigbee
~/zigbee/mosquitto/config/mosquitto.conf
listener 1883
allow_anonymous true
persistence true
persistence_location /mosquitto/data/
Diese Konfiguration akzeptiert Verbindungen ohne Identifikation: Dies sollte nur in einem vertrauenswürdigen lokalen Netzwerk verwendet werden.
~/zigbee/docker-compose.yml
services:
mosquitto:
image: eclipse-mosquitto:2
container_name: mosquitto
restart: always
ports:
- "1883:1883"
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
zigbee2mqtt:
image: koenkk/zigbee2mqtt
container_name: zigbee2mqtt
restart: always
depends_on:
- mosquitto
ports:
- "8080:8080"
volumes:
- ./z2m-data:/app/data
devices:
- /dev/ttyAMA1:/dev/ttyAMA1
environment:
- TZ=Europe/Paris
~/zigbee/z2m-data/configuration.yaml
version: 5
mqtt:
base_topic: zigbee2mqtt
server: mqtt://mosquitto:1883
serial:
port: /dev/ttyAMA1
adapter: ember
baudrate: 115200
rtscts: true
frontend:
enabled: true
port: 8080
advanced:
channel: 20
pan_id: GENERATE
ext_pan_id: GENERATE
network_key: GENERATE
Wichtige Punkte: Der Adapter ist ember, die Baudrate 115200 und die Hardware-Flusssteuerung (rtscts: true) muss aktiviert sein, wie beim Firmware-Flash. Die Werte GENERATE lassen Zigbee2MQTT beim ersten Start eine zufällige Netzwerk-ID und einen zufälligen Netzwerkschlüssel erstellen.
Starten und überprüfen Sie:
docker compose up -d
docker logs --tail 30 zigbee2mqtt
Die Nachricht RESET_WATCHDOG beim Start des Radios ist harmlos. Die Weboberfläche von Zigbee2MQTT ist anschließend unter http://gladys.local:8080 erreichbar.
Netzwerkschlüssel: Die Datei configuration.yaml enthält den generierten Zigbee-Netzwerkschlüssel. Veröffentlichen Sie ihn niemals (Forum, Screenshot, Kopie der Datei): Jeder, der ihn kennt, kann Ihr Zigbee-Netzwerk abhören. Falls er geleakt wurde, generieren Sie ihn neu, bevor Sie ein Gerät hinzufügen.
Schritt 8: Gladys mit Zigbee2MQTT verbinden und Geräte hinzufügen
Verbindung
- In Gladys, öffnen Sie Integrationen, dann Zigbee2MQTT, Registerkarte Konfiguration.
- Zwei Karten werden angeboten. Klicken Sie auf Auswählen in der rechten, “Verbindung zu einer bestehenden Installation”. Wählen Sie nicht “Installation von Gladys”: Gladys würde seine eigenen Container starten, die sich mit Ihren um das Radio und den Port 8080 streiten würden.
- Geben Sie die Adresse des MQTT-Brokers an:
mqtt://localhost:1883(Gladys ist im Host-Netzwerk,localhosterreicht Mosquitto). Andernfalls verwenden Siemqtt://<IP-Adresse des Yellow>:1883. Lassen Sie Benutzername und Passwort mit der obigen Mosquitto-Konfiguration leer. - Wenn die URL der Zigbee2MQTT-Oberfläche gefragt wird:
http://<IP-Adresse des Yellow>:8080. - Speichern Sie und überprüfen Sie, dass die Integration eine Verbindung anzeigt.
Gerät hinzufügen
- Ein bereits mit einem anderen Koordinator verbundenes Gerät muss zuerst zurückgesetzt werden (Werkseinstellung), sonst sucht es nicht nach einem neuen Netzwerk. Entfernen Sie es auch vom alten Netzwerk, falls möglich.
- Aktivieren Sie die Verbindung: Registerkarte Zigbee-Erkennung in Gladys oder Permit join-Button in der Zigbee2MQTT-Oberfläche. Das Fenster dauert etwa vier Minuten.
- Setzen Sie das Gerät in den Verbindungsmodus, ein oder zwei Meter vom Yellow entfernt, ein Gerät nach dem anderen.
- Verbinden Sie zuerst die netzgebundenen Geräte (Steckdosen, Lampen), die das Netzwerk verstärken, dann die batteriebetriebenen.
- Geben Sie jedem Gerät einen klaren Namen. Gladys identifiziert ein Zigbee2MQTT-Gerät an seinem Namen: Beim Migrieren übernehmen Sie die alten Namen, um bereits vorhandene Geräte wiederzufinden.
Um die Verfügbarkeit und den letzten Empfang anzuzeigen, in der Zigbee2MQTT-Oberfläche: Einstellungen, Registerkarte Availability, aktivieren Sie Enabled; Registerkarte Advanced, setzen Sie last_seen auf ISO_8601.
Linky-Zähler (ZLinky_TIC), falls vorhanden: In den spezifischen Geräteeinstellungen muss der Linky-Modus dem des Zählers entsprechen (historisch oder standardmäßig, oder auto). In unserem Fall ist der Zähler im historischen Modus mit einem Tempo-Tarif, und linky_mode ist auf historique eingestellt. Der Tarif ist auf „Historique - BBR“ eingestellt. Der historische Modus ist mit Tempo kompatibel.
Schritt 9 (optional): Eine bestehende Gladys-Instanz mit ihrem Verlauf migrieren
Dieser Schritt übernimmt die Daten eines anderswo installierten Gladys (hier auf einem Synology-NAS). Der Datenordner enthält die SQLite-Datenbank, die DuckDB-Verlaufsdatenbank und die Integrationsdateien.
Behalten Sie die alte Instanz während und nach der Migration gestoppt, damit nicht zwei Gladys dieselben Geräte steuern.
Auf dem alten Server
docker inspect gladys --format '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{"\n"}}{{end}}'
docker stop gladys
Der erste Befehl zeigt den Host-Datenordner an (der auf /var/lib/gladysassistant gemountet ist). Machen Sie ein Backup dieses Ordners, dann archivieren Sie ihn:
tar czf /tmp/gladys-data.tgz -C <übergeordneter Ordner> gladysassistant
Auf einem Synology erfordert docker sudo.
Auf dem Yellow
Rufen Sie das Archiv ab (die Option -O von scp ist erforderlich, wenn SFTP auf dem NAS deaktiviert ist):
scp -O <Benutzer>@<NAS-Adresse>:/tmp/gladys-data.tgz /tmp/
Dann ersetzen Sie die leeren Daten der neuen Installation:
cd ~/gladys
docker compose -f gladys-compose.yml stop gladys
sudo mv /var/lib/gladysassistant /var/lib/gladysassistant.leer
sudo mkdir /var/lib/gladysassistant
sudo tar xzf /tmp/gladys-data.tgz -C /var/lib/gladysassistant --strip-components=1
sudo chmod -R u+rwX /var/lib/gladysassistant
docker compose -f gladys-compose.yml start gladys
Melden Sie sich anschließend mit dem Konto der alten Instanz an.
Was nach dem Import noch zu tun ist
- Die Erweiterungen (externe Integrationen) laufen in Containern
gladys-ext-*, die nicht von selbst neu erstellt werden: In unserem Fall mussten wir das Update aller installierten Erweiterungen erzwingen, eine nach der anderen: Integrationen, die betroffene Erweiterung, Registerkarte Überwachung, Button Update erzwingen. Gladys erstellt dann ihren Container neu und sie funktioniert wieder. Überprüfen Sie dies mitdocker ps. - Die Zigbee-Geräte müssen mit dem neuen Koordinator neu verbunden werden (Schritt 8), mit ihren alten Namen. Gladys hat die Umbenennungen auf bestehende Geräte angewendet; überprüfen Sie an einem Gerät, ob seine Historie erhalten bleibt, bevor Sie alle neu verbinden.
- Die Konfiguration der importierten Zigbee2MQTT-Integration zeigt auf die alte Installation: Führen Sie Schritt 8 nach dem Import erneut aus.
- Stoppen Sie die Erweiterung-Container des alten Servers und bewahren Sie sein Backup mehrere Tage auf.
Bekannte Grenzen, Fehlerbehebung und Backup
Festgestellte Grenzen
- Wi-Fi: Es funktioniert nicht in unserer Konfiguration, da der Firmware der Wi-Fi-Chip für diesen Device Tree nicht bereitgestellt wird. Verwenden Sie Ethernet.
- Weitere Funktionen der Karte (Bluetooth, Echtzeituhr, LED, Taste): nicht getestet.
- Prozedur wurde nur einmal getestet, auf einem CM4 Lite 8 GB mit NVMe-SSD.
Fehlerbehebung
| Symptom | Spur |
|---|---|
| Der Yellow reagiert nicht nach dem Start | Überprüfen Sie das Ethernet-Kabel und die IP-Adresse in Ihrer Box. Überprüfen Sie den Inhalt von config.txt und cmdline.txt (nur eine Zeile). |
Kein ttyAMA1 |
Die .dtb wird nicht geladen: Block [cm4] von config.txt und Vorhandensein der Datei im Root-Verzeichnis von bootfs. |
| Zigbee2MQTT startet nicht | Lesen Sie docker logs zigbee2mqtt. Überprüfen Sie adapter: ember, baudrate: 115200, rtscts: true und ob der NCP-Firmware tatsächlich geflasht wurde. |
| Ein Gerät verbindet sich nicht | Setzen Sie es zurück, halten Sie “Permit join” aktiv, bringen Sie es näher an den Yellow, folgen Sie docker logs -f zigbee2mqtt. |
| Eine Gladys-Erweiterung ist nicht verbunden | docker ps, um zu sehen, ob ihr Container läuft, dann docker logs <Container-Name>. Testen Sie den Zugriff auf das Gerät vom Container aus (docker exec <Container> ping <Adresse>). |
Ein Gerät reagiert auf ping, aber nicht in der Anwendung |
Starten Sie es vollständig neu (30 Sekunden lang vom Strom getrennt): Das hat unser AirSend-Gehäuse wiederhergestellt. |
Kontrollen nach der Installation
docker inspect -f '{{.Name}} {{.HostConfig.RestartPolicy.Name}}' gladys zigbee2mqtt mosquitto watchtower
sudo reboot
Die vier Container müssen always anzeigen, und alle Container müssen nach dem Neustart (docker ps) “Up” sein.
Backup: Kopieren Sie regelmäßig /var/lib/gladysassistant und ~/zigbee/z2m-data auf ein anderes Gerät. Letzteres enthält den Zigbee-Netzwerkschlüssel und die Geräteliste: Ohne ihn müssten alle Geräte neu verbunden werden.
sudo tar czf ~/gladys-sauvegarde-$(date +%F).tgz /var/lib/gladysassistant zigbee/z2m-data
sudo chown $USER:$USER ~/gladys-sauvegarde-*.tgz && chmod 600 ~/gladys-sauvegarde-*.tgz
Führen Sie diesen Befehl aus Ihrem persönlichen Ordner aus und bewahren Sie das Archiv an einem sicheren Ort auf, da es den Netzwerkschlüssel enthält.
Yellow für Gladys OS? Quellen
Dieses Verfahren zeigt, dass ein Yellow Gladys auf Raspberry Pi OS mit internem Zigbee ausführen kann. Ein fertiges Flash-Image wäre möglich, indem die Datei bcm2711-rpi-cm4-ha-yellow.dtb, die drei Änderungen von config.txt und cmdline.txt, Docker, Gladys, Mosquitto und Zigbee2MQTT integriert werden. Für ein sauberes Image müssen noch überprüft werden: WLAN, Bluetooth, die Echtzeituhr und die Firmwareverwaltung des Radios. Die Rückmeldungen anderer Yellow-Nutzer, insbesondere mit einem CM4 und eMMC, wären wertvoll.
Quellen: