MQTT (Message Queueing Telemetry Transport) is a Client Server messaging transport protocol. It provides a lightweight method of carrying messages using a publish/subscribe model. The pub/sub model being lighweight makes it suitable for IOT messaging with low power devices, sensors, phones or microcontrollers.
How MQTT works?MQTT follows publish/subscribe model which is alternative to server-client model where client communicates directly with server. The pub/sub model defines the client which send a message(publisher) to another client which received that message(subscriber). The subscriber and publisher are unaware of the presence of each other. The main part, which we call the Broker, which our both publisher and subscriber are aware of, filters all the coming messages and distributes them respectively.
Now we know what is MQTT and how it works. Let's dive in to set this up on Windows 7/8/10.
Mosquitto:This is an open source message broker used for handling lightweight data transfer protocol. Mosquitto implements the MQTT protocol versions 3.1 and 3.1.1.
Setup on Windows:Step 1: Select mosquitto-1.4.11-win32.exe from https://mosquitto.org/download for Windows.
Step 2: Now, click the download button on the eclipse download page or select any other mirror of your choice.
Step 3: Save and run the downloaded exe file and Click Next to Continue the installation.
Step 4: Installer now asks you to download two DLLs which are must to get your Mosquitto broker running.
Step 5: Click on the first link to download the Win32 Open SSL Light library. For me, Win32 OpenSSL v1.0.2k Light worked, the updated version threw an error during installation, so make sure which version works well on your system.
Step 6: Now download the pthreadvc2.dll from the installation instruction.
Step 7: Save and run the downloaded Win32 OpenSSL Light file. When installing it will ask you to save the libraries into System library or the bin directory. For simplicity, you can choose System directory and there is no need to copy the libraries to your Mosquitto installation. However, if you select /bin directory then you will need to copy the libraries into your Mosquitto installation folder.
Step 8: We need to copy DLLs to Mosquitto installation directory, for me it's C:/Program Files(x86)/mosquitto.
DLLs needed from OpenSSL-Win32: libeay32.dll, ssleay32.dll
Second DLL downloaded: pthreadVC2.dll
Note: Make sure that these DLLs are either on system path or in Mosquitto installation directory.Step 9: Now continue the Mosquitto installation and change the installation directory to C:/Program Files(x86)/mosquitto where we have copied the downloaded DLLs.
Step 10: In the next step we are continuing our Mosquitto installation, now installer asks you to install Service, check this and click Next.
Step 10: Now, the installer looks for the installation path, let it remain the same, or change it as per your requirement. Click Next and installation will Finish.
Step 11: If the installation fails, try fresh install. Sometimes the Windows services are not configured automatically, so a fresh install will work.
Now the installation is complete, time to test.
Open CMD and execute the following command:
When TCP 0.0.0.0:1883 LISTENING appears we are good to move ahead to test Mosquitto broker.
Test Mosquitto broker:Now we will run CMD and navigate to our installation directory C:/Program Files(x86)/mosquitto.
First of all, type mosquitto to start the broker manually.
Write mosquitto -h to open the help list so to start the mosquitto broker in Verbose mode type mosquitto -v and hit enter. Once the broker is started, it's time to create publisher and subscriber.
Open two CMD windows, one is publisher and the other is subscriber.
In first window type:
mosquitto_sub -v -t 'knowshipp/topic' to subscribe the topic 'knowshipp/topic'.
In the second window:
mosquitto_pub -t 'knowshipp/topic' -m 'helloSailor to publish the message on topic 'knowshipp/topic'.
Now look into your subscriber, a message has been received on the subscriber topic.
To subscribe/publish messages using different broker over internet i.e. test.mosquitto.org, use the below commands:
Subscriber window: mosquitto_sub -h test.mosquitto.org -t topic
Publisher Window: mosquitto_pub -h test.mosquitto.org -t topic -m "Hello, Sailor!"
Conclusion:In conclusion, we are now able to subscribe/publish MQTT messages using Mosquitto broker on local/internet environment.
That's it for today. Happy IoTing.