b3nn0 / hassio-addon-ism7mqtt

HomeAssistant Addon for running ism7mqtt to fetch data from Wolf heaters
Apache License 2.0
22 stars 3 forks source link

MQTT - "Client <unknown> closed its connection." #34

Closed BaZQ closed 11 months ago

BaZQ commented 11 months ago

Guten Tag,

ich habe Home Assistant auf einem Raspberry Pi 4 installiert. Auch die ersten Integrationen wie LG Thinq etc. hinzugefügt. Die Integration MQTT habe ich aktiviert und meinen externen MQTT Server (Symcon) eingerichtet. IP: 192.168.1.123 Port: 8884 Die Configuration.yaml um folgende Werte erweitert mqtt_statestream: base_topic: homeassistant publish_attributes: true publish_timestamps: true

Die Daten kommen auch sauber in meiner Symcon-Zentrale an.

Nun habe ich das Addon "ism7mqtt" aktiviert, die Daten werden auch vom Wolf ISM7 (sichtbar im Log) abgerufen + Mosquitto MQTT installiert, aber die Daten werden nicht an Symcon weitergeleitet. Im Log von Mosquitto ist folgendes zu sehen

2023-11-01 11:20:37: New connection from 172.30.32.2:52162 on port 1883. 2023-11-01 11:20:37: Client closed its connection.

Gibt es eine Möglichkeit, die Daten an den externen MQTT Broker weiterzuleiten?

Durch meine ganzen Automatisierungen ist ein Wechsel von Symcon zu HA nicht schnell bzw. einfach umzusetzen, daher möchte ich beide Systeme zunächst parallel laufen lassen.

b3nn0 commented 11 months ago

So richtig verstehe ich dein Setup noch nicht. Dieses Add-On nutzt für die MQTT Zugangsdaten die, die in Home Assistant in der MQTT Integration hinterlegt wurden. Verstehe ich das richtig, dass du zwei MQTT Server am laufen hast? Ein mal ein in Symcon integrierter, ein mal Mosquitto? Das sollte eigentlich nicht nötig sein? Warum nicht einfach alles über den Symcon-MQTT Server laufen lassen?

Achtung, hier ist wichtig zu unterscheiden: Mosquitto Addon = MQTT Broker, der von HA gemanaged wird MQTT Integration in HA = MQTT Client, der sich mit einem beliebigen Broker verbindet - meistens mit dem Mosquitto Add-on, kann aber natürlich auch extern sein.

Dieses Add-on benutzt die Zugangsdaten die von der MQTT Integration zur Verfügung gestellt werden.

BaZQ commented 11 months ago

Alles über den Symcon-MQTT Server laufen zu lassen wäre aktuell mein Wunsch. Das Mosquitto Addon habe ich deinstalliert.

MQTT Integration in HA = MQTT Client - dort habe ich den Symcon Server hinterlegt, die Daten aus anderen Integrationen werden auch sauber übertragen.

Screenshot 2023-11-01 115449

Nur die Daten vom ism7mqtt nicht, wenn ich das ism7mqtt Addon nun starte, erhalte ich folgendes Rückmeldung:

s6-rc: info: service s6rc-oneshot-runner: starting s6-rc: info: service s6rc-oneshot-runner successfully started s6-rc: info: service fix-attrs: starting s6-rc: info: service fix-attrs successfully started s6-rc: info: service legacy-cont-init: starting s6-rc: info: service legacy-cont-init successfully started s6-rc: info: service legacy-services: starting s6-rc: info: service legacy-services successfully started [12:00:17] ERROR: Got unexpected response from the API: Service not enabled Setting up ism7mqtt WolfCWL 192.168.1.239 Starting ism7mqtt --hass-id=WolfCWL --interval=60 --ipAddress=192.168.1.239 -t /config/ism7-parameters-WolfCWL.json -d -m, --mqttServer=VALUE MQTT Server -i, --ipAddress=VALUE Wolf Hostname or IP address -p, --password=VALUE Wolf password -t, --parameter=VALUE path to parameter.json - defaults to parameter.json --mqttuser=VALUE MQTT username --mqttpass=VALUE MQTT password -s, --separate send values to separate mqtt topics - also disables json payload --retain retain mqtt messages --interval=VALUE push interval in seconds (defaults to 60) --hass-id=VALUE HomeAssistant auto-discovery device id/entity prefix (implies --separate and --retain) -d, --debug dump raw xml messages -h, --help show help

b3nn0 commented 11 months ago

Hmm ok, dann stimmt meine Info wohl nicht, und die Zugangsdaten werden in der Tat vom MQTT Broker Add-on bereit gestellt.. das ist leider nicht wirklich dokumentiert in HA: https://developers.home-assistant.io/docs/add-ons/communication/#services-api

Dann ist das Problem ein anderes: Das Add-on publisht zwar brav in den Mosquitto rein, allerdings ruft HA das nie ab, da dessen MQTT Client ja auf dein Symcon gerichtet ist.

Du könntest ISM7MQTT natürlich einfach selbst irgendwo laufen lassen, statt des HA Add-ons, aber je nach Setup ist das natürlich etwas unbequem.

