命令下发失败或设备收不到命令如何处理?
调测设备命令下发前,请务必先调通设备上报数据,确保设备能成功上报数据至物联网平台。
- 给使用LWM2M/CoAP协议接入的设备,例如NB-IoT设备下发命令时需要使用创建设备命令接口,如果调用接口失败请参考接口文档的错误码描述修改请求重新发送。需要注意的是,“paras”参数为必选,即使您下发的命令并不需要参数,也必须携带一个非空的“paras”。
- 给使用MQTT协议接入的设备,例如集成了AgentLite SDK的设备下发命令时需要使用设备服务调用接口,如果调用接口失败请参考接口文档的错误码描述修改请求重新发送。
接口调用成功后,在开发中心的
中查看命令状态:
- 如果命令状态为失败,则:
- 如果命令状态为已送达,说明物联网平台已经收到设备返回的ACK,物联网平台与设备之间的通信正常,请获取设备日志进行分析。
若设备使用了NB模组,请检查设备是否正确的从NB模块中取出了命令:
如果提前设置了AT+NNMI=1,则NB模块将自动通过串口推送收到的数据上报响应和下发的命令。
如果没有设置,则NB模块将对数据上报响应和下发的命令进行缓存,需要设备发送AT+NMGR,从缓冲区中读取数据上报响应和下发的命令。在这种模式下,发送AT+NMGR的频率,需要比发送数据上报的命令AT+NMGS的频率更高,否则,将大量的只获取到数据上报响应,从而造成下发命令的延迟。
- 如果命令状态为等待,并且省电模式为PSM,则表示下发的是缓存命令(调用创建设备命令时设置expireTime大于0),需设备上报一条数据后才能收到命令。
设备侧的省电模式需要联系运营商确认,物联网平台侧可在设备管理平台的“应用列表”点击应用查看
(物联网平台侧设置的省电模式需要与设备侧一致,不一致时请以设备侧为准并修改物联网平台侧的设置)。 - 如果命令状态为超期,则表示下发的是缓存命令,且命令下发后expireTime指定的时间内设备都处于PSM状态(低功耗状态),需要再下发一条命令并在expireTime指定的时间内控制设备上报一条数据脱离PSM状态。