MQTT 学习记录
学习mqtt协议,从网上找demo验证一下。
参考链接
https://www.jianshu.com/p/ebbe25d1c4b2
https://blog.csdn.net/xxmonstor/article/details/80479851
https://www.jianshu.com/p/b76dbc675141
https://www.ibm.com/developerworks/cn/iot/iot-mqtt-why-good-for-iot/index.html
https://www.jianshu.com/p/3d5b487c6860
https://blog.csdn.net/weixin_41656968/article/details/80848542
代理安装
在ubuntu上验证。
代理安装在本地。
wget http://emqtt.com/static/brokers/emqttd-ubuntu16.04-v2.3.9_amd64.deb
sudo dpkg -i emqttd-ubuntu16.04_v2.0_amd64.deb
启动
sudo service emqttd start
查看状态
sudo service emqttd status
使用浏览器打开EMQ控制台,http://127.0.0.1:18083,输入默认用户名:admin,默认密码public。
查看现在的客户端为0。
subscribe订阅
subscribe.py
# encoding: utf-8
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe('chat', qos=0)
def on_message(client, userdata, msg):
print(msg.topic+" " + ":" + str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect # 连接到代理调用函数
client.on_message = on_message # 接收到订阅的消息调用函数
client.connect("127.0.0.1", 1883, 60)
client.loop_forever()
publish发布
publish.py
import paho.mqtt.client as mqtt
HOST = "127.0.0.1" # 服务器地址
PORT = 1883 # 端口号
def test():
client = mqtt.Client()
client.connect(HOST, PORT, 60)
# 60表示与代理通信之间允许的最长时间段(以秒为单位)。
# 如果没有其他消息正在交换,则它将控制客户端向代理发送ping消息的速率
client.publish('chat',payload='hello tao',qos=0)
client.loop_forever()
if __name__ == '__main__':
test()
验证
先运行订阅的客户端
hon@T:~/Desktop/mqtt$ python subscribe.py
Connected with result code 0
再运行发布的客户端python publish.py
在订阅可以端下面可以发现调用了on_message的内容,输出了topic名称和内容。
hon@T:~/Desktop/mqtt$ python subscribe.py
Connected with result code 0
chat :hello tao
查看代理的变化。
出现了两个client。
出现了发布的topic内容。
验证的时候一定要先运行订阅subscribe的程序,进行一直监听,然后再运行发布publish程序,才会调用on_message函数。
Liu Tao
2019-3-5
分类:
IOT
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?