我是靠谱客的博主 迷路冷风,最近开发中收集的这篇文章主要介绍设备接入(LWM2M协议),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述
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协议)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部