MQTT服务器搭建及客户端通信实例

MQTT服务器:EMQX v3

客户端1 PC(Windows10操作系统)

客户端2 IOT BOARD(RT-Thread与正点原子联合开发的STM32L475核心芯片的开发板)

1.搭建服务器

在EMQ官网https://www.emqx.io/cn/products/broker下载emq x broker并按照文档安装运行即可,安装并成功运行后,打开http://127.0.0.1:18083 即可看到MQTT服务器的WEB控制台。

2.客户端1

在PC上利用python的paho-mqtt库实现一个简单的客户端。该程序实现了自收自发的功能。

如下是EMQ官方使用指南中的一段示例代码。运行后,可以在PC机上看到成功连接的信息。

如下图

MQTT服务器搭建及客户端通信实例_第1张图片

 

注意将client.connect("192.168.1.165", 1883, 60)这句中的IP改为服务器的IP地址。

#-*-coding:utf-8-*-

# 导入 paho-mqtt 的 Client:
import paho.mqtt.client as mqtt
import time
unacked_sub = [] #未获得服务器响应的订阅消息 id 列表

# 用于响应服务器端 CONNACK 的 callback,如果连接正常建立,rc 值为 0
def on_connect(client, userdata, flags, rc):
    print("Connection returned with result code:" + str(rc))


# 用于响应服务器端 PUBLISH 消息的 callback,打印消息主题和内容
def on_message(client, userdata, msg):
    print("Received message, topic:" + msg.topic + "payload:" + str(msg.payload))

# 在连接断开时的 callback,打印 result code
def on_disconnect(client, userdata, rc):
    print("Disconnection returned result:"+ str(rc))

# 在订阅获得服务器响应后,从为响应列表中删除该消息 id
def on_subscribe(client, userdata, mid, granted_qos):
    unacked_sub.remove(mid)


# 构造一个 Client 实例
client = mqtt.Client()
client.on_connect = on_connect
client.on_disconnect= on_disconnect
client.on_message = on_message
client.on_subscribe = on_subscribe

# 连接 broker
# connect() 函数是阻塞的,在连接成功或失败后返回。如果想使用异步非阻塞方式,可以使用 connect_async() 函数。
client.connect("192.168.1.165", 1883, 60)

client.loop_start()

# 订阅单个主题
result, mid = client.subscribe("hello", 0)
unacked_sub.append(mid)
# 订阅多个主题
result, mid = client.subscribe([("temperature", 0), ("humidity", 0)])
unacked_sub.append(mid)

while len(unacked_sub) != 0:
    time.sleep(1)

client.publish("hello", payload = "Hello world!")
client.publish("temperature", payload = "24.0")
client.publish("humidity", payload = "65%")

# 断开连接
time.sleep(5) #等待消息处理结束
client.loop_stop()
client.disconnect()

服务器端的状态如下图:

MQTT服务器搭建及客户端通信实例_第2张图片

3.客户端2

采用RT-Thread与正点原子联手开发的IOT BOARD开发板,在正点原子官网下载其示例代码(也可在正点原子TAOBAO店找到链接)。将MQTT示例下载到板子上,按照手册连接好WIFI,简单修改例子中的服务器地址,订阅与发布的主题,之后可以在PC机和开发板之间通过MQTT通信。开发板的例子中将接受与发送到的信息通过串口传输出来,如下图所示:

MQTT服务器搭建及客户端通信实例_第3张图片

在PC机上可以从订阅的主题中收到信息,如下图。

你可能感兴趣的:(STM32,MQTT,RT-Thread)