电信nb-iot命令的几种状态及发送机制收集

2024-03-10 14:20

本文主要是介绍电信nb-iot命令的几种状态及发送机制收集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

电信nb-iot命令的几种状态及发送机制收集
平台命令的各状态
平台提供两种命令下发机制:命令立即下发:立即发送收到的命令,如果设备不在线或者没有收到指令则下发失败。命令缓存下发:平台收到命令后放入队列,在设备上线的时候,平台一次递送队列中的命令。
1、DEFAULT
PSM模式下,命令刚到平台时,它的状态是“DEFAULT”
2、PENDING(缓存的命令待送达)
查看命令是否能立即下发,如果不能,状态更新为“PENDING”
3、SENT(立即下发的命令待送达)
设备上报数据后,命令下发下去(但是不确定命令是否到达设备),消息是CON,状态更新为“SENT”
4、DELIVERED(已送达)
平台收到与CON消息对应的ACK后(但是不确定命令是否执行成功),状态更新为“DELIVERED”
5、SUCCESSFUL(成功)
平台收到命令的执行结果上报后将命令状态更新为“SUCCESSFUL”
6、FAILED(失败)
如果命令在下发过程中报错,则直接将命令状态更新为“FAILED”
7、EXPIRED(TTL超时)
在设定的时间内未执行下发命令操作,命令状态为“EXPIRED”
 8、TIMEOUT(等待ACK超时)
 如果ACK超时(PSM和DRX按照CoAP协议层超时时间,EDRX按照EDRX周期+往返时延(默认20s)),向IOCM更新设备状态为TIMEOUT
9、CANCELED(被取消)
先调用修改设备接口,然后再调用查询命令状态,状态为被取消“CANCELED”
注:若在设备对平台应答中实现了mid(非必填参数),并且命令执行结果已上报成功,则:
1) 命令执行结果相应中的状态(SUCCESSFUL/FAILED)会刷新到平台数据库中该命令记录;
2) 平台推送给APP Server的命令执行结果通知中携带commandId;
3) APP Server查询会得到该命令的状态为SUCCESSFUL/FAILED。
若在设备对平台应答中未实现mid,并且命令执行结果已上报成功,则:
1) 命令执行结果响应中的状态(SUCCESSFUL/FAILED)不会刷新到平台数据库中该命令记录;
2) 平台推送给APP Server的命令执行结果通知中不携带commandId;
3) APP Server查询会得到该命令的状态为DELIVERED。

 


PSM模式下,命令刚下发到平台时,它的状态是“DEFAULT”,然后查看是否能否立即下发,若不能,状态更新为“PENDING”;设备上报数据后,命令下发下去(但不确定命令是否到达设备),消息是CON,状态更新为“SENT”;平台收到与CON消息对应的ACK后(但不确定命令是否执行成功),状态更新为“DELIVERED”;平台收到命令的执行结果上报后将命令状态更新为“SUCCESSFUL”或“failed”。如果在下发过程中报错,则直接将命令状态更新为“FAILED”。

若平台缓存有多条命令,下一条命令的下发会在“收到本次下发的命令的CON消息的ACK后”下发。多条命令就这样依次下发。如果由于某种原因导致平台没有收到某命令ACK(原因是多样的,也有可能设备一直没有收到该命令而导致无法回复ACK),下发过程中断,下一条命令就不会下发,就会在下一次设备有数据上报时下发。

 

平台下发一个命令到设备,状态更新为sent,但不确定该命令是否到达设备。如果收到设备返回的ACK, 表明命令到达设备,状态就更新为delivered。对于一个设备,平台每一个时间点至多只允许一条命令处于sent状态,如果下发的CON消息未收到ACK消息,CoAP自带重发机制(算上那一次下发的,大概一共会重发五次),如果平台还是未收到ACK,就会将该命令状态更新为timeout。
平台不会让命令一直处于sent状态,因为这会阻塞后续命令的下发。

 

 

Q:请问在北向开发中,如何向设备立即发送数据,而不是缓存发送数据。

A:平台提供两种命令下发机制:立即下发:立即发送收到的命令,如果设备不在线或者设备没收到指令则下发失败。立即下发适合对命令实时性有要求的场景,比如路灯开关灯,燃气表开关阀。使用立即下发时,应用需要自己保证下发的时机。缓存下发:平台收到命令后放入队列。在设备上线的时候,平台依次下发命令队列中的命令。缓存下发适合对命令实时性要求不高的场景,比如配置水表的参数。NA向IoT联接管理平台下发命令时,携带参数expireTime(简称TTL,表示最大缓存时间)。expireTime=0:命令立即下发。expireTime>0:命令缓存下发。在创建设备命令API中,只要将expireTime参数设置为0,即表示立即下发。

Q:在进行OceanConnect立即命令下发时,平台显示历史命令等待发送,一直等到终端设备发送上报数据才下发,按照开发者论坛里面【自调试】立即命令下发失败怎么办? 进行操作,并没有立即发送。

A:网络注册成功后,如果一段时间内没有数据收发,链路就会被网络侧Release掉,这个是NB 网络特征决定的。 Connect-->idle-->psm, 链路被Release掉就进入IDLE了。NB 为低功耗设计, 进入IDLE 和PSM才能达到省电;  另外一直处于connect态也会占用带宽,NB是窄带应用,这样会导致上线率低。目前运营商有SIM卡业务可以不带PSM,但是还有IDLE (DRX or EDRX)。立即下发命令不成功,需要确认网络当时是否处于connect态。


这篇关于电信nb-iot命令的几种状态及发送机制收集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/794499

相关文章

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

Redis的持久化之RDB和AOF机制详解

《Redis的持久化之RDB和AOF机制详解》:本文主要介绍Redis的持久化之RDB和AOF机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述RDB(Redis Database)核心原理触发方式手动触发自动触发AOF(Append-Only File)核

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1