Ich habe mal geguckt wie andere Add-ons die MQTT verwenden das lösen. Und tatsächlich, z.B. zigbee2mqtt bietet die Möglichkeit optional selbst einen MQTT Server zu spezifizieren, und nur wenn dieser nicht konfiguriert wird, wird versucht den vom Mosquitto-Addon übergebenen zu verwenden. Das wäre wohl die richtige Lösung.. ich gucke mal ob ich das zeitnah implementieren kann.

BaZQ commented 11 months ago

"Ich habe mal geguckt wie andere Add-ons die MQTT verwenden das lösen. Und tatsächlich, z.B. zigbee2mqtt bietet die Möglichkeit optional selbst einen MQTT Server zu spezifizieren, und nur wenn dieser nicht konfiguriert wird, wird versucht den vom Mosquitto-Addon übergebenen zu verwenden. Das wäre wohl die richtige Lösung.. ich gucke mal ob ich das zeitnah implementieren kann." Das klingt auf jeden Fall viel versprechend und wäre natürlich die Traumlösung, wenn ich unterstützen kann, dann lass es mich gerne wissen! :) In anderen Foren (Wolf, Heizungsbauer etc.) ist diese Fehlerstellung bereits öfters aufgetaucht, da einige HA als Universalgateway verwenden.

b3nn0 commented 11 months ago

Habe eben Version v0.0.14-3 gepusht, welche erlaubt einen externen MQTT Broker zu konfigurieren. Dazu den "Nicht verwendete optionale Konfigurationsoptionen anzeigen" switch aktivieren.

BaZQ commented 11 months ago

Wow, das ging fix - vielen Dank!!!! Ich bekomme leider noch eine Fehlermeldung:

Kannst du noch Feld für den MQTT Port einbauen, ich vermute das behebt den Fehler

s6-rc: info: service s6rc-oneshot-runner: starting s6-rc: info: service s6rc-oneshot-runner successfully started s6-rc: info: service fix-attrs: starting s6-rc: info: service fix-attrs successfully started s6-rc: info: service legacy-cont-init: starting s6-rc: info: service legacy-cont-init successfully started s6-rc: info: service legacy-services: starting s6-rc: info: service legacy-services successfully started Using config from add-on configuration: 192.168.1.36/Hdhomeass Setting up ism7mqtt WolfCWL 192.168.1.239 Starting ism7mqtt --hass-id=WolfCWL --interval=60 --ipAddress=192.168.1.239 -t /config/ism7-parameters-WolfCWL.json MQTTnet.Adapter.MqttConnectingFailedException: Connecting with MQTT server failed (NotAuthorized). at MQTTnet.Client.MqttClient.AuthenticateAsync(IMqttChannelAdapter channelAdapter, MqttApplicationMessage willApplicationMessage, CancellationToken cancellationToken) at MQTTnet.Client.MqttClient.ConnectAsync(IMqttClientOptions options, CancellationToken cancellationToken) at MQTTnet.Client.MqttClient.ConnectAsync(IMqttClientOptions options, CancellationToken cancellationToken) at ism7mqtt.Program.Main(String[] args) in /app/ism7mqtt/Program.cs:line 116 mqtt disconnected - reconnecting in 5 seconds Unhandled exception. MQTTnet.Adapter.MqttConnectingFailedException: Connecting with MQTT server failed (NotAuthorized). at MQTTnet.Client.MqttClient.AuthenticateAsync(IMqttChannelAdapter channelAdapter, MqttApplicationMessage willApplicationMessage, CancellationToken cancellationToken) at MQTTnet.Client.MqttClient.ConnectAsync(IMqttClientOptions options, CancellationToken cancellationToken) at MQTTnet.Client.MqttClient.ConnectAsync(IMqttClientOptions options, CancellationToken cancellationToken) at ism7mqtt.Program.Main(String[] args) in /app/ism7mqtt/Program.cs:line 116 at ism7mqtt.Program.

(String[] args) /run.sh: line 23: 122 Aborted (core dumped) /app/ism7mqtt $ISM_ARGS ism7mqtt unexpectedly quit with return code 134

b3nn0 commented 11 months ago

Leider nein. Ism7MQTT hat keinen Parameter für den Port. Müsstest du @zivillian fragen ob er so eine hinzufügt. Oder auf den MQTT Standardport 1883 umsteigen.

zivillian commented 11 months ago

@b3nn0 ich habe den Parameter ergänzt und bei der Gelegenheit auch mal eine neue Version veröffentlicht.

b3nn0 commented 11 months ago

Danke! habe v0.0.15 des add-ons gepusht mit der neuen Version und der Möglichkeit den Port zu ändern.

BaZQ commented 11 months ago

Perfekt, vielen Dank euch Beiden!!! Ich habe das Addon aktualisiert, die ersten Daten sind auch bereits im Symcon Server angekommen - vielen Dank! Ich schaue mir die Daten morgen mal genauer an, aber es sieht auf den ersten Blick vielversprechend aus.