MQTT 和 CoAP 在 EMQ X 世界的一次「约会」

模式流星
• 阅读 1521

随着 5G 网络技术的进步,物联网世界也在飞速发展,时至今日,无数的物联网设备在世界的各个角落发光发热。

但有别于传统互联网,端到端的沟通,一直是物联网业务的难点。使用的物联网通讯协议不同,使得这些设备之间的沟通存在巨大的鸿沟。就好比人与人之间语言不同,无法正常的交流。

MQTT 和 CoAP 在 EMQ X 世界的一次「约会」

EMQ X Broker 作为物联网消息中间件,则肩负着促成这些设备提供沟通交流的使命。为此,我们开发了很多物联网协议插件,无论你偏爱煲电话粥式的热情(基于 TCP 长链接,比如 MQTT),还是一字一句书信的温情(基于 UDP 无连接,比如 CoAP),或是你有一套属于自己的「暗语」(私有协议),在 EMQ X 的世界,我们都能帮你找到能读懂你的「soulmate」。

关于 MQTT 协议:https://www.jianshu.com/p/ecd...

关于 CoAP 协议:https://www.jianshu.com/p/7fe...

本文将向你展示,MQTT 客户端和 CoAP 客户端,在 EMQ X World 的一次「约会」。

Step 1:启动 EMQ X Broker,打开 CoAP 插件,并确保插件的运行状态。

关于如何安装和启动 EMQ X Broker,你可以在这里找到帮助。

打开 Dashboard,点击左侧插件,右侧搜索 CoAP ,点击启动,运行 CoAP 插件( 默认端口 5683 )。

MQTT 和 CoAP 在 EMQ X 世界的一次「约会」

MQTT 的 PUB/SUB 模型中,为了实现端到端通讯,需要设备之间通过 topic 作为桥梁,我们使用 coap_to_mqttmqtt_to_coap两个 topic ,分别作为 CoAP 到 MQTT 的消息 topic ,和 MQTT 到 CoAP 的消息 topic

MQTT 与 CoAP 都支持发布/订阅机制,MQTT 依靠的是报文中的 Topic 字段,而 CoAP 协议类基于 REST 设计,在 EMQ X Broker 中:

PUTGET: 作为 Publish Subscribe

URI :路径映射 topic ,规则为:主题名 topic_name 转化为路径 /mqtt/topic_name ,即 topic 加上 /mqtt/ 前缀。

URI Query: 路径参数携带了终端信息,包括终端、用户名、密码。

# 示例
put "coap://host:port/mqtt/$topic?c=$client&u=$username&p=$password"
get "coap://host:port/mqtt/$topic?c=$client&u=$username&p=$password"

# -m get | put | post ...
# method 请求方式

# coap://host:port
# CoAP 协议路径格式,host 和 port ,填写 EMQ X Broker 部署的IP,和CoAP插件的端口(默认5683)

# /mqtt/$topic 
# 指 mqtt 的 topic ,需要转换,规则:
# topic 名称 topic_name ,在 CoAP 中需要使用 /mqtt/topic_name

# URI Query
# c :终端
# u :用户名
# p :密码

至此,准备工作已经完成。

Step 2:邀请第一位参会者,MQTT 客户端

将 MQTT X(EMQ 旗下开源 MQTT 桌面客户端)连接至你的 EMQ X Broker,并为它订阅主题 coap_to_mqtt

MQTT 和 CoAP 在 EMQ X 世界的一次「约会」

Step 3:邀请第二位参会者,CoAP 客户端。

本文中使用的 CoAP 客户端是 libcoap

# 先安装 libcoap
# 使用 git 下载,或者使用下载链接 https://github.com/obgm/libcoap/archive/refs/tags/v4.2.1.zip
git clone https://github.com/obgm/libcoap.git
# 如果你使用下载链接下载,unzip 解压
# unzip libcoap-4.2.1.zip

# 进入 libcoap 文件目录
cd libcoap
# 切换至稳定版本 作者使用的是 v4.2.1
# 如果你使用本文中的下载链接下载,不需要切换版本。
git checkout v4.2.1
# 安装配置
./autogen
# ./autogen 的过程中可能会遇到部分依赖缺失的情况(比如 autoconf 和 automake ),按照提示安装对应依赖即可。
./configure --enable-documentation=no --enable-tests=no
# 打包
make

Step 4:开始通信

安装完成后,CoAP 终端 PUT 消息到 coap_to_mqtt 主题。

