Nathan Borror

# Getting Started with MQTT I wanted to play around with MQTT this evening so I put together a little tutorial on how to get started using Ubuntu and [Mosquitto][1]. ## Installing Mosquitto Enter the following into your terminal. Remember to replace `YOUR_UBUNTU_VERSION_HERE` with the version of ubuntu you're using, I was using Maverick Meerkat at the time so I replaced it with just maverick. First add the following two lines to `/etc/apt/sources.list` ``` deb http://ppa.launchpad.net/mosquitto-dev/mosquitto-ppa/ubuntu YOUR_UBUNTU_VERSION_HERE main deb-src http://ppa.launchpad.net/mosquitto-dev/mosquitto-ppa/ubuntu YOUR_UBUNTU_VERSION_HERE main ``` Then we need to [verify][2] the newly added packages: ``` $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 262C4500 ``` Lets update Aptitude so we have the latest packages to choose from: ``` $ sudo aptitude update ``` And now lets install the Mosquitto server and clients: ``` $ sudo aptitude install mosquitto $ sudo aptitude install mosquitto-clients ``` ## Subscribing to a Topic ``` $ mosquitto_sub -d -t hello/world ``` Mosquitto uses slashes as a way to organize topics. It also provides ways to subscribe to groups of topics if you dig around their documentation. ## Publishing to a Topic In another terminal window execute: ``` $ mosquitto_pub -d -t hello/world -m "Hello World" ``` You should see the text "Hello World" in the other window. To get the full effect you can install Mosquitto on your Mac using [Homebrew][3] and then connect to your Ubuntu machine... ``` $ mosquitto_sub -h YOUR_HOST_IP_ADDRESS -d -t hello/world ``` You should now see messages from your host sent to your local machine. You'll probably need to open up port 1883 on your Ubuntu machine to make this actually work. I just used iptables to do so: ``` sudo iptables -A INPUT -p tcp -m tcp --dport 1883 -j ACCEPT ``` [1]:http://mosquitto.org [2]:https://help.launchpad.net/Packaging/PPA/InstallingSoftware#On_older_.28pre_9.10.29_Ubuntu_systems [3]:https://github.com/mxcl/homebrew