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
I have been investigating the Samba code as part of my task to implement oplock break retry code for a multichannel setup. This is a small e...
/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...
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 ...
We first setup winbind: Make sure you have the following packages installed: samba-winbind : Provides the winbindd daemon required. ...