BC26通过LWM2M接入电信AEP平台(透传模式)
非透传模式 Json格式接入https://blog.csdn.net/qlexcel/article/details/117484450
LWM2M协议简介
LwM2M(lightweight Machine to Machine),是由OMA(open Mobile Alliance)定义的物联网协议, 主要使用在资源受限(包括存储、 功耗等)的NB终端。
协议特点:
LWM2M 把设备上的服务抽象为 Object 和 Resource, 并在 XML 文件中定义各种 Object 的属性和功能。
LWM2M Objects: 每个对象对应客户端的某个特定功能实体。 LWM2M 规范定义了标准Objects, 比如urn:oma:lwm2m:oma:1; (LWM2M Server Object)、 urn:oma:lwm2m:oma:3; (Device Object), 每个object下可以有很多resource。 比如Device Object可以有Manufacturer, Model Number等resource。
LWM2M Protocol定义了一些逻辑操作, 比如Read、 Write、 Execute等。
CoAP是IETF定义的Constrained Application Protocol, 用来做LWM2M的传输层, 下层可以是UDP或者SMS, UDP是必须支持的, SMS可选。
DTLS用来保证客户端和服务器间的安全性。
支持IMEI认证和SM9认证两种设备认证方式。
AEP平台操作
进入AEP官网,完成注册 https://www.ctwing.cn/
进入“AEP控制台”
选择“设备接入”
选择“LWM2M”协议
创建产品
填写的信息如上图所示,下面介绍下意义。
产品名称和产品类别根据实际需要填写, 网络类型选择NB-IoT, 通讯协议选择 LWM2M。
认证方式支持IMEI认证和SM9认证, SM9认证需要在物联网市场购买安全服务
- IMEI认证, 平台对设备的IMEI进行有效性、 唯一性校验
- SM9认证, 平台为设备提供一对公钥-私钥, 设备侧用私钥进行签名, 平台用公钥验签
Endpoint 即Endpoint Client Name, 是LWM2M设备的标识, 平台支持的Endpoint格式有四种:
- IMEI, 不带前缀的15位IMEI号
- urn:imei:##################, 前缀“urn:imei:” + IMEI的格式
- urn:imei-imsi:##################-#####################, 前缀“urn:imei-imsi:” + IMEI + IMSI的格式
- urn:imei+sm9:###############+###…, 前缀“urn:imei+sm9:” + IMEI + SM9签名信息
前2种只携带IMEI信息; 第3种携带了IMEI和IMSI信息, 适用于需要上报IMSI的场景; 第4种是SM9认证方式必须使用的格式。 需要根据具体的通信模组选择使用哪种格式, 并保证设备登录时携带的Endpoint格式与产品的Endpoint格式一致, 否则认证失败。
是否已有电信官方认证通过的profile, 可以支持lwm2m协议设备由原NB网关迁移到AEP平台上。 选择该模式的产品, 可通过接口将经电信官
方认证的profile文件上传, 平台默认将profile文件转换为物模型形式, 产品服务完全按照profile文件定义。
透传标记只针对Object19有效。 选择非透传, 需要在平台添加属性及服务, 用于数据的解析; 选择透传, 平台则不对Object19的数据进行解
析。
省电模式支持PSM、 DRX、 eDRX三种, 根据终端支持的类型进行选择
- PSM模式: 设备在数据连接终止或周期性TAU完成后进入PSM状态, PSM态的设备处于休眠状态, 不再侦听信号。 平台的下行数据不会立
即下发, 缓存直到设备退出PSM态才会下发。 - DRX模式: 非连续接收模式, 由于DRX周期短, 平台下行数据可以立即下发(如果设备在注册时Binding Mode支持Qmode,则按Qmode方
式下发指令, 即采用空闲时间窗进行激活态到休眠态的切换) 。 - eDRX模式: 增强型非连续接收, DRX周期更长, 对时延要求高, 需要根据设备是否休眠选择消息缓存或者立即下发。 创建eDRX模式的产品, 需要输入设备实际的eDRX周期, 用于下发指令的超时时间判断。
创建好后,在产品中心中出现一个产品:
在详情中可以看到很多信息
拖到最下面把服务器IP和端口号记好,后面模组接入要用
添加设备
往刚才创建的产品中添加新的设备。一个产品中可以有很多个设备。比如一个智能家居产品,可以包含扫地机器人设备、烟感设备等。
设备名称自定义即可,填写NB模组的IMEI,保持默认开启自动订阅。
IMEI长度为8-17个字节, 它是设备的唯一标识, 平台不允许重复添加
选择自动订阅, 平台会针对设备支持的Object自动发起Observe流程, 否则需要手动发起Observe流程。
电信AEP平台接受的数据格式
经过上面的步骤,在平台上建立起了模组对应IMEI号的设备。接下来就需要模组给平台上的该设备上传或下载数据了。首先看下平台接受的数据格式。
Object 19 ( LwM2M APPDATA) 可以用于应用层业务数据的封装, 实现包括业务数据上报、 业务指令下发、 终端事件上报等功能。
目前平台仅支持Data字段, 其他字段暂时不支持, 即:
- 消息上行通过/19/0/0传送
- 消息下行通过/19/1/0传送
对于Data字段, 平台既支持数据透传也支持数据解析( 非透传) 。对于非透传设备, 数据格式支持紧凑二进制和Json两种格式。
一、 非透传设备(透传模式可以忽略)
非透传设备上报的业务数据, 平台需要对业务数据进行解析, 因此数据格式必须遵守平台关于Object19的约定, 目前Object19支持紧凑二进制和Json两种数据格式。
1、 紧凑二进制格式
业务数据上报、 事件上报、 无线参数上报的Data字段编码格式:
- CMDType: 必填字段, 1Byte, 数据上报-0x02; 事件上报-0x07; 无线参数上报-0x03;
- ServiceID: 必填字段, 2Bytes, 填写平台分配的服务ID
- Payload_length: 必填字段, 2Bytes, 根据payload长度填写
- Payload: 类型为Binary, Parameter1、 Parameter2等需要按照对应服务的属性列表的顺序填写, Parameter的类型要与属性类型一致。
业务指令下发、 指令下发响应的Data字段编码格式:
- CMDType: 必填字段, 1Byte, 下行指令固定为0x06, 指令响应固定为0x86
- ServiceID: 必填字段, 2Bytes, 填写平台分配的服务ID
- TaskID: 必填字段, 2Bytes, 由平台分配, 用于关联下发指令和回复响应, 指令和响应中的TaskID必须一致
- Payload_length: 必填字段, 2Bytes, Payload的长度
- Payload: 类型为Binary, 按照服务定义的属性( 或参数) 进行编码和解码
示例1、 设备上报两个属性
服务ID: 1, 属性1: 5个字节的定长字符串“hello”, 属性2: 2个字节的整型, 值为100。 首先需要将属性值转换为十六进制, 字符串“hello”转换
为十六进制为: 0x68656C6C6F(参照ASCII码表转换) , 100的十六进制为0x0064。 编码过程为:
CMDType: 0x02
ServiceID: 0x0001
Payload_length: 0x0007
Payload: 0x68656C6C6F0064
因此19/0/0的Data字段应填: 020001000768656C6C6F0064
示例2、 设备上报的属性为变长字符串
服务ID: 2, 属性: 变长字符串, 长度为5个字节, 值为: “hello”。 变长字符串在编码时需要携带2个字节的长度, 即属性1编码后的数据是
0x000568656C6C6F。 编码过程为:
CMDType: 0x02
ServiceID: 0x0002
Payload_length: 0x0007
Payload: 0x000568656C6C6F
因此19/0/0的Data字段应填: 0200020007000568656C6C6F
示例3、 指令下发和响应
下发的指令服务ID: 8001(0x1F41), TaskID: 1, 参数为1个字节整形: 1-获取当前时间, 0-时钟同步。编码过程为:
CMDType: 0x06
ServiceID: 0x1F41
TaskID: 0x0001
Payload_length: 0x0001
Payload: 01
19/1/0的Data字段为十六进制: 061F410001000101, 解析出指令内容为“获取当前时间”, 设备需要将系统时间通过响应发给平台。
指令响应的服务ID: 9001(0x2329), TaskID: 1, 参数为12字节的定长字符串“201812251300”, 编码过程为:
CMDType: 0x86
ServiceID: 0x2329
TaskID: 0x0001
Payload_length: 0x000C
Payload: 0x323031383132323531333030
指令响应19/0/0的Data字段应填: 8623290001000C323031383132323531333030
2、 JSON格式
业务数据上报、 事件上报、 无线参数上报的Data部分应满足以下格式:
{“serviceId”: XXXX, parameter1:value1, parameter2:value2}
“serviceId”的值为对应服务的服务ID, parameter1、 parameter2对应服务中每个属性, 用属性标识进行替换, value1、 value2对应属性值, 按照定义的属性类型填写。
业务指令下发、 指令下发响应的Data部分应满足以下格式:
{“serviceId”:XXXX, “taskId”:XXXX, parameter:value}
“serviceId”的值为对应服务的服务ID, "taskId"由平台分配, 用于关联下发指令和回复的响应。 parameter和value按照服务定义的属性来填写。
示例
定义如下物模型:
数据上报Data部分数据为
{“serviceId”: 1, “temperature”:36.5, “humidity”:20.5}
指令下发Data部分数据为
{“serviceId”:8001, “taskId”:2, “temperature”:30.5}
指令下发响应Data部分数据为
{“serviceId”:9001, “taskId”:2, “temperature”:30.5}
二、 透传设备
平台对19/0/0、 19/1/0的Data字段不进行解析, 支持任意格式的业务数据的透传。
模组侧操作
本文是介绍的透传模式通信,也就是模组把数据给平台,平台直接接收,模组发送什么,平台就接收到什么数据,不做任何处理。因此就没有非透传设备的那些数据格式了。
1、AT
AT
OK
查看返回OK,模组通信正常
2、AT+CGPADDR=1
AT+CGPADDR=1
+CGPADDR: 1,56.3.104.7OK
检查NB模组的IP地址。
3、AT+QLWCLOSE
AT+QLWCLOSE
OKCLOSE OK
关闭上次的连接。只有建立连接了才能关闭,才会回复OK。如果回复error,不用管,说明没有建立连接。
4、AT+QLWDEL
AT+QLWDEL
OK
删除上次的LWM2M的连接
5、AT+QLWSERV=“221.229.214.202”,5683
AT+QLWSERV="221.229.214.202",5683
OK
设置电信AEP的IP地址和端口号,在产品详情中去看
6、AT+QLWCONF=“866971030565266”
AT+QLWCONF="866971030565266"OK
设置接口LWM2M的NB模组的IMEI号
其中IMEI号可以通过指令 AT+CGSN=1 从模组中获取。
7、AT+QLWADDOBJ=19,0,1,“0”
AT+QLWADDOBJ=19,0,1,"0"
OK
添加 LWM2M对象, 19/0/0 上行链路
8、AT+QLWADDOBJ=19,1,1,“0”
AT+QLWADDOBJ=19,1,1,"0"
OK
添加 LWM2M 对象,19/0/1 下行链路
9、AT+QLWOPEN=0
AT+QLWOPEN=0
OKCONNECT OK+QLWOBSERVE: 0,19,0,0
开始注册IoT平台,并使用直接推送模式
10、AT+QLWCFG=“dataformat”,1,1
AT+QLWCFG="dataformat",1,1
OK
设置发送和接收的数据为十六进制的字符串模式。
11、AT+QLWDATASEND=19,0,0,5,30656C6C6F,0x0000
AT+QLWDATASEND=19,0,0,5,30656C6C6F,0x0000
OK
使用NON模式上报数据,此模式不需要IoT平台应答。
此时可以在AEP平台上去看接收的数据。
先查下设备的ID,并复制
粘贴到搜索框中,点搜索,即可查询到接收到的数据。解码方式要选16进制。
可以看到电信AEP平台接收到的数据与NB模组发送的数据一致。
再通过电信AEP平台下发一条指令12345,这里是字符串,NB模组将收到5字节数据。
因为模组处于PSM状态,不是与基站时刻连接的,因此平台下发数据NB模组不会立马收到,而是等NB模组再次与服务端连接时才会收到。我们再发送一条6字节的十六进制数据202122232425
AT+QLWDATASEND=19,0,0,6,202122232425,0x0000
OK+QLWDATARECV: 19,1,0,5,3132333435
可以看到NB模组收到了5个字节数据:3132333435,这正是服务端下发的数据。
12、AT+QLWCLOSE
AT+QLWCLOSE
OKCLOSE OK
取消电信AEP的LWM2M注册
13、AT+QLWDEL
AT+QLWDEL
OK
删除LWM2M的连接
另外,如果需要以文本字符串的格式透传数据给电信AEP平台,AT指令示例为:
AT+QLWCFG="dataformat",0,0
OK
AT+QLWDATASEND=19,0,0,50,{"serviceId":1,"temperature":36.1,"humidity":30.5},0x0000
OK
完整的AT流程
AT
OK
AT+CGPADDR=1
+CGPADDR: 1,56.70.128.189OK
AT+QLWSERV="221.229.214.202",5683
OK
AT+QLWCONF="866971030565266"
OK
AT+QLWADDOBJ=19,0,1,"0"
OK
AT+QLWADDOBJ=19,1,1,"0"
OK
AT+QLWOPEN=0
OKCONNECT OK+QLWOBSERVE: 0,19,0,0
AT+QLWCFG="dataformat",1,1
OK
AT+QLWDATASEND=19,0,0,5,30656C6C6F,0x0000
OK
AT+QLWDATASEND=19,0,0,6,202122232425,0x0000
OK+QLWDATARECV: 19,1,0,5,3132333435
AT+QLWCFG="dataformat",0,0
OK
AT+QLWDATASEND=19,0,0,50,{"serviceId":1,"temperature":36.1,"humidity":30.5},0x0000
OK
AT+QLWCLOSE
OKCLOSE OK
AT+QLWDEL
OK
BC26通过LWM2M接入电信AEP平台(透传模式)相关推荐
- BC26通过LWM2M接入电信AEP平台(非透传模式 Json格式)
透传模式接入可以看 https://blog.csdn.net/qlexcel/article/details/117217287 LWM2M协议简介 LwM2M(lightweight Mach ...
- 产品 电信nb接口调用_基于NB-IoT平台数据透传模式的应用接入平台设计方法与流程...
本发明涉及互联网.物联网和软件开发技术领域,具体的说,是一种基于NB-IoT平台数据透传模式的应用接入平台设计方法. 背景技术: NB-IoT支持低功耗设备在广域网的蜂窝数据连接,聚焦于低功耗广覆盖( ...
- Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备)
电信的天翼物联网平台CTWing(AIOT)原先是我们俗称的aep,主要用于接入nb-iot设备,当然也可以接入其他的设备,在熟悉AIOT平台后,做后端的我有时候急需终端样品(智能门禁,支付识别终端, ...
- Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-应用订阅端(北向应用)
之前实现了使用Springboot+Netty基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备),模拟设备发送的数据给到了AIOT平台,那么在第三方应用也需要去 ...
- java tcp dtu_使用有人DTU设备接入OneNet(基于TCP透传)
本帖最后由 huizwang 于 2017-4-10 16:49 编辑 本帖是基于<TCP透传功能初探>一文为基础增加使用DTU设备来认识TCP透传功能,步骤如下: 步骤1:创建基于TCP ...
- java tcp dtu_【分享】使用有人DTU设备接入OneNet(基于TCP透传)
本帖是基于<TCP透传功能初探>一文为基础增加使用DTU设备来认识TCP透传功能,步骤如下: 步骤1:创建基于TCP协议的产品(略): 步骤2:创建设备,如下图: QQ截图20170410 ...
- STM32 ESP8266和Java服务器透传模式下的双向通信
系列文章: ESP8266的AP模式与STA模式简单测试 简单的Java服务器和客户端的通信 STM32 ESP8266和Java服务器透传模式下的双向通信 jsp向servlet传输数据 Servl ...
- 虚拟服务器透传步骤,esp8266透传模式设置操作步骤
描述 ESP8266的概述 ESP8266是一个完整且自成体系的Wi-Fi网络解决方案,能够搭载软件应用,或通过另一个应用处理器卸载所有Wi-Fi的网络功能. ESP8266在搭载应用并作为设备中唯一 ...
- ESP8266 wifi模块连接上了热点之后 与服务器建立了tcp连接并进入了透传模式,如果关掉热点wifi模块的tcp连接没有切断,为什么
ESP8266 wifi模块连接上了热点之后 与服务器建立了tcp连接并进入了透传模式,如果关掉热点wifi模块的tcp连接没有切断,为什么? 这个是很多开发者在第一次使用ESP8266模块是会出现的 ...
- sim800c GPRS模块的透传模式
一.透传模式 基于sim800c GPRS模块在建立TCP/IP连接情况下,可以设置进入透传模式,用来接收和发送数据,一旦进入即从串口收到的数据将被打包,然后发送.接收同理. 注意在透传模式下所有的A ...
最新文章
- DigitalOcean云平台的虚拟机推荐
- 干货|用配电安全基础知识及隐患排查重点PPT
- Python入门8_方法,属性,迭代器
- 语言迭代发_从今天开始,每天学点R语言~
- Pyinstaller使用教程
- hadoop MapReduce 输出结果中文乱码解决
- vb 链接 oracle数据库,vb 连接oracle数据库
- Java注解@PostConstruct使用及相关原理分析
- 最详细移动硬盘安装linux过程,装在移动硬盘上的linux系统不能在另一台电脑启动的解决办法
- Windows7/8/10系统中Altera USB-Blaster驱动安装的终极解决办法
- Adjoin the Networks
- (Java蓝桥杯算法)递归方法求Ckn
- 开利完成对广东积微集团的收购; 正威国际与中润超油建设全球最大规模的石墨烯润滑材料生产基地和研发中心 | 能动...
- Mysql将txt文件导入数据库采坑 load data local infile
- alanwang[GDOU] 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入
- 链家房源数据爬取(Scrapy)
- 面试算法高频压轴题——灯泡开关问题
- GraphQL:你的容颜,十万光年
- 用python进行进制转换(二十六进制)
- 第十九章:如何组建团队
热门文章
- 简单分析暴风影音的最新0DAY菜鸟版
- 漫谈程序员系列:程序员到底是什么角色
- 全国高等学校非计算机专业计算机水平考试一级,全国高等学校计算机一级考试选择题题库及答案参考...
- JDY-24M 超级 BLE 蓝牙模块——理解与实践
- 商品展示页面html模板,CSS3电商网站商品展示窗UI模板
- 【剑指Offer学习】【所有面试题汇总】
- Python cx_Oracle执行的sql字符串拼接含分号导致报“ORA-01756“引号内的字符串没有正确结束
- cad项目数据库服务器,cad项目数据库服务器
- 常用网络特殊符号大全(含彩色表情符号)
- burpsuite基本设置与重复提交比较(一)