IPS MQTT-Client zu MQTT-Server - nur genau 1 Verbindung möglich

Hallo,

ich versuche innerhalb einer IPS-Installation mehrere Instanzen von MQTT-Client-Modulen gegen einen MQTT-Server laufen zu lassen. Dies läuft immer in einen Fehler, das Message-Log sagt:


05.01.2021, 18:27:28 | Client Socket        | Fehler beim Lesen: End of file

Es sind dann Client Socket 1 und Client Socket 2 im Wechsel von ca. 60 Sekunden aktiv, aber nie gleichzeitig.

Konstellation:


MQTT Client Device 1 <-> MQTT Client 1 <-> Client Socket 1 (192.168.12.10:1883)
MQTT Client Device 2 <-> MQTT Client 2 <-> Client Socket 2 (192.168.12.10:1883)

Der Grund dieses Setups ist, dass bei genau einem Client-Modul die daran hängenden Client-Devices nichts vom Publish eines anderen Client-Devices am selben Client-Modul mitbekommen. Dies ist ein gewünschtes Verhalten, damit der Sender seine gesendeten Daten nicht nochmal selber bekommt. Weiterhin kann man mit genau einem Client-Modul die Vorzüge des Retain nicht nutzen.

Es sieht für mich so aus, als ob beide MQTT-Clients die gleiche Client-ID verwenden. Mosquitto schreibt folgendes ins Log:


1609869737: New connection from 192.168.13.82 on port 1883.
1609869737: New client connected from 192.168.13.82 as 5bde8c18ee97dde39d59 (p2, c1, k60, u'mqtt').
1609869737: New connection from 192.168.13.82 on port 1883.
1609869737: Client 5bde8c18ee97dde39d59 already connected, closing old connection.
1609869737: New client connected from 192.168.13.82 as 5bde8c18ee97dde39d59 (p2, c1, k60, u'mqtt').
1609869797: New connection from 192.168.13.82 on port 1883.
1609869797: Client 5bde8c18ee97dde39d59 already connected, closing old connection.
1609869797: New client connected from 192.168.13.82 as 5bde8c18ee97dde39d59 (p2, c1, k60, u'mqtt').

Ich denke, eine konfigurierbare Client-ID wie beim MQTT-Client von Kai Schnittcher würde das Problem lösen.

Ciao
Andreas

…nur zur Klarstellung: Ich denke, das ist ein Bug, da sich ansonsten alle Modul-Instanzen mehrfach mit den gleichen Servern verbinden können.

So wie es aussieht wird von IPS eine möglichst eindeutige ID erzeugt, diese findet aber in sämtlichen MQTT Client Instanzen Anwendung. Automatisiert könnte man das auch lösen, z.B. indem die Instanz-ID mit der generierten ID konkateniert wird.

Hallo Andreas,
ein BUG würde ich nicht sagen und den Client mehrfach für verschiedenen MQTT Broker zu installieren geht auch.

Aber ich stimme dir schon zu, dass wie im Kai Client eine freie Namensvergabe sinnvoll wäre.

Eigentlich benötigt man nur einen Client pro Broker, aber ich traue dem Client noch nicht wirklich, es sieht derzeit so aus, als würden Meldungen verschluckt, wenn man als Thema ‚#‘ wählt.

Ich sehe im MQTT Explorer Meldungen eines Gerätes, die im Debug vom Client nicht zusehen sind. Beim nächsten Durchlauf kommen diese dann durch.

Diese Problem gibt es beim MQTT Server schon, dass bei Shellies, vor allem 3M, eine Anlage eines weiteren internen MQTT-Servers empfohlen wird, da die Sendemenge anscheinend zu hoch ist.

Ähnlichen verdacht habe ich mittlerweile beim internen Client. direkte Funktionsstörungen hatte ich allerdings noch keine. Für das Problem spricht auch das sporadisch auftreten von neuen Geräten(Themen) im MQTT Clienet Konfigurator.
Auch dies habe ich schon mit dem MQTT Explorer geprüft, die dort plötzlich als neu angezeigten Themen, kommen regelmäßig, daher gehe ich von einem „verschlucken“ in einer der MQTT Client Instanzen aus.
Hier würde wahrscheinlich nur eine entsprechende QOS Einstellung helfen, das garantiert wird, dass die Meldung auch ankommt.

Werde es weiter beobachten.

Gruß Achim

Zur 5.6 gibt es ein Feld, in dem man die ClientID setzen kann :wink:

paresy

Hallo Paresy,
Perfekt. Das andere werde ich mal in Ruhe weiter beobachten und verifizieren.
Gruß Achim

Hallo Paresy,

ab wann kommt ca. die 5.6, oder könnt ihr mir einen „Weg“ beschreiben wie ich eine eigene ClientID setzen kann. Ich muss eine Verbindung zum RabbitMQ herstellen und bekomme ab zwei Raspi Mqtt Verbindungen das Problem, das beim RabbitMQ beide Verbindungen mit der gleichen ID aufscheinen.

Jetzt bricht mir immer eine Verbindung weg und kommt wieder, da es zweimal die gleiche ID ist.

Danke!

Lg Andi