
# LWM2M/CoAP接入相关问题
#### LWM2M/CoAP协议设备接入开发流程
1. 平台侧开发：包括创建产品、开发产品模型、开发编解码插件、注册设备。详细操作指导请参考[创建产品](https://support.huaweicloud.com/devg-iothub/iot_01_0053.html)、[开发产品模型](https://support.huaweicloud.com/devg-iothub/iot_02_0005.html)、[开发编解码插件](https://support.huaweicloud.com/devg-iothub/iot_02_0008.html)、[注册单个设备](https://support.huaweicloud.com/usermanual-iothub/iot_01_0031.html)。
2. 设备侧开发：使用模组、设备侧Tiny SDK接入。详细操作指导请参考[通过华为认证模组接入](https://support.huaweicloud.com/devg-iothub/iot_02_2134.html)、[IoT Device SDK Tiny使用指南（C）](https://support.huaweicloud.com/sdkreference-iothub/iot_02_9980.html)
3. （可选）应用侧开发。
 
#### 如何检测NB网络信号？
发送指令AT+CSQ命令查询NB信号强度。
返回值为+CSQ：\<rssi\>,\<ber\>
rssi越大，表示信号越强。信号强度和rssi换算公式为：信号强度=113dBm+(rssi\*2)
- rssi=0，表示信号非常差。
- rssi=31，表示信号质量非常强。
- rssi=99，表示没有信号。
- ber字段未使用，恒等于99。
没有信号或信号强度过低，需要联系运营商处理
#### NB模组附着网络失败如何处理？
1. 请先执行AT+NUESTATS，查看是否有网络信号。
2. 若Singal power等于0，表示没有收到网络信号， 请检查基站对应的频带否放开，或把设备换个信号强的地方再尝试。
3. 执行AT+NBAND？查询设置的频段跟模组本身的频段是不是一样的。
 
 #### NB模组绑定设备失败怎么办？
使用NB模组和真实NB网络接入物联网平台时，第一步就是接入平台绑定设备。
如果设备绑定失败，可能的原因有很多种，您可按照下述指导逐个定位排查问题。
- **在物联网平台上注册设备时，设备标识（对应应用侧注册设备接口的nodeId）是否为NB模组的IMEI号？timeout设置的时间是否够长？**
  使用NB模组接入物联网平台时，必须直接使用NB模组的IMEI号作为nodeId。同时，timeout设置的时间也不要太短，设备必须在注册成功后的这个时间内发送绑定请求到物联网平台。
  
- **注册设备时的产品信息是否和产品模型一致？**
  使用控制台注册设备时注意选择正确的产品模型。
  
- **NB模组是否能收到NB基站的信号？**
  NB模组，通过AT+CSQ?命令查询NB信号强度。没有信号或强度过低，需要联系运营商进行调整。
  
- **NB模组是否能够附着网络？**
  NB模组，通过AT+CEREG？获取注册网络信息，如果返回状态为未注册或者注册被拒绝，则联系运营商，进行沟通。可能是NB模组的版本与运营商基站的版本不匹配。
  
- **NB模组是否能够ping通华为云物联网平台？**
  NB模组，通过AT+NPING命令，尝试ping华为云物联网平台。如果无法ping通，则说明运营商网络无法连接到公网。则需要联系运营商，询问该地运营商的核心网是否没有连到公网，是否只能连接该地运营商的物联网平台；或者与运营商协商，看怎么能够打通隧道，连到公网。
  
- **NB模组是否正确设置平台的域名和端口？**
  NB模组，通过AT+NCDP命令，设置连接的华为云物联网平台的域名和端口。域名和端口请登录设备接入管理控制台，查看协议为CoAP或CoAPS的设备对接信息。
  
- **发送给NB模组的AT命令是否以\\r\\n结尾？**
  发送给NB模组的每条指令都必须以\\r\\n结尾。如果不以\\r\\n结尾，命令会在NB模组中缓存。
  
- **NB模组检测发送的数据上报状态是否为SENT?**
  NB模组，通过AT+NQMGS，检查已经发送的命令状态。
  PENDING，表示数据已发出，但是平台没有进行响应。
  SENT，表示数据已发出，且平台进行了响应。
  ERROR，表示数据上报异常。
  如果状态为PENDING和ERROR，一般来说是网络问题，需要从基站和核心网侧进行分析。
  
- **NB模组发送的AT+NMGS数据是否能够被正常解析？**
  使用[编解码插件检查工具](https://res-static.hc-cdn.cn/aem/content/dam/cloudbu-site/archive/commons/web_resoure/cms/static/upload/files/sdk/NB-IoT_Encoding.zip)，检测自己准备发送的码流是否可被正常解析。
  
 
 #### NB模组无法正常上报数据怎么办？
NB模组绑定设备是和第一条数据上报一起完成的，如果NB模组绑定失败，即NB模组发送数据给平台，但是从物联网平台上看到的设备仍然未激活，请参照[NB模组绑定设备失败怎么办？]进行排查。
以下定位指导，是基于物联网平台上看到设备已经在线的前提。
- **发送给NB模组的AT+NMGS命令是否以\\r\\n结尾？**
  发送给NB模组的每条指令都必须以\\r\\n结尾。如果不以\\r\\n结尾，命令会在NB模组中缓存。
  
- **发送的AT+NMGS的payload，是否可以被编解码插件正确解析** ？
  使用[编解码插件检查工具](https://res-static.hc-cdn.cn/aem/content/dam/cloudbu-site/archive/commons/web_resoure/cms/static/upload/files/sdk/NB-IoT_Encoding.zip)，检测自己准备发送的码流中的payload，查看解析后输出的消息结构是否正确，是否符合产品模型定义。
  
 
#### NB设备接入时，出现513错误？
终端设备每次上电后，都会向物联网平台发起TUP注册流程。TUP协议为华为私有协议，包装在CoAP协议之上，与LWM2M协议类似。海思芯片设置TUP注册过程不能超过4s，如果在4s内未完成TUP注册，则上报513错误。
当出现此513错误时，可以按照如下方法进行处理：
1. 当网络环境状态不佳时，会导致注册过程概率性超过4s，从而出现513错误。请联系NB网络运营商检查网络状态。
2. 通过AT+NMGS发送业务数据会触发注册，如果4秒钟内没有收到t/d资源（收发业务数据资源）的订阅，就会返回错误，但依赖CoAP层的重传继续注册，最长160秒后还是没有收到t/d资源的订阅，这次注册就会失败。160s基本可以保障终端设备能够注册成功，4s返回ERROR只会丢掉第一包的数据。建议设备重启并再发送AT+NMGS触发上述注册流程。 可通过 AT+NMSTATUS 查询注册状态，返回+NMSTATUS:MO_DATA_ENABLED 表示成功注册。
   
 
#### 同一个NB卡，使用一个设备能上报，在另一个设备里无法上报？
有的运营商的卡是有机卡绑定功能的，当换设备时，可能就无法使用了，建议联系运营商进行处理。
#### 在物联网平台注册好NB设备，真实设备无法接入物联网平台
- 在模组执行AT+CGATT=1，查看是否报错。如果报错：
  - 需要向NB网络运营商确认NB卡的状态。
  
  - 需要向模组厂家确认模组的状态。
   
- 如果执行AT+CGATT=1后，设备入网成功，则需确认设备接入时，使用的物联网平台的IP和端口是否正确。
![](https://support.huaweicloud.com/iothub_faq/public_sys-resources/note_3.0-zh-cn.png)
IP和端口从物联网平台服务商获取，5683端口为非加密方式接入端口，5684端口为加密方式接入端口。
