LwM2M服务端
简介
- LwM2M全称是Lightweight Machine-To-Machine, 是由开发移动联盟(OMA)提出的、适用于资源有限的终端设备管理的轻量级物联网协议。
驱动配置
一般情况下,如果实例配置、设备表配置、表记录配置中存在相同的字段,优先级依次升高,不填时默认继承上一级的配置。
打开设备监控-驱动管理, 点击添加驱动, 选择
配置实例和设备表参数
配置项说明:
1. 服务器端口:使用哪一个端口作为驱动服务器的监听端口。
2. 数据处理脚本:由于协议中未规定具体的消息内容格式,因此需要用户编写自定义脚本,用于解析消息和组装要发送的消息内容。如果是linux环境,需要将服务器端口映射到主机
脚本
脚本语言采用的是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}];
}
设备表中的配置如下图所示:
数据点配置:
添加表记录:
每个资产均要配置endpoint, 一般来说,endpoint是设备的imei
平台配置完成后,点击重启驱动.
可在数据点上查看收到的数据
示例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}];
}