MQTT-SN 协议网关

EMQX 企业版技术支持发表于:2022年05月17日 09:57:20更新于:2022年07月13日 15:12:44

MQTT-SN 协议网关

协议介绍

MQTT-SN 的信令和 MQTT 大部分都相同,比如都有 Will, 都有 Connect/Subscribe/Publish 命令.

MQTT-SN 最大的不同是,Topic 使用 TopicId 来代替,而 TopicId 是一个16比特的数字。每一个数字对应一个Topic, 设备和云端需要使用 REGISTER 命令映射 TopicId 和 Topic 的对应关系。

MQTT-SN 可以随时更改 Will 的内容, 甚至可以取消. 而 MQTT 只允许在 CONNECT 时设定 Will 的内容,而且不允许更改.

MQTT-SN 的网络中有网关这种设备,它负责把 MQTT-SN 转换成 MQTT,和云端的 MQTT Broker 通信. MQTT-SN的协议支持自动发现网关的功能。

MQTT-SN 还支持设备的睡眠功能,如果设备进入睡眠状态,无法接收 UDP 数据,网关将把下行的 PUBLISH消息缓存起来,直到设备苏醒后再传送。

EMQX-SN 是 EMQX 的一个网关接入模块,实现了 MQTT-SN 的大部分功能,它相当于一个在云端的 MQTT-SN 网关,直接和 EMQX Broker 相连。

创建模块

打开 EMQX Dashboard,点击左侧的 “模块” 选项卡,选择添加:

image.png


选择 MQTT-SN 接入网关模块:

image.png


配置相关基础参数:



image.png添加监听端口:

image.png


配置监听参数:

image.png


点击确认到配置参数页面:

image.png


点击添加后,模块添加完成:

image.png

配置参数


配置项说明
用户名可选的参数,指定所有 MQTT-SN 连接的用户名,用于 EMQX 鉴权模块
密码可选的参数,和 username 一起使用于 EMQX 鉴权模块

验证结果:image.png

MQTT-SN 客户端库

  1. https://github.com/eclipse/paho.mqtt-sn.embedded-c/

  2. https://github.com/ty4tw/MQTT-SN

  3. https://github.com/njh/mqtt-sn-tools

  4. https://github.com/arobenko/mqtt-sn

MQTT-SN客户端示例:

这里以第三种客户端为例,下载地址https://github.com/njh/mqtt-sn-tools

git clone  

cd mqtt-sn-tools

make

## 查看pub可使用选项
./mqtt-sn-pub --help

## 查看sub可使用选项
./mqtt-sn-sub --help
## 连接EMQX订阅topic为t/1主题
./mqtt-sn-sub -h 192.168.1.19 -p 1184 -t t/1

image.png

## 发布消息一条消息到test主题
./mqtt-sn-pub -h 192.168.1.19 -p 1184 -t test -m "Hello EMQX"

通过使用MQTTX连接EMQX并订阅test主题,可以接收到使用MQTT-SN协议的客户端发布的消息:

image.png

    您需要登录后才可以回复