You are viewing an older revision! See the latest version
MQTT Python Broker with Mbed Client
Building an MQTT Python Broker with Mbed Client¶
This tutorial will guide you through creating an MQTT Python Server with Mbed Client using the Mbed Connect Cloud board. We first will cover creating the embedded client for the board.
Prerequisites¶
- An Mbed account - sign up here
- Install the Mbed serial driver (for Windows PCs)
- Python 2.7 - download here
- Pip - installation instructions here
Required Hardware¶
- Mbed Connect Cloud board
- An active WiFi network
Setup¶
- Connect the board to your computer via the micro USB port.
- The board mounts as a mass-storage device (like a USB drive). Verify that you can see it (the drive name will be DAPLINK).
- Add the u-blox EVK-ODIN-W2 board to your online Mbed Compiler here
Making the Mbed application¶
Import the example program. DO NOT CHECK the checkbox next to "Update all libraries to the latest revision".
Import programMQTT-Python-Demo
Demo for Mbed Connect Cloud board and an MQTT Python Broker/Client
Printing to the screen¶
Open main.cpp
Instantiate a C12832
variable to write to the LCD screen on the board. Under 'GLOBAL VARIABLES HERE' add the following code:
C12832 lcd(PE_14, PE_12, PD_12, PD_11, PE_9);
Create a function to print to the LCD screen. Under 'FUNCTION DEFINITIONS HERE' add the following code:
void lcd_print(const char* message) { lcd.cls(); lcd.locate(0, 3); lcd.printf(message); }
Setting up WiFi¶
We will add some code to initialize the Mbed Connect Cloud board's WiFi module and connect to your local WPA/WPA2 WiFi network.
Open mbed_app.json
We need to tell Mbed the name of our WiFi network's SSID and password.
Under wifi-ssid
change the "value"
from SSID to your WiFi's name (for example: "\"iotlab\""
) and do not remove the quotes.
Under wifi-password
change the "value"
from PASSWORD to your WiFi's password (for example: "\"abcd1234\""
) and do not remove the quotes.
Open main.cpp
The Mbed Connect Cloud board uses the u-blox EVK-ODIN-W2 WiFi module. So to initialize our WiFi connection we need to instantiate a OdinWifiInterface
variable. Under 'GLOBAL VARIABLES HERE' add the following code:
OdinWiFiInterface wifi;
Add some code to tell the WiFi module to connect to your wifi network. We will also print to the LCD the status of the WiFi connection. Under 'MAIN CODE HERE' add the following code:
lcd_print("Connecting..."); int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); if (ret != 0) { lcd_print("Connection error."); return -1; } lcd_print("Successfully connected!");
The MBED_CONF_APP_WIFI_SSID
and MBED_CONF_APP_WIFI_PASSWORD
are variables defined by the mbed_app.json
file we edited previously. NSAPI_SECURITY_WPA_WPA2
tells Mbed OS that our WiFi network has WPA or WPA2 security (so it requires an SSID and password).
Creating the MQTT Python Server¶
Install the "paho-mqtt" Python package by running the following command in your terminal: pip install paho-mqtt