Skip to main content

LwM2M服务端

简介

  • LwM2M全称是Lightweight Machine-To-Machine, 是由开发移动联盟(OMA)提出的、适用于资源有限的终端设备管理的轻量级物联网协议。

驱动配置

一般情况下,如果实例配置、设备表配置、表记录配置中存在相同的字段,优先级依次升高,不填时默认继承上一级的配置。

  1. 打开设备监控-驱动管理, 点击添加驱动, 选择 image.png

  2. 配置实例和设备表参数 image.png

    配置项说明:
    1. 服务器端口:使用哪一个端口作为驱动服务器的监听端口。
    2. 数据处理脚本:由于协议中未规定具体的消息内容格式,因此需要用户编写自定义脚本,用于解析消息和组装要发送的消息内容。
  3. 如果是linux环境,需要将服务器端口映射到主机 image.png

脚本

脚本语言采用的是JavaScript,一部分为固定格式:

/**
* 数据处理脚本, 解析从客户端接收到的数据并转换为平台规定的数据格式
*
* @param {Object} client 客户端对象
* @param {String} uri 订阅的uri
* @param {package} 收到的数据包
* @return {Array} 解析出的采集数据信息
*/
function handler(client,endpoint,uri,package) {

// todo 对接收到数据进行处理

// 从数据包中解析得到的数据, 必须为数组.
// 数组中每个元素的格式如下:JSON.parse(package)
// id: 设备标识. 需要与 '资产编号' 或 设备配置中的 '自定义标识' 一致。 如果配置了 '自定义标识' 则必须使用 '自定义标识' 作为设备标识
// cid: 子资产标识, 可选. 如果没有子资产时, 可以不指定该字段
// time: 该数据的采集时间, 为时间戳, 单位为毫秒. 如果不指定则使用当前时间
// values: 数据点的值, 必须为对象, 对象的 key 为数据点的标识, value 为数据点的值
return [{"time": new Date().getTime(), values}];
}

设备表中的配置如下图所示: image.png

数据点配置:

image.png

添加表记录:

每个资产均要配置endpoint, 一般来说,endpoint是设备的imei image.png

平台配置完成后,点击重启驱动.

可在数据点上查看收到的数据

image.png

示例1-JSON类型1

消息格式

通过设备上传的数据是一个json格式的字符串:

{number:868733061728462,TiltValue:14.23,BatteryLevel:52,WaterState:0,CoverState:0,DeviceState:0}

脚本:

/**
* 数据处理脚本, 解析从客户端接收到的数据并转换为平台规定的数据格式
*
* @param {Object} client 客户端对象
* @param {String} uri 订阅的uri
* @param {package} 收到的数据包
* @return {Array} 解析出的采集数据信息
*/
function handler(client,endpoint,uri,package) {

// 因为设备上传的tlv格式,所以去掉前4个字符后就是json格式的报文,且没有引号, 所以直接使用eval方法转为js对象
let package2 = package.slice(4);
let values = eval(`(${package2.toString("utf8")})`)
return [{"time": new Date().getTime(), values}];
}