CoAP是一种基于UDP的物联网协议,相较mqtt更加简单。
CoAP服务器可以通过EMQ中的CoAP 接入网关插件将其信息转换为mqtt信息,方便存储以及其他节点接收,插件使用方法在EMQ官方文档中有详细介绍以及例程。配置全部默认即可。
CoAP 协议网关https://www.emqx.io/docs/zh/v4.4/modules/coap_protocol.html#coap-%E5%8D%8F%E8%AE%AE%E7%BD%91%E5%85%B3
插件运行成功后,可以按照EMQ手册中给的例程,使用libcoap进行测试,可以看到,信息发送后,订阅相关主题已经能够成功接收到信息。注意,在这里需要将IP地址修改为自己服务器对应ip。
/usr/bin/coap-client -m put -e "hello EMQ X world, i am coap, in ubuntu" "coap://127.0.0.1/mqtt/coap_to_mqtt?c=123"
?接着,我使用了安信可的EC-01模块来尝试发送信息到EMQ平台,首先按照手册,上电测试。
AT //判断模组是否上电开机成功
AT+CFUN=1 //关闭飞行模式
AT+CEREG? //判断 PS 域附着状态,第二个参数为 1 或 5 表示附着正常
接着需要创建CoAP客户端,以及配置CoAP协议信息。
其中在抓包数据中可以看到,路径信息"/mqtt/coap_to_mqtt"以及clintID以及连接账户密码等配置是以CoAP Options形式发送的,因此需要额外配置。
?配置代码如下:
AT+COAPCREATE=5683 //创建CoAP客户端,指定端口号
AT+COAPHEAD=1 //添加CoAP头,随机生成消息ID和令牌值
AT+COAPOPTION=3,11,"mqtt",11,"coap_to_mqtt",15,"c=123" //添加CoAP选项
//在示例url中“/mqtt/topic1“需要以Uri-Path添加,ClientID,用户名,密码需要以Uri-Query添加,在这里只添加了ClientID
接下来就可以通过EC-01来发送信息给服务器了:
AT+COAPSEND=0,3,"URL",5683,28,"hello EMQ X world, i am coap"
|