2016-01-31 23:19:38 +01:00
# Adafruit MQTT Library example with support
2016-02-01 01:57:43 +01:00
This example illustrates Publish an arbitrary data packet using the Adafruit MQTT library to an MQTT feed which can then be parsed by the included python subscriber client.
2016-02-01 03:17:21 +01:00
|[alt-text](https://raw.githubusercontent.com/stuthedew/Adafruit_MQTT_Library/Arbitrary_buffer_publish/examples/mqtt_arbitrary_buffer/python_subscriber/mqtt_figure.png "Arbitrary data flow diagram")
2016-02-01 02:37:12 +01:00
---
2016-02-01 02:39:10 +01:00
## Installing and configuring Mosquitto broker (minimal working setup):
2016-02-01 02:35:02 +01:00
2016-02-01 02:38:22 +01:00
####_Installing on Raspberry Pi/Linux:_
2016-02-01 02:15:46 +01:00
2016-02-01 02:02:57 +01:00
```bash
sudo apt-get install mosquitto
2016-02-01 02:15:46 +01:00
cd /etc/mosquitto/
2016-02-01 02:22:40 +01:00
#See "Both" Setup Instructions Below
2016-02-01 02:02:57 +01:00
```
2016-02-01 02:38:22 +01:00
####_Installing On a Mac:_
2016-02-01 02:02:57 +01:00
```bash
brew install mosquitto
2016-02-01 02:15:46 +01:00
cd /usr/local/etc/mosquitto
2016-02-01 02:22:40 +01:00
#See "Both" Setup Instructions Below
2016-02-01 02:15:46 +01:00
```
2016-02-01 02:38:39 +01:00
---
2016-02-01 02:36:36 +01:00
####Configuring Mosquitto broker
2016-02-01 02:15:46 +01:00
```bash
sudo nano mosquitto.conf
```
2016-02-01 02:22:40 +01:00
Now we have to enable a password file to correctly interface with the Adafruit MQTT library. Scroll about two thirds of the way down until you see:
2016-02-01 02:15:46 +01:00
```bash
# -----------------------------------------------------------------
# Default authentication and topic access control
# -----------------------------------------------------------------
```
You should see `#password_file` about a paragraph after that.
Change
```bash
#password_file
```
To
```bash
password_file pwfile
2016-02-01 02:02:57 +01:00
```
2016-02-01 02:15:46 +01:00
Now `ctrl-x` to save and exit.
2016-02-01 02:02:57 +01:00
2016-02-01 02:27:23 +01:00
You're almost done! We just have to create and populate the password file we just configured. The default user info is:
2016-02-01 02:29:35 +01:00
* **Arduino Subscriber:**
2016-02-01 02:24:29 +01:00
* Username: TestUser
* Password: TestUser
2016-02-01 02:22:40 +01:00
2016-02-01 02:29:35 +01:00
* **Python Subscriber:**
* Username: TestPy
* Password: TestPy
2016-02-01 02:27:23 +01:00
2016-02-01 02:22:40 +01:00
```bash
touch pwfile #create the password file
2016-02-01 02:27:23 +01:00
mosquitto_passwd pwfile TestUser #Enter and confirm password when prompted
mosquitto_passwd pwfile TestPy #Enter and confirm password when prompted
2016-02-01 02:22:40 +01:00
```
2016-02-01 02:46:14 +01:00
####Running Mosquitto broker
2016-02-01 02:41:20 +01:00
Now run Mosquitto broker to allow Arduino publisher and Python subscriber to communicate
```bash
mosquitto
```
2016-02-01 02:32:56 +01:00
---
2016-02-01 02:37:12 +01:00
2016-02-01 02:39:10 +01:00
## Using Example Python Subscriber:
2016-02-01 01:57:43 +01:00
2016-02-01 02:46:14 +01:00
####Installing Python subscriber
Install dependencies if you haven't already
2016-02-01 01:59:14 +01:00
```bash
2016-02-01 01:57:43 +01:00
cd ../Adafruit_MQTT_Library/examples/mqtt_arbitrary_buffer/python_subscriber
pip install -r requirements.txt
2016-02-01 01:59:14 +01:00
```
2016-02-01 01:57:43 +01:00
2016-02-01 02:46:14 +01:00
####Installing Python subscriber
2016-02-01 02:22:40 +01:00
Run python script with default values and watch your parsed data print out.
2016-02-01 01:59:14 +01:00
```bash
2016-02-01 02:46:14 +01:00
python subscriber.py #Add -h flag to see modifiable options
2016-02-01 01:59:14 +01:00
```
2016-02-01 01:57:43 +01:00
2016-02-01 02:46:14 +01:00
Assuming that the Mosquitto broker is running in the background and the Adafruit_MQTT client (Arduino) is publishing, you should see the example data print out every 10 seconds.
2016-02-01 01:59:14 +01:00
```bash
2016-02-01 02:46:14 +01:00
MQTT: Connection successful
Connection successful
Subscribed to /feeds/arb_packet
Received char Array: "Hello!", val1: -4533, val2: 73102, val3: 3354...
Received char Array: "Hello!", val1: -4533, val2: 83611, val3: 3354...
Received char Array: "Hello!", val1: -4533, val2: 94115, val3: 3354...
2016-02-01 01:59:14 +01:00
```