技术服务中心

概述

星纵物联LoRaWAN®网关内置网络服务器Network Server,支持通过MQTT / HTTP(S)转发传感器数据到第三方服务器。为提高上报内容的可读性,可使用网关自带的解码器解析上报内容。本文主要描述如何在网关上使用载荷编解码器。

准备

  • 星纵物联LoRaWAN®网关

步骤

1. 网关配置

登录网关配置界面,进入“Network Server>载荷编解码器界面,可对编解码器进行配置与管理。

1.1 内置载荷编解码库

星纵物联LoRaWAN®网关程序内置载荷编解码库,为所有星纵物联终端节点设备提供编解码示例。内置载荷编解码库支持两种获取方式:

    • 在线获取:网关联网后,可获取云端的载荷编解码库。请先确保网关可正常访问公网。
    • 本地上传:手动上传载荷编解码库压缩包。

1.2 自定义载荷编解码器

若需要对第三方终端节点设备进行编解码,可点击自定义编解码函数。

    • 名称:自定义
    • 描述:自定义
    • 模板:选择None

然后在解码函数功能框写入终端节点设备对应的解码函数,点击保存。

1.3 调用编解码

当您在网关“Network Server>设备” 界面添加终端节点设备时,可在载荷编解码器位置选择所需的编解码。

    • 自定义:显示自定义编解码器
    • 默认:显示内置编解码器

2. 应用示例

如下以EM300-TH设备为例,列举三种数据转发的情景供参考。

注意:

2.1 仅转发传感器解析数据

  • 方式一:参考1.3章节,直接调用网关内置载荷编解码库中的EM300-TH解码示例。
  • 方式二:参考1.3章节,调用自定义编解码器。在这之前需要创建一个自定义解码器,复制EM300-TH解码器,粘贴到解码函数功能框。

保存配置后,在网关“Network Server>数据流” 界面,点击上报数据流详情信息,可以看到解码后的JSON数据。

网关收到EM300-TH数据后将会转发如下数据

{
"temperature": 30.8,
"humidity": 50.5,
}

2.2 转发原始数据与部分属性包

星纵物联LoRaWAN®网关支持通过LoRaObject语句,在原始转发内容上筛选需要的字段。假如需要转发DevEUI,RSSI,SNR等属性包及原始数据至服务器,可以在解码函数功能框输入如下内容:

function Decode(fPort, bytes) {
var decoded = {};
decoded.devEUI = LoRaObject.devEUI;
decoded.rssi = LoRaObject.rxInfo[0].rssi;
decoded.snr = LoRaObject.rxInfo[0].loRaSNR;
decoded.data = LoRaObject.data;
return decoded;
}

将会收到如下格式数据

{
"devEUI":24e1611234567890
"rssi": -5,
"snr": 11,
"data": AXVkA2cgAQRoeg==
}

2.3 转发解析数据与部分属性包

若想要转发解析数据并附带设备DevEUI信息到第三方服务器,可将EM300-TH解码器复制粘贴到解码函数功能框中,并添加LoRaObject指定内容。

注意:当需要在解析数据中添加所有信息,可使用decoded.obj= LoRaObject;来实现。点击此处获取所有LoRaObject对象

function Decode(fPort, bytes) {
var decoded = {};

//Data decoder
for (var i = 0; i < bytes.length;) {
var channel_id = bytes[i++];
var channel_type = bytes[i++];

//BATTERY
if (channel_id === 0x01 && channel_type === 0x75) {
decoded.battery = bytes[i];
i += 1;
}
//TEMPERATURE
else if (channel_id === 0x03 && channel_type === 0x67) {
decoded.temperature = readInt16LE(bytes.slice(i, i + 2)) / 10;
i += 2;
}
//HUMIDITY
else if (channel_id === 0x04 && channel_type === 0x68) {
decoded.humidity = bytes[i] / 2;
i += 1;
} else {
break;
}
}

decoded.devEUI = LoRaObject.devEUI;
return decoded;
}

/* ******************************************
* bytes to number
********************************************/
function readUInt16LE(bytes) {
var value = (bytes[1] << 8) + bytes[0];
return value & 0xffff;
}

function readInt16LE(bytes){
var ref = readUInt16LE(bytes);
return ref > 0x7fff ? ref - 0x10000 : ref;
}

将转发如下数据

{
"battery": 92,
"temperature": 30.8,
"humidity": 50.5,
"devEUI":24e1611234567890
}

样机试用

微信客服wechat code

在线客服

工业路由器 Lorawan®网关 LoRaWAN®传感器 数传终端DTU 智能安防产品 更多产品咨询
Baidu
map