概述
Register(注册/登录)
Register接口用于设备向平台进行注册,通过发送CoAP POST请求到平台进行身份认证,认证通过,则设备被激活;认证失败,平台会向设备返回失败码。交互流程如下图所示:
LWM2M业务数据通过CoAP协议进行封装,参数定义参见下表:
Update(更新)
在lifetime超期之前,设备需要发起Update流程,否则平台会认为设备离线,再次连接需要重新发起Register,当设备参数(lifetime、binding mode、ObjectLinks等)发生变化,设备可以通过Update通知平台参数改变。Update流程如下:
Deregister(去注册/登出)
Observe(资源订阅)
订阅Object的交互流程:
Notify(资源数据上报)
消息格式
Object 19 (LwM2M APPDATA)可以用于应用层业务数据的封装,实现包括业务数据上报、业务指令下发、设备事件上报等功能。
目前平台仅支持Data字段,其他字段暂时不支持,即:
• 消息上行通过/19/0/0传送
• 消息下行通过/19/1/0传送
对于Data字段,平台既支持数据透传也支持非透传(物模型)。对于非透传设备,数据格式支持紧凑二进制和Json两种格式。
l 非透传设备
非透传设备上报的业务数据,平台需要对业务数据按照物模型定义进行解析,因此数据格式必须遵守平台关于Object19的约定,目前Object19支持紧凑二进制和Json两种数据格式。
l 非透传设备
非透传设备上报的业务数据,平台需要对业务数据按照物模型定义进行解析,因此数据格式必须遵守平台关于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,按照服务定义的属性(或参数)进行编码和解码
报服务ID:1
•属性1:2个字节的整型,值为100
•属性2:5个字节的定长字符串,值为"hello"
•属性3:变长字符串"world"。
首先需要将属性值转换为十六进制:
•属性1十进制整型100的十六进制为0x0064
•属性2定长字符串"hello"转换为十六进制为:0x68656C6C6F(参照ASCII码表转换)
•属性3字符串"world"转化为十六进制为:0x776F726C64,由于该属性为变长字段,还需要在属性前加上2个字节的无符号整型表示长度,即属性3变长字符串的最终编码为0x0005776F726C64。
编码过程为:
•CMDType:0x02
•ServiceID:0x0001
•Payload_length:0x000E
•Payload:0x006468656C6C6F0005776F726C64
因此19/0/0数据上报内容为:020001000E006468656C6C6F0005776F726C64
示例2、指令下发和响应
服务ID:8001
TaskID:1
参数1:1个字节无符号整型。参数值为1:1–获取当前时间,0–时钟同步。
编码过程为:
•CMDType:0x06
•ServiceID:0x1F41
•TaskID:0x0001
•Payload_length:0x0001
•Payload:0x01
因此19/1/0指令下发内容为:061F410001000101,解析出指令内容为“获取当前时间”,设备需要将系统时间通过响应发给平台。
指令响应的服务ID:9001
TaskID:1
参数1:12字节的定长字符串。值为当前时间点"202010261600"。
编码过程为:
•CMDType:0x86
•ServiceID:0x2329
•TaskID:0x0001
•Payload_length:0x000C
•Payload:0x323032303130323631363030
因此19/0/0指令响应内容为:8623290001000C323032303130323631363030
(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按照服务定义的属性来填写。
示例1、设备数据上报
19/0/0上报数据内容为:
{“serviceId”: 1, “seq”:1, “data1”: “hello”, “data2”: “world”}
19/1/0指令下发内容为:
{“serviceId”:8001, “taskId”:1, “cmd”:1}
19/0/0指令下发响应内容为:
{“serviceId”:9001, “taskId”:1, “rsp”:“202010261600”}
l 透传设备
AEP对19/0/0、19/1/0的Data字段不进行解析,支持任意格式的业务数据的透传。
最后
以上就是迷路冷风为你收集整理的设备接入(LWM2M协议)的全部内容,希望文章能够帮你解决设备接入(LWM2M协议)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复