# CoAP 终端发送消息 hello EMQ X world,  i am coap,topic 为 coap_to_mqtt
./examples/coap-client -m put -e "hello EMQ X world, i am coap"  "coap://127.0.0.1/mqtt/coap_to_mqtt?c=coap20211&u=tom&p=secret"
# 命令中的 127.0.0.1 替换为你的 EMQ X Broker 部署地址

我们可以看到 MQTT X 收到了来自 CoAP 的问候。

MQTT 和 CoAP 在 EMQ X 世界的一次「约会」

现在为 CoAP 终端订阅 mqtt_to_coap 主题。

# CoAP 终端订阅 mqtt_to_coap 主题,-s 20表示订阅维持20秒
./examples/coap-client -m get -s 20 "coap://127.0.0.1/mqtt/mqtt_to_coap?c=client1&u=tom&p=secret"

MQTT X 发送 hello coap, i am mqtt welcome to EMQ X Wrold!mqtt_to_coap 主题。

MQTT 和 CoAP 在 EMQ X 世界的一次「约会」

CoAP 也收到了来自 MQTT 的回应。

./examples/coap-client -m get -s 20 "coap://127.0.0.1/mqtt/mqtt_to_coap?c=client1&u=tom&p=secret"
hello coap , i am mqtt ,welcome to EMQ World

至此,我们完成了以 EMQ X Broker 作为媒介的一次端到端通信流程,让 MQTT 和 CoAP 在 EMQ X 世界里成功「约会」。

在 EMQ X World,不仅有 MQTT、CoAP、LWM2M、JT808 以及未来将支持的更多不同物联网协议插件,同时我们也为你提供了插件的开发模板。我们期待在这里,所有的物联网设备都能相会,碰撞出耀眼的火花,照亮物联网的世界。

本文作者

黄 迪 EMQ X 研发工程师,EMQ X Broker & Enterprise

周子博 EMQ X 开源项目经理,主要负责项目管理和社区维护,在 IoT 领域深耕多年,有着非常丰富的行业经验

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.cn/blog/url-mqtt-and-coap

点赞
收藏
评论区
推荐文章
物联网云平台盘点
物联网云平台是一个专门为物联网定制的云平台,物联网与普通的互联网是不同的:物联网终端设备比普通互联网手机端,电脑端多出几个数量级;普通互联网对http,https协议访问相对单一,而对https有些设备不能访问,需要轻量级的访问协议。物联网场景的多样,使得没有任何一个产品能解决所有问题。物联网平台也一样,今天来盘点一下国内一些物联网平台的主要特点。一站式托管
Stella981 Stella981
3年前
JavaScript在物联网中的应用
凡是能用JavaScript写出来的,最终都会用JavaScript写出来。——Atwood定律在那篇《最流行的编程语言JavaScript能做什么?(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMjM5Mjg
Wesley13 Wesley13
3年前
CDN+MEC风口来袭,落寞的老牌厂商能否乘风而起?
编者按:CDN行业经历腥风血雨的价格战后,市场格局重新洗牌,在价格战中被大肆围剿传统CDN厂商又该何去何从?MEC会是他们在CDN赛道下半场的取胜之钥吗?随着万物互联,移动直播、短视频、AR及AI等新型互联网服务的兴起,流量迎来海量增长,对现有网络的承载能力带来了严峻的挑战,在5G和物联网时代,CDN作为“互联网网速加速器”也迎来了新的发展
日益迫近的物联网安全
近年来,行业一直兼具潜力和风险,因此安全性一直是第一因素。目前物联网产业规模已达2.4万亿元,产业的发展壮大离不开安全技术的支撑。然而,通过不断涌现的物联网安全事件,物联网的安全形势显然不容乐观。纵观近年来的物联网安全事件,攻击者在设备端的攻击大多是通过逆向固件和逆向应用来获取核心算法和协议来完成的。2021年3月,黑客入侵硅谷安全系统初创公司Verkada
存储资源盘活系统,“盘活”物联网架构难题(上)
物联网Internetofthings(IoT),是一种与物有关的互联网,通过射频识别、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化识别、定位、跟踪、监控和管理
智慧物流设备和物联网组件化
与人工智能算法一样,智能物流设备和物联网近年来发展迅速,其在仓储、物流、运输、制造(阿里的灰犀牛)等领域的应用加速了自动化和无人供应链的进程。物联网开启万物互联时代,打通现实世界与数字世界的通道。通过传感器,物联网可以将真实的光电信号转化为数据,这