使用python编写mqtt客户端向EMQX服务器发送数据
创始人
2024-02-01 13:01:51
0

摘要:本文介绍如何用python编写一个mqtt客户端向EMQX服务器发送数据,实现一个简易的本地物联网服务器。

 上一篇文章讲到使用mqtt.fx软件来发布消息。

(1条消息) 使用mqtt.fx向EMQX服务器发送消息_TMS320VC5257H的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/youngwah292/article/details/127941436?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127941436%22%2C%22source%22%3A%22youngwah292%22%7D

但是它有一个缺点,就是暂时没有定时发送的功能,只能手动发送。在输入框中写入一个什么信息,就发送一个信息。如果想发送一些自动生成的信息,就有点困难了。

 操作的步骤参考CSDN博主qilei2010的文章

【Python】使用paho-mqtt库实现MQTT监听和收发_qilei2010的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/qilei2010/article/details/122953569他的文章转自知乎

如何在 Python 中使用 MQTT - 知乎

核心内容就是使用python编写一个paho客户端。这是一种通用的客户端,还可以用在安卓系统编程,让手机成为一个MQTT客户端。

编程之前,需要首先下载库。使用Windows下的客户端,或者使用vscode客户端输入下面这个指令,就可以完成安装。

pip3 install -i https://pypi.doubanio.com/simple paho-mqtt

下图是vscode软件安装paho的界面,安装速度很快。

 安装完paho之后,就可以编写python程序了,本文使用的软件是vscode,默认大家都已经配置完成python所需的扩展。

源代码如下:


import random
import timefrom paho.mqtt import client as mqtt_clientbroker = '192.168.1.3'
port = 1883
topic = "testtopic/1"
# generate client ID with pub prefix randomly
client_id = f'python-mqtt-{random.randint(0, 1000)}'def connect_mqtt():def on_connect(client, userdata, flags, rc):if rc == 0:print("Connected to MQTT Broker!")else:print("Failed to connect, return code %d\n", rc)client = mqtt_client.Client(client_id)client.on_connect = on_connectclient.connect(broker, port)return clientdef publish(client):while True:time.sleep(1)# 发送1-50之间的随机数msg = random.randint(1,50) result = client.publish(topic, msg)# result: [0, 1]status = result[0]if status == 0:print(f"Send `{msg}` to topic `{topic}`")else:print(f"Failed to send message to topic {topic}")      def run():client = connect_mqtt()client.loop_start()publish(client)if __name__ == '__main__':run()

使用vscode右键“在交互式窗口中运行当地文件”。

 观察运行效果,首先提示已经连接到MQTT服务器了。如果连接不成功,那么就提示"Failed to connect, return code"。接着就提示发送的数据是什么,发送到哪个主题。下图显示的是发送1-50之间的随机数。

现在回到EMQX管理端,通过websocket客户端观察到发送过来的数据。至此实验成功。

 

 从此实验可以看出,MQTT的客户端有很多种,从常见的MQTT.FX,到python客户端,从无代码,到寥寥数十句,都能实现。

核心的原理都是通过客户端订阅和发布消息。如果一个消息被多个客户端订阅,那么无论哪个客户端将该主题做出更改,所有订阅到该主题的客户端将全部接到这个指令。如下图所示,当MQTT.FX也订阅了该主题之后,如果python客户端向服务器发送指令,那么mqtt.fx客户端也同时显示这些数据。这就是MQTT通信的乐趣和优势。

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...