电信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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;