Smart Cities - Python MQTT class library: Difference between revisions

From Sensors in Schools
Jump to navigation Jump to search
No edit summary
No edit summary
Line 44: Line 44:
     mqtt.publish('Test2','message2')                                #Publish a message to the Test2 topic
     mqtt.publish('Test2','message2')                                #Publish a message to the Test2 topic
</syntaxhighlight>
</syntaxhighlight>
= Imports =
<syntaxhighlight lang="python">
import paho.mqtt.client as mqtt
</syntaxhighlight>
This imports the Paho MQTT library, which provides tools for creating and managing MQTT clients. MQTT (Message Queuing Telemetry Transport) is a lightweight messaging protocol often used for IoT and home automation systems.

Revision as of 08:54, 29 September 2024

MQTT Class library

This Python program implements an MQTT client using the Paho MQTT library. It creates a simple class called Mqtt that can subscribe to and publish messages on MQTT topics, typically used in home automation systems. Let’s break down the program step by step.

#Home automation system MQTT class library
#Copyright (c) 2024, Julie VK3FOWL and Joe VK3YSP.
#For The School Amater Radio Club Network (r) VK3SRC.
#This program:
#   Implements a Message Queuing Telemetry Transport (MQTT) client
#   Subscribes to MQTT topics
#   Publishes MQTT messages

import paho.mqtt.client as mqtt

class Mqtt(object):
    def __init__(self, host, port, callback):
        #Constructor
        self.client = mqtt.Client()                                 #Create an mqtt client
        self.client.on_message = callback                           #Assign a message handler
        if (self.client.connect(host, port, 60) == 0):              #Connect to the mqtt broker
            print('Connected to MQTT broker')
            self.client.loop_start()                                #Start handling mqtt messages
            print('MQTT client started')

    def subscribe(self, topic):
        #Subscribe to an mqtt topic
        self.client.subscribe(topic)

    def publish(self, topic, message):
        #Subscribe to an mqtt topic
        self.client.publish(topic, message)

if __name__ == '__main__':                                          #Run this code stand-alone
    #Test script - This script creates a MQTT object and demonstrates subscribing and publishing messages
    def mqttCallback(client, userdata, message):
        #This function handles received MQTT messages
        print(f'MQTT: {message.topic}: {message.payload.decode()}') #Print the topic and message
    mqttIP = 'localhost'                                            #Assume the MQTT broker is running on this machine
    mqttPort = 1883                                                 #The standard MQTT port
    mqtt = Mqtt(mqttIP, mqttPort, mqttCallback)                     #Create an MQTT object
    mqtt.subscribe('Test1')                                         #Subscribe to the Test1 topic
    mqtt.subscribe('Test2')                                         #Subscribe to the Test2 topic
    mqtt.publish('Test1','Message1')                                #Publish a message to the Test1 topic
    mqtt.publish('Test2','message2')                                #Publish a message to the Test2 topic

Imports

import paho.mqtt.client as mqtt

This imports the Paho MQTT library, which provides tools for creating and managing MQTT clients. MQTT (Message Queuing Telemetry Transport) is a lightweight messaging protocol often used for IoT and home automation systems.