NBIoT模组NB35-A开发(3)— 使用UDP模拟CoAP协议连接到EMQ

NBIoT模组NB35-A开发(3)— 使用UDP模拟CoAP协议连接到EMQ

一、直接发送消息到EMQ

先发送一条消息到EMQ再说,关于EMQ的CoAP使用可以参考:https://blog.csdn.net/qq_38113006/article/details/105859481#t5

创建一个UDPsocket

AT+NSOCR=DGRAM,17,0

得到socket编号1
在这里插入图片描述
接下来使用这个socket发送到EMQ

AT+NSOST=1,39.96.35.207,5683,47,420369495562b46d71747406746f7069633149633d636c69656e743205753d746f6d08703d736563726574ff313234

在这里插入图片描述
然后可以看到,在EMQ平台订阅topic1主题的websocket接收到了消息
在这里插入图片描述
可以看到,发送成功

二、发送数据解析

我们来看一下我们发送的这一串数据,将其分割开来:

42036949    5562    b46d71747406746f7069633149633d636c69656e743205753d746f6d08703d736563726574    ff    313234
1、第一段数据42036949

第一个字节数据42,用二进制表示为01000010‬

  • 最高两位为版本号,即01,表示CoAP版本为 V1版本
  • 接下来两位为报文形式,即00,表示为CON报文,需要被确认的请求
  • 然后剩下的四位为Token的长度,即Token的长度为2个字节

第二个字节数据03,用二进制表示为0000‭0011‬‬

  • 这个字节是Method Code,即方法代码,前3位一部分,后5位一部分,为了方便描述它被写成了c.dd结构,这里即为0.03,表示PUT。其他的方法:GET ->0.01POST->0.02DELETE->0.04

第三和第四字节数据6949,为Message ID(消息编号),每个CoAP消息都有一个ID,每条消息要唯一。

2、第二段数据5562

第二段数据为标记 Token,其长度由第一段数据的Token长度决定,通过token,客户端收到响应后,取出Token,就可以知道该响应是针对之前哪个请求回复的。Token是可选的。

3、第三段数据
b46d71747406746f7069633149633d636c69656e743205753d746f6d08703d736563726574

这一长串数据表示的是:/mqtt/topic1?c=client2&u=tom&p=secret,其为选项 Options,可以看到,这里面可以有多个选项。

4、第四段数据ff

这是CoAP报文和具体负载之间的分隔符。

5、第五段数据

实际携带的数据内容,313234从16进制转化为字符串即为124

数据解析参考自博客:CoAP协议学习笔记 1.2 一张表了解 CoAP 协议
和视频:【COAP】COAP协议详细讲解(二)服务器测试与抓包分析

三、收到的回复消息

发送数据后,我们可以看到NBIoT收到了6个字节的回复数据
在这里插入图片描述
我们将其读取出来
在这里插入图片描述
得到的数据为624469495562
同样的,将其分段解析:

62   44  6949  5562

第一段数据62,用二进制表示为‭01100010‬

  • 最高两位为版本号,即01,表示CoAP版本为 V1版本
  • 接下来两位为报文形式,即10,表示为ACK报文,应答消息,接受到CON消息的响应。
  • 然后剩下的四位为Token的长度,即Token的长度为2个字节

第二段数据44,用二进制表示为‭01000100‬‬‬

  • 这个字节是Response codes,即响应代码,前3位一部分,后5位一部分,为了方便描述它被写成了c.dd结构,这里即为2.04,表示Changed。其他的响应:

    +------------------+--------------------------------+---------------+
    | Code 			   | Description 					| 				|
    +------------------+--------------------------------+---------------+
    | 2.01 (65, 0x41)  | Created 						| Success 		|
    | 2.02 (66, 0x42)  | Deleted 						| 				|
    | 2.03 (67, 0x43)  | Valid 							| 				|
    | 2.04 (68, 0x44)  | Changed 						| 				|
    | 2.05 (69, 0x45)  | Content 						| 				|
    | 2.31 (95, 0x5F)  | Continue 						| 				|
    +------------------+--------------------------------+---------------+
    | 4.00 (128, 0x80) | Bad Request 					| Client Error 	|
    | 4.01 (129, 0x81) | Unauthorized 					| 				|
    | 4.02 (130, 0x82) | Bad Option 					| 				|
    | 4.03 (131, 0x83) | Forbidden 						| 				|
    | 4.04 (132, 0x84) | Not Found 						| 				|
    | 4.05 (133, 0x85) | Method Not Allowed 			| 				|
    | 4.06 (134, 0x86) | Not Acceptable 				| 				|
    | 4.08 (136, 0x88) | Request Entity Incomplete 		| 				|
    | 4.12 (140, 0x8C) | Precondition Failed 			| 				|
    | 4.13 (141, 0x8D) | Request Entity Too Large 		| 				|
    | 4.15 (143, 0x8F) | Unsupported Content-Format 	| 				|
    +------------------+--------------------------------+---------------+
    | 5.00 (160, 0xA0) | Internal Server Error 			| Server Error 	|
    | 5.01 (161, 0xA1) | Not Implemented 				| 				|
    | 5.02 (162, 0xA2) | Bad Gateway 					| 				|
    | 5.03 (163, 0xA3) | Service Unavailable 			| 				|
    | 5.04 (164, 0xA4) | Gateway Timeout 				| 				|
    | 5.05 (165, 0xA5) | Proxying Not Supported 		| 				|
    +------------------+--------------------------------+---------------+
    

第三段数据6949,为Message ID(消息编号)。
第四段数据5562为标记 Token,其长度由第一段数据的Token长度决定,通过token,客户端收到响应后,取出Token,就可以知道该响应是针对之前哪个请求回复的。Token是可选的。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
E53_SC1扩展板是一款尺寸为5×3cm的案例扩展板,它可以与满足标准设计的开发板直接适配。该扩展板上使用了BH1750光照强度传感器,该传感器采用IIC通信接口。因此,在使用E53_SC1扩展板时,除了复制STM32CubeMX生成的i2c.h和i2c.c文件外,还需要复制包含了BH1750传感器驱动的E53_SC1扩展板驱动文件。开发板方面,可以使用小熊派开发板(含NB卡、NB35-A通信扩展板、E53_SC1案例扩展板等),并选择适合的IDE开发软件,如IoT Studio、Liteos Studio、MDK Keilv5或VSCode(需安装IOT Link插件)。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [小熊派华为物联网操作系统LiteOS裸机驱动移植03-E53_SC1扩展板驱动及使用](https://blog.csdn.net/BearPi/article/details/104050484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于STM32小熊派开发智慧路灯项目实践](https://blog.csdn.net/m0_61934621/article/details/128474216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值