MQTT is a lightweight protocol on top of TCP/IP which is used to transfer data between nodes. It was built to be used by devices having low network bandwidth. The low overheads in using this protocol has made it a popular choice for use with IoT devices.
The protocol uses a subscribe/publish method wherein both the data source and the recipient subscribe to a topic on a broker. This model is similar to twitter where a tweet sent by a user can be read by multiple users who subscribe to the user.
A broker is a software run on a more capable hardware which acts as a data distributor. A topic is similar to a subject and is built in a tree structure with its components separated by a '/'. Wildcards are allowed when describing topics to subscribe to. Mosquitto(http://mosquitto.org/) is the most popular opensource broker at this moment.
Clients connect to the broker and subscribe to the topic. A client wishing to transmit its data(the sender) will publish data for the topic on the broker. Subscribers to the topic on the broker receive the data and process it further. MQTT is data agnostic and the data can take any format the sender wishes.
MQTT apis are available for multiple programming languages at the eclipse paho website.
The PubSub client library is available for use with arduinos.
Some use cases for MQTT are
a) Sensors such as temperature sensors periodically sending information about its surroundings.
b) Sending commands to a device from various sources.
An example project which uses MQTT in an arduino setting is available on the Make website. Here the automation software - openhab is configured with MQTT bindings to send commands specifying the colour required to the broker(mosquitto) running on a raspberry pi. The ESP8266 connected to a LED strip subscribes to this broker reads the colour data off the broker and sets the light colour accordingly.
More information is on the protocol is available in the mqtt man page at
My previous post deals with using Vagrant to install CentOS based test systems to install Ceph on. There, I created 7 virtual machines which...
/usr/sbin/cifs.upcall is the request-key help program used to obtain certain data like kerberos keys or results of dns calls from userland p...
SMB connection is established over 3 steps. 1) Negotiation: The client and the server exchange a list of their own capabilities. We have ...
The investigation is driven by a user request to reduce the time spent by the client waiting for a request to an unresponsive server. The ...