开发思路

设备成功接入私有化Broker后, 可以使用MQTT客户端工具使用管理帐号和密码登录Broker, 向指定设备的主题发送消息,设备可以响应命令。

开发思路就是通过编程来连接mqtt,来收发设备上下行消息

MQTT库

下面收集了不同编程语言,连接MQTT,并进行消息处理的库。

请根据应用端的语言,选择合适的库,进行编程开发

编程语言 可用库
C语言 Eclipse Paho C:一个通用的MQTT C库,适用于多种平台。
MQTT-C:一个小型、易于理解和使用的MQTT v3.1.1协议客户端库,特别适用于资源受限环境。
C++语言 Eclipse Paho C++:一个通用的MQTT C++库,提供同步和异步API。
libmosquittopp:Mosquitto MQTT代理的C++库。
Python语言 Eclipse Paho Python:一个流行的Python MQTT客户端库,最初由Mosquitto Python客户端开发。
gmqtt:一个异步Python 3 MQTT客户端库。
Java语言 Eclipse Paho Java:一个通用的MQTT Java库,支持多种特性,如遗嘱消息、SSL/TLS等。
HiveMQ MQTT Client:一个高性能的Java MQTT客户端库,支持MQTT 5.0和MQTT 3.1.1。
Go语言 Eclipse Paho Go:一个通用的MQTT Go库,适用于Go语言环境。
JavaScript/Node.js MQTT.js:一个JavaScript MQTT库,适用于Node.js环境。
Ascoltatori:一个支持Redis、AMQP、MQTT和ZeroMQ的Node.js发布/订阅库。
其他语言 .NET/dotNET:如HiveMQtt、MQTTnet等,提供多种MQTT客户端库供.NET平台使用。
Dart、Erlang、Elixir、Haskell、Lua、OCaml、Perl、PHP、Prolog、Qt、Ruby、Rust、Shell Script、Smalltalk、Swift、Tcl等:这些语言也都有各自的MQTT库或工具,以支持MQTT通信。
附:设备相关的主题
设备订阅的主题以及权限,请在对应产品的详情页->订阅主题 中查看
功能 Topic类 设备权限
设备主题 thing/{product_key}/{device_name}/# 订阅
命令下发 thing/{product_key}/{device_name}/order/server 只读
命令下发应答 thing/{product_key}/{device_name}/order/client 发布
事件上报应答 thing/{product_key}/{device_name}/event/server 只读
事件上报 thing/{product_key}/{device_name}/event/client 发布
状态上报应答 thing/{product_key}/{device_name}/state/server 只读
状态上报 thing/{product_key}/{device_name}/state/client 发布
配置下发 thing/{product_key}/{device_name}/config/server 只读
配置下发应答 thing/{product_key}/{device_name}/config/client 发布
固件升级信息 thing/{product_key}/{device_name}/ota/server 只读
固件升级上报 thing/{product_key}/{device_name}/ota/client 发布

登录后,设备将第一时间订阅总主题:
thing/{product_key}/{device_name}/#

主题规则:用 分隔,分别为 thing 产品Key 设备Key 动作 发起端
设备端在所有 client 结尾的主题有发布权限云端在所有 server 结尾的主题有发布权限
消息格式:发送和接收的消息均为JSON字符串,如:{"mid": "消息ID", "data": "数据内容", "ts": "时间戳"}
1. 消息ID: 16位数字和字母组成的字符串,由消息原始发布方指定,如果为应答(回复)消息,则为原始消息的mid。mid随机生成,要具备唯一性
2. 数据内容:可以是键值对象或键值对象数组,具体内容与主题和功能属性相关
3. 时间戳:消息发布时的时间(ntp时间),最少精确到秒,可以精确到毫秒