BC26通过LWM2M接入电信AEP平台(非透传模式 Json格式)
透传模式接入可以看 https://blog.csdn.net/qlexcel/article/details/117217287
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”协议
创建产品
创建成功后,在产品中心中出现一个产品
在详情中可以看到很多信息
拖到最下面把服务器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字段不进行解析, 支持任意格式的业务数据的透传。
模组侧操作
从上面可以知道要把数据以非透传的方式上传给平台需要满足平台的数据格式要求,否则会被平台拒收。
目前非透传方式支持紧凑二进制和Json两种数据格式。本文介绍下Json的数据格式。
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的连接。回复error,说明模组内没有保存上次连接的设置,不管即可。
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”,0,0
AT+QLWCFG="dataformat",0,0
OK
设置发送和接收的数据为文本字符串格式。
11、AT+QLWDATASEND=19,0,0,50,{“serviceId”:1,“temperature”:36.1,“humidity”:30.5},0x0000
AT+QLWDATASEND=19,0,0,50,{"serviceId":1,"temperature":36.1,"humidity":30.5},0x0000
OK
使用NON模式上报数据,此模式不需要IoT平台应答。
业务数据上报、 事件上报、 无线参数上报的Data部分应满足以下格式:{“serviceId”: XXXX, parameter1:value1, parameter2:value2}
serviceId
和对应serviceId的parameter1
、parameter2
可以在如下页面看到:
服务ID
即是serviceId
,点击参数列表
下面的图标就可以看到此serviceId
下的parameter1
、parameter2
,比如:
因此按照Json的格式,就可以得到:{"serviceId":1,"temperature":36.1,"humidity":30.5,"illuminance":10}
serviceId
下的parameter
可以用完,也可以只用1个或2个,可以少但是不能多,不然平台认为格式不正确,拒收。
此时可以在AEP平台上去看接收的数据。
先查下设备的ID,并复制
粘贴到搜索框中,点搜索,即可查询到接收到的数据。
可以看到电信AEP平台接收到的数据与NB模组发送的数据一致。
再通过电信AEP平台下发一条指令,先查下哪些serviceId
的服务类型是指令下发的:
这里先来补充说下常见的4种服务类型
- 指令下发:利用物联网平台给设备发送命令消息, 实现对传感器的实时控制
- 指令下发响应:终端设备收到命令数据后执行命令, 可以生成响应。 物联网平台能通过指令下发响应服务识别该响应
- 数据上报:使用者利用物联网平台, 将大量的终端设备连接到网络中, 对终端传感器采集到的数据进行数据格式定义, 并保存至物联网平台
- 事件上报:事件上报功能为您提供上报自定义事件, 方便您将业务产生的异常事件采集上报到云端
我们这里就使用serviceId
为8004的来下发,控制设备的灌溉流量。
因为模组处于PSM状态,不是与基站时刻连接的,因此平台下发数据NB模组不会立马收到,而是等NB模组再次与服务端连接时才会收到。我们使用AT+QLWUPDATE 向电信 IoT 平台发送一次更新请求。
AT+QLWUPDATE
OKUPDATE OK+QLWDATARECV: 19,1,0,47,{"total_flow":20.3,"taskId":1,"serviceId":8004}
可以看到NB模组收到了服务端下发的Json格式的数据。
12、AT+QLWCLOSE
AT+QLWCLOSE
OKCLOSE OK
取消电信AEP的LWM2M注册
13、AT+QLWDEL
AT+QLWDEL
OK
删除LWM2M的连接
完整的AT流程
AT
OK
AT+CGPADDR=1
+CGPADDR: 1,56.70.128.189OK
AT+QLWCLOSE
ERROR
AT+QLWDEL
ERROR
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",0,0OK
AT+QLWDATASEND=19,0,0,50,{"serviceId":1,"temperature":36.1,"humidity":30.5},0x0000
OK
AT+QLWUPDATE
OKUPDATE OK+QLWDATARECV: 19,1,0,47,{"total_flow":20.3,"taskId":1,"serviceId":8004}
AT+QLWCLOSE
OKCLOSE OK
AT+QLWDEL
OK
BC26通过LWM2M接入电信AEP平台(非透传模式 Json格式)相关推荐
- 产品 电信nb接口调用_基于NB-IoT平台数据透传模式的应用接入平台设计方法与流程...
本发明涉及互联网.物联网和软件开发技术领域,具体的说,是一种基于NB-IoT平台数据透传模式的应用接入平台设计方法. 背景技术: NB-IoT支持低功耗设备在广域网的蜂窝数据连接,聚焦于低功耗广覆盖( ...
- WIS800C TCP Client 非透传模式连接远程服务器使用方法(转)
WIS800C TCP Client 非透传模式连接远程服务器使用方法 转载于:https://www.cnblogs.com/LittleTiger/p/11363585.html
- SIM800C 透传模式与非透传模式测试对比
许多客户对于什么是透传模式不了解,当我们向客户说明什么是透传模式时,许多人都不明白,现在海凌科电子有限公司现向客户说明什么是透传模式.SerialNet模式将本地异步串口通信转换成基于TCP/UDP协 ...
- Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备)
电信的天翼物联网平台CTWing(AIOT)原先是我们俗称的aep,主要用于接入nb-iot设备,当然也可以接入其他的设备,在熟悉AIOT平台后,做后端的我有时候急需终端样品(智能门禁,支付识别终端, ...
- Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-应用订阅端(北向应用)
之前实现了使用Springboot+Netty基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备),模拟设备发送的数据给到了AIOT平台,那么在第三方应用也需要去 ...
- ESP8266连接中国移动ONENET物联网平台TCP透传实现WIFI远程控制
注:简单笔记,可供参考,欢迎指教 目录 ESP8266介绍 简介 特点 ONENET介绍 接入方法 流程简述: 烧入AT固件 中国移动ONENET创建账号及产品 AT指令连接 ESP8266介绍 简介 ...
- BC25通过LWM2M连接电信AEP(ctwing)
AEP平台操作 1.注册成功之后登陆到ctwing平台,打开控制台,选择LWM2M协议,点击开始设备接入,进入产品中心 2.在"产品中心"子页面中单击"创建产品按钮&qu ...
- BC28、BC95通过LWM2M连接电信AEP(ctwing)
转载自https://blog.csdn.net/lx121451/article/details/88184325 AEP平台操作 1.注册成功之后登陆到ctwing平台,打开控制台,选择LWM2M ...
- 移柯L620接入电信云平台
1.注册账号 首先,注册电信物联网平台账号,申请方式:微信关注[天翼物联产业联盟]公众号.进入公众号点击底部联盟服务菜单下的平台对接认证选项,如下: 点击进入认证界面,填写相应的认证信息(以个人或单位 ...
最新文章
- Cassandra架构、设计(集群表)和性能报告
- 微信分享转发功能「PHP版」
- EF实体框架数据操作基类(转)
- Chrome运行时性能瓶颈分析
- POJ2931不平等博弈
- 图像增强处理之:同态滤波与Retinex算法(一)同态滤波
- 在Linux安装QQ,只需几步
- numpy——随机取样
- Latex转word的一款软件-Pandoc
- python如何防止代码查重_怎样避免论文代码查重
- 联想小新触摸板驱动_联想小新智能语音鼠标驱动
- 百度飞桨小白逆袭大神之鲤鱼跃龙门
- 解决Ubuntu 20.04挂载NTFS分区不能写入(只读权限)的问题
- mac svn 服务器及客户端
- 1514_人月神话阅读笔记_20年后的人月神话_上篇
- 类的练习:定义一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。
- 关于python3的分号:
- HTML5的学习网站有哪些?
- 乐视网:截至2月已逾期金融机构借款类债务20.84亿元
- CMD批量转换GIF图片为PNG图片
热门文章
- 7-128 大于m的最小素数 (10 分)
- 字典树(Tire树)C++详解,一文让你理解字典树
- ecg心率和ppg心率区别_基于ppg的心率变异性hrv分析的伪影去除
- Java 发送短信验证码
- STM32CubeIDE开发(二十二), stm32的RS485/232串口通信开发要点
- 万年历查询java项目查询,Java日历查询程序(万年历)
- Python的作者吉多·范罗苏姆简介
- 人工智能往哪个方向发展有前途?计算机视觉还是自然语言处理?
- BP神经网络在期货价格预测中的应用
- 分析最近的一个网课答案查询2.0