Hallo,
Wie versprochen, hier ist ein Tutorial, um einen SMLIGHT-Schlüssel über das Netzwerk und nicht über USB mit Gladys zu verbinden, denn sonst verliert man den ganzen Sinn dieses Schlüssels, wenn man ihn per USB anschließt ![]()
Da Gladys nur den USB-Modus unterstützt @pierre-gilles, korrigiere mich, wenn ich mich irre
, bin ich auf eine Installation mit einem externen MQTT und Z2M zu Gladys gegangen.
Das könnte vielleicht Gegenstand eines Funktionswunsches sein, was denkst du @pierre-gilles ?
Hier für z2m in https verwende ich den Port 443, aber um Konflikte zu vermeiden, wenn ihr alles auf derselben Maschine installiert, müsst ihr den Port auf 4343 ändern ![]()
Ich hatte damals schon ein vollständiges Tutorial zu HAOS erstellt, als ich es verwendet habe, das ihr hier finden könnt:
Installation Mosquitto (Mqtt)
Installiert eine VM unter Ubuntu 24.04, aktualisiert sie vollständig und führt die folgenden Befehle aus:
Um Docker zu installieren:
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
systemctl enable --now docker
Fügt einen Benutzer docker_mosquitto hinzu, z. B.:
adduser docker_mosquitto
Holt seine ID ab: (Hier 1002)
cat /etc/passwd [ grep docker_mosquitto

Erstellt den Ordner mosquitto in /opt
mkdir /opt/mosquitto
Erstellt die Datei docker-compose.yml mit dem folgenden Inhalt: (Ersetzt 1002 durch die ID, die ihr gerade abgeholt habt)
services:
mosquitto:
image: eclipse-mosquitto:2.0.22
container_name: mosquitto
restart: unless-stopped
user: "1002:1002"
ports:
- "1883:1883" # MQTT
- "8883:8883" # MQTTS (secure)
- "9001:9001" # WebSockets
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
- /etc/localtime:/etc/localtime:ro
- /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/chain.pem:/etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/chain.pem:ro
- /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/privkey.pem:/etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/privkey.pem:ro
- /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/cert.pem:/etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/cert.pem:ro
Erstellt einen Ordner mosquitto und die Unterordner und wendet die Berechtigungen an: (Dieser enthält die Konfiguration, die Daten und die Protokolle)
mkdir /opt/mosquitto/mosquitto
mkdir /opt/mosquitto/mosquitto/data
mkdir /opt/mosquitto/mosquitto/config
mkdir /opt/mosquitto/mosquitto/log
touch mkdir /opt/mosquitto/mosquitto/log/mosquitto.log
chown -R 1002:1002 /opt/mosquitto/mosquitto
Erstellt die Konfigurationsdatei in /opt/mosquitto/mosquitto/config/mosquitto.conf
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883 localhost
allow_anonymous false
#password_file /mosquitto/config/passwd
tls_version tlsv1.3
listener 8883
certfile /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/cert.pem
cafile /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/chain.pem
keyfile /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/privkey.pem
listener 9001
protocol websockets
certfile /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/cert.pem
cafile /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/chain.pem
keyfile /etc/letsencrypt/live/mqtt.xxx.local.srv-home.fr/privkey.pem
Aktiviert SSL: (Angepasst je nach Plugin, das ihr verwendet, um das Zertifikat eures Domänennamens zu erhalten) Hier handelt es sich um ein Beispiel mit Infomaniak
apt install certbot
apt install python3-pip
pip install certbot-dns-infomaniak
export INFOMANIAK_API_TOKEN=xxx
certbot certonly \
--authenticator dns-infomaniak \
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos \
--rsa-key-size 4096 \
-d 'mqtt.xxx.local.srv-home.fr'
Standardmäßig installiert certbot einen Dienst, der die Zertifikate automatisch periodisch erneuert. Dazu muss der Befehl den API-Schlüssel kennen, sonst scheitert er stillschweigend.
Um die automatische Erneuerung eurer generischen Zertifikate zu aktivieren, müsst ihr /lib/systemd/system/certbot.service ändern. Fügt dort in Service die folgende Zeile hinzu, wobei ihr „ durchErsetzen Sie dies durch die IP Ihres Schlüssels und vergessen Sie nicht, auth_token und password zu ändern
port: tcp://192.168.xx.xx:7638
SSL aktivieren: (Angepasst an das Plugin, das Sie zur Abfrage des Zertifikats Ihrer Domain verwenden) Hier ein Beispiel mit Infomaniak
apt install certbot
apt install python3-pip
pip install certbot-dns-infomaniak
export INFOMANIAK_API_TOKEN=xxx
certbot certonly \
--authenticator dns-infomaniak \
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos \
--rsa-key-size 4096 \
-d 'z2m.xxx.local.srv-home.fr'
Standardmäßig installiert certbot einen Dienst, der die Zertifikate automatisch periodisch erneuert. Dazu muss der Befehl den API-Schlüssel kennen, andernfalls wird er stillschweigend fehlschlagen.
Um das automatische Erneuern Ihrer generischen Zertifikate zu aktivieren, müssen Sie /lib/systemd/system/certbot.service ändern. Fügen Sie in Service die folgende Zeile hinzu, wobei Sie <YOUR_API_TOKEN> durch Ihren Token ersetzen:
Environment="INFOMANIAK_API_TOKEN=<YOUR_API_TOKEN>"
nano /etc/letsencrypt/renewal/z2m.xxx.local.srv-home.fr
Hinzufügen (Wenn Sie einen Tipp haben, wie man ein Reload integrieren kann, bin ich offen dafür ![]()
renew_hook = docker restart zigbee2mqtt
chmod -R 755 /etc/letsencrypt/live
chmod -R 755 /etc/letsencrypt/archive
In der Datei /etc/systemd/system/zigbee2mqtt.service musste ich User=pi durch User=root ersetzen. Ich habe noch keine andere Möglichkeit gefunden, dies zu tun, aber wenn Sie eine Idee haben, wie man es mit einem Benutzer mit weniger Rechten laufen lassen kann, bin ich ebenfalls offen dafür ![]()
Container starten
cd /opt/z2m
docker compose up -d
Zigbee2mqtt sollte nun unter der Adresse https://z2m.xxx.local.srv-home.fr verfügbar sein, wobei das Passwort, das Sie in auth_token angegeben haben, korrekt angegeben werden muss
SSL/TLS nicht verwenden
Sie können den SSL/TLS-Teil weglassen und Port 8080 für Z2M und Port 1883 mit Mqtt verwenden, indem Sie die Konfiguration ändern
Z2M-Konfiguration:
docker-compose.yml:
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt:2.8.0
restart: unless-stopped
volumes:
- ./data:/app/data
- /run/udev:/run/udev:ro
- /etc/localtime:/etc/localtime:ro
# devices:
# - /dev/serial/by-id/usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0:/dev/serial/by-id/usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0
ports:
- "8080:8080" # Externer Port 8080 → interner Port 8080
environment:
- TZ=Europe/Paris
networks:
- z2m_net
networks:
z2m_net:
driver: bridge
configuration.yaml:
homeassistant:
enabled: false
mqtt:
base_topic: zigbee2mqtt
server: mqtt://mqtt.xxx.local.srv-home.fr:1883
user: mqttuser
password: achanger
keepalive: 60
reject_unauthorized: true
version: 4
include_device_information: true
serial:
port: tcp://192.168.xx.xx:7638
baudrate: 460800
adapter: zstack
disable_led: false
advanced:
pan_id: GENERATE
network_key: GENERATE
channel: 25
homeassistant_legacy_entity_attributes: false
legacy_api: false
legacy_availability_payload: false
log_level: info
log_syslog:
app_name: Zigbee2MQTT
eol: /n
host: localhost
localhost: localhost
path: /dev/log
pid: process.pid
port: 514
protocol: udp4
type: '5424'
last_seen: ISO_8601
frontend:
enabled: true
package: zigbee2mqtt-windfront
port: 8080
host: 0.0.0.0
url: http://192.168.xx.xx
# ssl_cert: /etc/letsencrypt/live/z2m.xxx.local.srv-home.fr/fullchain.pem
# ssl_key: /etc/letsencrypt/live/z2m.xxx.local.srv-home.fr/privkey.pem
auth_token: achanger
MQTT-Konfiguration:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous false
password_file /mosquitto/config/passwd
Anschließend Gladys so konfigurieren, dass sie den externen MQTT-Broker verwendet:
Und alles sollte in Ordnung sein:
Der Tutorial ist vielleicht nicht perfekt, aber er versucht, alle möglichen Fälle abzudecken, und es ist möglich, dass ich etwas vergessen habe. Wenn Sie also Anmerkungen oder Fragen haben, zögern Sie nicht ![]()

