开发思路
设备成功接入私有化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}/#
设备端在所有 client 结尾的主题有发布权限; 云端在所有 server 结尾的主题有发布权限
消息格式:发送和接收的消息均为JSON字符串,如:{"mid": "消息ID", "data": "数据内容", "ts": "时间戳"}
1. 消息ID: 16位数字和字母组成的字符串,由消息原始发布方指定,如果为应答(回复)消息,则为原始消息的mid。mid随机生成,要具备唯一性
2. 数据内容:可以是键值对象或键值对象数组,具体内容与主题和功能属性相关
3. 时间戳:消息发布时的时间(ntp时间),最少精确到秒,可以精确到毫秒