„Protocol error" im Mosquitto‐Log nach Zendure‐Firmware‐Update (KW26 27 in 2026) - Kieft-C/Zendure-BKW-PV GitHub Wiki
Quelle/Kontext: GitHub-Issue #1438 im Zendure-HA-Repository, Lösung sinngemäß aus einem Kommentar dort übernommen und ins Deutsche übertragen.
Nach einem Firmware-Update deines Zendure-Geräts (im gemeldeten Fall: Hyper 2000, AC-Firmware V2.1.17 / Master-Firmware 2.1.47) tauchen im Mosquitto-Log plötzlich Einträge wie diese auf:
New connection from <Geräte-IP>:<Port> on port 8883.
OpenSSL Error while trying to get the error[0]: error:0A0000C1:SSL routines::no shared cipher
Client <Geräte-IP> [<Geräte-IP>:<Port>] disconnected: Protocol error.
Gleichzeitig liefern alle Entitäten des betroffenen Geräts in Home Assistant keine Daten mehr.
Das ist kein Problem mit Client-Zertifikaten, sondern ein reines Cipher-Negotiation-Problem (die Verschlüsselungsverfahren von Gerät und Broker passen nicht zusammen) – die TLS-Handshake-Verhandlung scheitert.
Hintergrund: Neuere Zendure-Firmware nutzt für die lokale MQTT-Verbindung jetzt verpflichtend eine TLS-verschlüsselte Verbindung auf Port 8883 statt der bisherigen unverschlüsselten Verbindung auf Port 1883. Diese Änderung geht auf die EU-Vorgabe EN 18031 zurück (Cybersicherheits-Anforderungen für Funkanlagen), auf die auch Zendures eigene ZenSDK-Dokumentation verweist. Ein Standard-Mosquitto-Broker (z. B. aus dem Home-Assistant-AddOn) ist von Haus aus aber nicht für einen passenden TLS-Listener auf Port 8883 konfiguriert – der Handshake scheitert, die Verbindung wird als „Protocol error" abgebrochen.
Wichtig: Das Gerät versucht die Verbindung fortlaufend automatisch erneut, bis der Broker sie akzeptiert. Es besteht also kein Zeitdruck oder Risiko eines dauerhaften Ausfalls, solange die Ursache behoben wird.
Da sich das Gerät per IP-Adresse verbindet und das Zertifikat nicht validiert, reicht ein einfaches, selbstsigniertes RSA-Zertifikat für den Broker vollkommen aus.
Öffne eine Shell auf deinem Home-Assistant-Host (z. B. über das AddOn „Advanced SSH & Web Terminal") und führe aus:
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout /ssl/mqtt_rsa.key -out /ssl/mqtt_rsa.crt \
-days 3650 -subj "/CN=homeassistant"Gehe zu Einstellungen → Add-ons → Mosquitto broker → Konfiguration und trage dort ein (die Pfade sind relativ zu /ssl/):
certfile: mqtt_rsa.crt
keyfile: mqtt_rsa.keyNach dem Neustart sollte das Gerät sich beim nächsten automatischen Verbindungsversuch erfolgreich verbinden – kein erneutes Pairing nötig.
Diese Änderung betrifft ausschließlich den TLS-Listener auf Port 8883, den das Zendure-Gerät für die verschlüsselte Verbindung nutzt. Home Assistants eigene MQTT-Integration sowie die Zendure-HA-Integration selbst verbinden sich weiterhin unverschlüsselt auf Port 1883 mit dem Broker und sind von diesem Problem nicht betroffen.
Mit folgendem Befehl kannst du direkt prüfen, ob der Broker jetzt eine vom Gerät akzeptierte Cipher-Suite anbietet:
openssl s_client -connect <Broker-IP>:8883 -tls1_2 \
-cipher 'AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA' </dev/nullEin erfolgreicher Handshake bedeutet: Das Gerät verbindet sich von selbst wieder, sobald es seinen nächsten automatischen Versuch startet.
ℹ️ Ein Hinweis wie „self-signed certificate" in der Ausgabe ist normal und unbedenklich – das Zertifikat wird vom Gerät ohnehin nicht validiert.
Manche OpenSSL-Builds schließen diese (älteren) Cipher-Suiten standardmäßig aus ihren Default-Einstellungen aus. In diesem Fall musst du sie explizit aktivieren:
- Erstelle die Datei
/share/mosquitto/zendure.confmit folgendem Inhalt:ciphers AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA@SECLEVEL=0 - Aktiviere im Mosquitto-AddOn die Konfigurationsoption:
customize: active: true folder: mosquitto
- Mosquitto-AddOn neu starten.
| Was | Wert |
|---|---|
| Betroffen | Geräte mit Bluetooth-Umschaltung/lokalem MQTT nach Firmware-Update (z. B. Hyper 2000) |
| Ursache | EN-18031-bedingte TLS-Pflicht auf Port 8883, Broker-Zertifikat/Cipher passt nicht |
| Fix | Selbstsigniertes RSA-2048-Zertifikat für Mosquitto hinterlegen |
| Betrifft HA-MQTT-Integration selbst? | Nein – die läuft weiterhin unverschlüsselt auf Port 1883 |
| Neues Pairing nötig? | Nein, Gerät verbindet sich automatisch neu |