#! /usr/bin/python3
# ===================================================================
# MQTT Client Demo
#
# From: https://www.youtube.com/watch?v=Pb3FLznsdwI
# Raspberry Pi - Getting started with MQTT
# ===================================================================
import paho.mqtt.client as mqtt
# -------------------------------------------------------------------
# ---- callback
# ---- The callback for when the client receives a COMEBACK response
# ---- from the server
# -------------------------------------------------------------------
def on_connect(client, userdata, flags, rc):
print(f'Connected with results code {rc}')
# subscribing in on_connect() - if we loose the connection
# and reconnect, then subscriptions will be renewed
client.subscribe('CoreElectronics/test')
client.subscribe('CoreElectronics/topic')
# -------------------------------------------------------------------
# ---- callback
# ---- The callback for when a PUBLISH message is received
# ---- from the server
# -------------------------------------------------------------------
def on_message(client, userdata, msg):
print(f'Topic: {msg.topic}, Payload: {msg.payload}')
if msg.payload == b'Hello':
print('Received message #1 do something')
# do something
if msg.payload == b'World!':
print('Received message #2 do something else')
# do something else
# -------------------------------------------------------------------
# --- main
# -------------------------------------------------------------------
# Create an MQTT client and attach our routines to it
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect('test.mosquitto.org', 1883, 60)
# process network traffic and dispatch callbcks. This will also
# handle reconnecting. There are other loop() functions made
# available. Check the documentation at
# https://github.com/eclipse/paho.mqtt.python
client.loop_forever()