BC26通过LWM2M接入电信AEP平台(非透传模式 Json格式)

本文介绍了基于LWM2M协议的电信AEP平台接入及数据传输方法。先简述LWM2M协议特点,接着说明AEP平台操作步骤,包括创建产品、添加设备等。阐述平台接受的数据格式,有非透传(紧凑二进制和JSON)和透传两种。最后介绍模组侧操作及完整AT流程,实现数据上传与指令接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

透传模式接入可以看 https://blog.youkuaiyun.com/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.7

OK

检查NB模组的IP地址。

3、AT+QLWCLOSE

AT+QLWCLOSE
OK

CLOSE 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
OK

CONNECT 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的parameter1parameter2可以在如下页面看到:
在这里插入图片描述
  服务ID即是serviceId,点击参数列表下面的图标就可以看到此serviceId下的parameter1parameter2,比如:
在这里插入图片描述
  因此按照Json的格式,就可以得到:{"serviceId":1,"temperature":36.1,"humidity":30.5,"illuminance":10}
  serviceId下的parameter可以用完,也可以只用1个或2个,可以少但是不能多,不然平台认为格式不正确,拒收。
  此时可以在AEP平台上去看接收的数据。
  先查下设备的ID,并复制
在这里插入图片描述

粘贴到搜索框中,点搜索,即可查询到接收到的数据。
在这里插入图片描述
可以看到电信AEP平台接收到的数据与NB模组发送的数据一致。

再通过电信AEP平台下发一条指令,先查下哪些serviceId的服务类型是指令下发的:
在这里插入图片描述
这里先来补充说下常见的4种服务类型

  1. 指令下发:利用物联网平台给设备发送命令消息, 实现对传感器的实时控制
  2. 指令下发响应:终端设备收到命令数据后执行命令, 可以生成响应。 物联网平台能通过指令下发响应服务识别该响应
  3. 数据上报:使用者利用物联网平台, 将大量的终端设备连接到网络中, 对终端传感器采集到的数据进行数据格式定义, 并保存至物联网平台
  4. 事件上报:事件上报功能为您提供上报自定义事件, 方便您将业务产生的异常事件采集上报到云端

我们这里就使用serviceId为8004的来下发,控制设备的灌溉流量。
在这里插入图片描述
在这里插入图片描述

  因为模组处于PSM状态,不是与基站时刻连接的,因此平台下发数据NB模组不会立马收到,而是等NB模组再次与服务端连接时才会收到。我们使用AT+QLWUPDATE 向电信 IoT 平台发送一次更新请求。

AT+QLWUPDATE
OK

UPDATE OK

+QLWDATARECV: 19,1,0,47,{"total_flow":20.3,"taskId":1,"serviceId":8004}

可以看到NB模组收到了服务端下发的Json格式的数据。

12、AT+QLWCLOSE

AT+QLWCLOSE
OK

CLOSE OK

取消电信AEP的LWM2M注册

13、AT+QLWDEL

AT+QLWDEL
OK

删除LWM2M的连接

完整的AT流程

AT
OK
AT+CGPADDR=1
+CGPADDR: 1,56.70.128.189

OK
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
OK

CONNECT OK

+QLWOBSERVE: 0,19,0,0
AT+QLWCFG="dataformat",0,0

OK
AT+QLWDATASEND=19,0,0,50,{"serviceId":1,"temperature":36.1,"humidity":30.5},0x0000
OK
AT+QLWUPDATE
OK

UPDATE OK

+QLWDATARECV: 19,1,0,47,{"total_flow":20.3,"taskId":1,"serviceId":8004}
AT+QLWCLOSE
OK

CLOSE OK
AT+QLWDEL
OK
<think>好的,我需要帮助用户了解如何使用BC95模块通过LwM2M协议连接到中国电信AEP平台。首先,我需要回忆一下之前提供的引用内容,特别是引用[1]和引用[2],因为用户提到了这些信息。 根据引用[1],BC28和BC95模块连接电信AEP(ctwing)使用的是LWM2M协议,接入地址是221.229.214.202,端口5683。用户需要使用AT指令,比如AT+NCDP来设置这个地址。所以,BC95的设置应该类似,可能只需要相同的AT命令。 然后看引用[2],里面提到BC26通过LWM2M接入电信AEP平台,使用的是IMEI认证或SM9认证。IMEI认证需要验证设备的IMEI号,而SM9则需要购买安全服务,使用公钥私钥对进行签名。所以,BC95可能也支持这两种认证方式,但用户需要确定平台上的产品是否配置了正确的认证方式。 接下来,我需要将这些信息整合成一个步骤指南。首先,用户需要配置模块的APN,确保网络连接正常。然后设置LwM2M服务器地址和端口,使用AT+NCDP命令。接着设置输模式为,可能需要AT+NQMGSEND命令。之后是设备认证,根据平台设置选择IMEI或SM9。最后,保存配置并重启模块,检查连接状态。 另外,用户可能需要示例AT指令流程,比如设置APN、设置服务器地址、设置输模式等。同时,要注意参数是否正确,比如端口号是否为5683,地址是否正确。错误处理部分可能需要检查网络注册状态,确认IMEI是否正确,或者SM9私钥是否配置正确。 用户的问题还可能涉及如何生成SM9密钥对,或者如何确保IMEI的有效性,这些可能需要参考电信AEP平台的文档。另外,可能还需要提到在平台侧如何添加设备,比如输入IMEI或注册设备ID。 需要确保所有步骤清晰,用户能够按照步骤操作。同时,生成的相关问题要围绕配置中的关键点,比如AT指令使用、认证方式选择、连接问题排查等。</think>### 使用BC95模块通过LwM2M协议连接电信AEP平台指南 #### 1. **基础配置要求** - **硬件准备**:确保BC95模块已插入支持NB-IoT的SIM卡(中国电信物联网卡),且信号正常。 - **APN设置**:电信NB-IoT默认APN为`ctnb`,需通过AT指令配置: ```AT AT+CGDCONT=1,"IP","ctnb" OK ``` #### 2. **LwM2M服务器地址配置** 中国电信AEP平台LwM2M接入地址为`221.229.214.202`,端口`5683`,需使用指令`AT+NCDP`设置[^1]: ```AT AT+NCDP=221.229.214.202,5683 OK ``` #### 3. **输模式设置** BC95需配置为**透传模式**以适配平台协议,使用指令: ```AT AT+NQMGSEND=1 OK ``` #### 4. **设备认证方式** 电信AEP支持两种认证方式: - **IMEI认证**:平台校验设备的IMEI号(通过`AT+CGSN`获取),需在平台注册IMEI并绑定产品[^2]。 - **SM9认证**:需在电信物联网市场购买安全服务,设备使用私钥签名,平台用公钥验签[^2]。 #### 5. **连接流程示例** ```AT // 配置APN AT+CGDCONT=1,"IP","ctnb" OK // 设置LwM2M服务器 AT+NCDP=221.229.214.202,5683 OK // 启用透传模式 AT+NQMGSEND=1 OK // 重启模块使配置生效 AT+NRB OK // 检查网络注册状态 AT+CEREG? +CEREG: 0,1 // 1表示已注册 OK // 查看连接状态 AT+NATSPEED? +NATSPEED: 1 // 1表示已连接 OK ``` #### 6. **常见问题排查** - **连接失败**:检查APN是否为`ctnb`,信号强度(`AT+CSQ`)需大于10。 - **认证错误**:确认平台是否已录入设备IMEI或SM9密钥对[^2]。 - **端口占用**:确保端口`5683`未被防火墙拦截。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值