Python编程之MQTT

本文介绍DTU701订阅MQTT消息远程控制LED灯。先阐述MQTT协议概念、特点、角色等,接着说明搭建MQTT服务器(用Ubuntu系统和Mosquitto)及常见问题解决方法,还介绍发布者用Windows下工具、订阅者用DTU701结合Python实现订阅,最终实现预定设想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文将简单介绍DTU701订阅MQTT消息,远程控制LED灯。

MQTT是IBM开发的一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。

若初次接触MQTT协议,可先理解以下概念:

MQTT协议特点—— 借助消息推送功能,可以更好地实现远程控制。

MQTT协议角色—— 发布者,代理器(服务器)和订阅者。

MQTT协议消息—— 消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。

MQTT协议主题—— 主题可理解为相同类型或相似类型的消息集合。

所以要完成目标,需要搭建一台MQTT服务器,我们采用ubuntu系统,IP为10.10.80.106

发布者,采用Windows 运行MQTT测试工具。订阅者,为DTU701,采用python编写,并控制LED。

 

设计一个简单的测试案例,在ubuntu上运行MQTT代理服务器,而DTU701订阅主题为gpio的消息,Windows发布同主题消息,消息的内容为JSON数据包,数据包格式为{“index”:130,“value”:0},index代表GPIO的编号,value代表打开或关闭状态。

 

MQTT服务器

Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。我们在ubuntu上安装mosquitto。

下载源码http://mosquitto.org/files/source/

这里选择mosquitto-1.4.5,解压编译make & make install

 

常见问题:

编译找不到openssl/ssl.h

解决方法:安装openssl

sudo apt-get install libssl-dev

编译过程找不到ares.h

解决方法:修改config.mk中的WITH_SRV:=yes,改为WITH_SRV:=yes

使用过程中找不到libmosquitto.so.1

error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory

解决方法:修改libmosquitto.so位置 创建链接

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

# 更新动态链接库

sudo ldconfig

make: g++:命令未找到

解决方法:安装g++编译器

sudo apt-get install g++

 

开启MQTT服务

在ubuntu终端输入如下命令:

mosquitto -v

Ubuntu 系统IP为10.10.80.106

 

 

发布者

采用windows下mqtt工具,mqtt工具很多如mqtt-spy,为了方便我这边采用MQTT测试工具(网盘可下载):

输入MQTT服务器IP及端口号,点击connect

 

订阅者

基于DTU701 采用python编写代码实现mqtt订阅。

paho-python是一个符合MQTT v3.1协议的客户端,paho-python可连接MQTT代理服务器、发布消息、订阅消息和获得推送消息。DTU701默认带有paho-python模块。

DTU701订阅代码 mqtt.py

注意:网络编程中,服务器和浏览器只认bytes 类型数据。所以msg.payload为bytes类型字符串。

运行python mqtt.py 订阅,  MQTT测试工具 发布send。结果如下:

至此,已实现预定的设想。可见python 采用50行代码实现MQTT,足见其强横。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值