本篇内容主要讲解“MQTT和CoAP在EMQ X里怎么实现连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MQTT和CoAP在EMQ X里怎么实现连接”吧!
成都创新互联公司长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为白塔企业提供专业的网站设计、网站制作,白塔网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
关于如何安装和启动 EMQ X Broker,你可以在这里找到帮助。
打开 Dashboard,点击左侧插件,右侧搜索 CoAP ,点击启动,运行 CoAP 插件
( 默认端口 5683 )。
MQTT 的 PUB/SUB
模型中,为了实现端到端通讯,需要设备之间通过 topic
作为桥梁,我们使用 coap_to_mqtt
和 mqtt_to_coap
两个 topic
,分别作为 CoAP 到 MQTT 的消息 topic
,和 MQTT 到 CoAP 的消息 topic
。
MQTT 与 CoAP 都支持发布/订阅机制,MQTT 依靠的是报文中的 Topic 字段,而 CoAP 协议类基于 REST 设计,在 EMQ X Broker 中:
PUT
和 GET
: 作为 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 :密码
至此,准备工作已经完成。
将 MQTT X(EMQ 旗下开源 MQTT 桌面客户端)连接至你的 EMQ X Broker,并为它订阅主题 coap_to_mqtt
。
本文中使用的 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
安装完成后,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 的问候。
现在为 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
主题。
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
到此,相信大家对“MQTT和CoAP在EMQ X里怎么实现连接”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!