Ich war ebenfalls auf der Suche nach einer Lösung. Ich konnte die Ursache des Problems etwas eingrenzen. Zunächst scheint die Kommunikation mittels TLS zum Adapter bei mir zu funktionieren.
Das hier ist in etwa die Kette an nodejs modulen, die involviert sind
iobroker.mqtt -(erzeugt objekt)-> tls -(wird übergeben an)-> mqtt-connection -(nutzt für decodierung...)-> mqtt-packet
Das modul mqtt-connection selber ist derived vom Paket duplexify und nutzt intern das node module mqtt-packet für die eigentliche mqtt Verarbeitung.
Ab dem Modul "mqtt-connection" passiert allerdings nichts weiter mit der (erfolgreich aufgebauten) tls verbindung. Es werden keine Daten weiter gereicht. Für mich sieht es so aus, als wenn duplexify mit dem tls objekt nicht weiter Arbeiten kann.
Nach knapp einen ganzen Tag des erfolglosen Debuggens habe ich die native Unterstützung von TLS über iobroker.mqtt aufgegeben.
Stattdessen nutzt ich nun nginx als TLS proxy (basierend auf diesem Tutorial)
Hier ist meine nginx config
stream {
log_format mqtt '$remote_addr [$time_local] $protocol $status $bytes_received ' '$bytes_sent $upstream_addr';
server {
listen 8883 ssl; # MQTT secure port
ssl_certificate /path/to/certificates/self.crt;
ssl_certificate_key /path/to/certificates/self.key;
ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_session_cache shared:SSL:128m; # 128MB ~= 500k sessions
ssl_session_tickets on;
ssl_session_timeout 8h;
proxy_pass <ip zu iobroker, wo MQTT drauf läuft>:1883;
proxy_connect_timeout 1s;
access_log /var/log/nginx/mqtt_access.log mqtt;
error_log /var/log/nginx/mqtt_error.log info; # nginScript debug logging
}
}
Jetzt verbindet sich mein Tasmota Endgerät über MQTT+TLS verschlüsselt zu meinem iobroker.