Thema: Delphi Probleme mit TMSMQTT

Einzelnen Beitrag anzeigen

Pflume

Registriert seit: 15. Jan 2024
2 Beiträge
 
#1

Probleme mit TMSMQTT

  Alt 15. Jan 2024, 17:00
Hallo,

ich will einen MQTTClient mit Delphi erstellen. Dazu habe ich die Komponente TMSMQTT gewählt.
Zuerst habe ich mich mit "TMSMQTTClient1.Connect();" verbunden. Das funktioniert auch, was ich daran sehe, dass TMSMQTTClient1.IsConnected auf true steht und ich in der Konsole des MQTT Servers sehe, dass es eine neue Session gibt.
Wenn die Verbindung steht bekomme ich sofort einen Fehler beim Client, dass es eine Zeitüberschreitung beim Lesen gibt (Exeption in der Klasse EIdReadTimeout). Diese Fehlermeldung konnte ich umgehen, indem ich im MQTTClient in den TimeOutSettings den Wert für Read auf -1 gesetzt habe.
Auch wird die Verbindung durch automatische Pings nicht am Leben gehalten, obwohl KeepConnectionAlive au true steht. Dieses Problem konnte ich umgehen, indem ich den Wert von KeepAliveInterval erhöht habe.

Wenn ich dann mit "TMSMQTTClient1.Disconnect();" mich disconnecten will, steht dazu nichts im Log des Servers. Ich bin also weiterhin mit dem Server verbunden. Auch bei "TMSMQTTClient1.Ping" sehe ich beim Log des Servers nicht, das irgendetwas ankommt. Das gleiche gilt auch fürs subscriben und publischen und wahrscheinlich auch für alle anderen Befehle.
Ich kann also im Log des Servers nur sehen, dass ich mich am Anfang verbunden habe. Dann sehe ich nichts mehr, bis ich die Anwendung vollständig stoppe, da dann "Connection stopped" im Log des Servers steht steht.
Den Server habe ich mit C# programmiert und auch mit einem C# Client getestet. Das Logging ist auf dem Server an.
(Ich habe es auch mit einem Mosquitto Server und einer von Git heruntergeladenen Version probiert [https://github.com/quini27/MQTT-clie...n-for-Windows]. Das Ergebnis ist das gleiche.)

Kann mir irgendwer sagen, welchen Fehler ich gemacht habe und wie man den MQTT Client zum laufen bringen könnte?

Vielen Dank im voraus
Max Pflume
  Mit Zitat antworten Zitat