Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Problems connecting to a broker with QtMqtt
Qt 6.11 is out! See what's new in the release blog

Problems connecting to a broker with QtMqtt

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 5 Posters 5.0k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #2

    Hi and welcome to devnet,

    Might be silly question but are you sure your plugin is loaded correctly ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    1 Reply Last reply
    0
    • G Offline
      G Offline
      glasen77
      wrote on last edited by
      #3

      Yes, the plugin loads correctly. Before using QtMtqq i tested the plugin system with a QTimer which outputs a string every 2 seconds.

      1 Reply Last reply
      0
      • Pablo J. RoginaP Offline
        Pablo J. RoginaP Offline
        Pablo J. Rogina
        wrote on last edited by
        #4

        @glasen77 not that I'm an expert with MQTT protocol, but comparing your client with Qt simpleclient example, it seems that you're not subscribing to any topic at all.
        From this tutorial it looks like even if you connect successfully to the MQTT broker (or server) then you need to register your client to "publish" or "subscribe" for a particular topic.

        Upvote the answer(s) that helped you solve the issue
        Use "Topic Tools" button to mark your post as Solved
        Add screenshots via postimage.org
        Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

        1 Reply Last reply
        2
        • G Offline
          G Offline
          glasen77
          wrote on last edited by
          #5

          The problem is that i can't subscribe to any topic because the connection is not completed. Is it possible that i do set the hostname in a wrong way? Or can i only use QtMqtt with QApplication and not QCoreApplication?

          The only difference between my code and the simpleclient example is that my code only uses the command line.

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #6

            You should also connect the QMqttClient::errorChanged signal to see if you have something going wrong.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            G 1 Reply Last reply
            3
            • SGaistS SGaist

              You should also connect the QMqttClient::errorChanged signal to see if you have something going wrong.

              G Offline
              G Offline
              glasen77
              wrote on last edited by
              #7

              @SGaist : Also tried that. "errorChanged" does nothing. I've completely run out of ideas.

              mrjjM 1 Reply Last reply
              0
              • G glasen77

                @SGaist : Also tried that. "errorChanged" does nothing. I've completely run out of ideas.

                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #8

                @glasen77
                So basically your sample stays in
                QMqttClient::Connecting state ?

                do you have multiple clients ?
                seems you have multiple plugins.
                you do follow the rule that docs says:
                "The connection request must contain a unique client identifier. "

                G 1 Reply Last reply
                0
                • mrjjM mrjj

                  @glasen77
                  So basically your sample stays in
                  QMqttClient::Connecting state ?

                  do you have multiple clients ?
                  seems you have multiple plugins.
                  you do follow the rule that docs says:
                  "The connection request must contain a unique client identifier. "

                  G Offline
                  G Offline
                  glasen77
                  wrote on last edited by
                  #9

                  @mrjj :
                  At the moment there is only one client running. And setting an identifier is optional because the class will do that for you:

                  Each client needs to have a unique ID to be able to connect to an MQTT broker. If no client ID is specified by the user, one will be generated automatically when a connection is established.

                  I can run multiple versions of the "simpleclient" example without specifying an identifier.

                  1 Reply Last reply
                  0
                  • Pablo J. RoginaP Offline
                    Pablo J. RoginaP Offline
                    Pablo J. Rogina
                    wrote on last edited by Pablo J. Rogina
                    #10

                    @glasen77 ok, so at this point another difference I see is that you're using your code as a plugin vs the simpleclient being just an app.
                    Is there a real need to use a plugin?
                    Could you try your code as a regular app to see if it works? This way you could discard coding errors regarding network and just focus on the plugin side...

                    Upvote the answer(s) that helped you solve the issue
                    Use "Topic Tools" button to mark your post as Solved
                    Add screenshots via postimage.org
                    Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

                    G 1 Reply Last reply
                    1
                    • Pablo J. RoginaP Pablo J. Rogina

                      @glasen77 ok, so at this point another difference I see is that you're using your code as a plugin vs the simpleclient being just an app.
                      Is there a real need to use a plugin?
                      Could you try your code as a regular app to see if it works? This way you could discard coding errors regarding network and just focus on the plugin side...

                      G Offline
                      G Offline
                      glasen77
                      wrote on last edited by
                      #11

                      @Pablo-J.-Rogina :

                      Yes, i need to use a plugin. But i solved the problem:

                      After playing around with the Unit-tests of QtMqtt i found out that you explicitly need to inherit from QObject for your Mqtt-Class. Because i'm already inheriting from QObject in the interface for my PluginClass, it was not possible to inherit another time (Don't ask me why, i'm new to C++).

                      I solved my problem by making another class named MqttWrapper which calls all the code to establish the connection to the broker. This class is called from my DummyPlugin-Class. Now the code works perfectly.

                      U 1 Reply Last reply
                      0
                      • G glasen77

                        @Pablo-J.-Rogina :

                        Yes, i need to use a plugin. But i solved the problem:

                        After playing around with the Unit-tests of QtMqtt i found out that you explicitly need to inherit from QObject for your Mqtt-Class. Because i'm already inheriting from QObject in the interface for my PluginClass, it was not possible to inherit another time (Don't ask me why, i'm new to C++).

                        I solved my problem by making another class named MqttWrapper which calls all the code to establish the connection to the broker. This class is called from my DummyPlugin-Class. Now the code works perfectly.

                        U Offline
                        U Offline
                        unamlositp
                        wrote on last edited by
                        #12

                        @glasen77 Hello, I have the same exact problem as yours. Can you please explain me better how did you solve it?

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved