CoAP 协议是一种支持在低功耗、低功率等受限设备间进行通信的物联网协议,这些设备往往都运行在受限网络中,因此 CoAP 协议设计得十分精炼, 同时采用 UDP 协议进行数据传输,所以能够很好的适应受限网络环境。 CoAP 通过类似于 HTTP 操作的方式,在受限设备组成的 M2M 网络中,对设备上抽象的资源进行操作,这样能够十分简洁、高效地实现受限设备间同步、 异步的信息交流。
CoAP 是专为受限硬件、环境而设计的通信协议,在受限网络中能够良好的工作,但如果受限网络需要和外部网络进行沟通,CoAP 则不能很好的适应。另外,因为 CoAP 设计时更多考虑的是 M2M 网络模型,所以 CoAP 缺乏对资源处理中心的支持(基于 CoAP 的 LwM2M 协议为此专门引入了资源的注册、资源的服务等概念)。
以上问题可以通过 EMQX 消息服务器得到很好的解决。本文就将介绍如何使用 EMQX 接入 CoAP 协议,实现 CoAP 协议设备与外部的沟通。
EMQX 的 CoAP 协议接入方式
对于需要和外部进行沟通的 CoAP 设备,使用 EMQX 作为消息中间件,可以很方便地实现以下功能:
- 对设备进行认证,拒绝不可信设备的数据
- 对资源进行权限管理,可以指定不同的设备对某个资源拥有不同的读/写权限
- 可以作为不同网络 CoAP 设备间的信息传输中心
- 可以作为其他应用,比如 CoAP 管理应用、数据分析应用和 CoAP 设备、网络间的接入中间件
EMQX 中提供了两种不同的 CoAP 接入方式,涵盖了大多数 CoAP 的业务场景,且接入简单,支持良好,不需对 CoAP 协议本身进行改动。而对原有的 CoAP 设备、应用,接入 EMQX 的成本也很小。
URL 模型
EMQX 通过 URL path 和 queryString 来实现对 CoAP 的接入,CoAP 接入时需要按照下面的规则组织 URL 模型:
coap 连接类型://Host:Port/模式/TopicName?c=客户端Id&u=用户名&p=密码
其中,coap 连接类型可以为:
- coap:使用普通的 UDP 进行传输
- coaps:启用安全传输层,关于如何启用 coaps (包括单向认证、双向认证),详细见加密通信配置
模式 目前有: MQTT 和 PubSub 两种,具体区别将会在下文详细介绍。
TopicName : EMQX 中使用 Topic 作为 CoAP 中的资源标识符,一个 Topic 就代表一个资源对象, 而 Topic 可以为任意 UTF8 字符串,允许多个层级,比如 coap/ 、coap/test/queryString。
URL 中的 c、u、p 三个字段是必须的,其中:
- c 代表客户端 ID,为任意字符串,理论上每个客户端 ID 都应该需要是唯一的
- u 和 p 分别代码用户名和密码,需要在 EMQ X 的认证模块中预先设置好

本文介绍了如何利用EMQX消息服务器解决CoAP协议在受限网络与外部网络通信的问题。EMQX支持两种CoAP接入方式,包括MQTT模式和PubSub模式,能对设备进行认证、权限管理,并作为信息交换中心。配置方面,EMQX支持非加密和加密通信,提供详细的配置示例。通过测试用例展示了如何使用libcoap进行CoAP的PubSub和MQTT模式测试。
最低0.47元/天 解锁文章
268

被折叠的 条评论
为什么被折叠?



