
在物联网项目中,设备上报的数据格式五花八门,常常让我们头疼不已。有的设备上报的是嵌套 JSON,有的是 Base64 编码的二进制数据,还有的用自定义文本协议……
那么,如何高效、准确地将这些“原始数据”转化为结构清晰、可读性强、便于分析的 ThingsCloud 设备属性呢?别担心!ThingsCloud 提供了一套强大又灵活的数据格式处理机制,让你轻松应对各种复杂上报格式!
今天,我们就来手把手教你如何在 ThingsCloud 中对设备上报数据进行格式处理,从原始数据到可视化看板,一气呵成!✨
📦 为什么需要数据格式处理?
若设备上报属性时采用标准 JSON 格式,如 {"temperature": 25, "humidity": 60},平台会直接将 temperature 和 humidity 解析为设备的属性。
然而,设备厂商出于兼容性、通信效率或历史原因,往往采用不同的数据格式。常见的包括:
- JSON 嵌套结构:如
{"payload": {"temperature": 25}},平台无法直接提取temperature作为独立属性。 - JSON 数组结构:如
{"sensorDatas": [{"flag": "temp", "value": "25"}]}。 - Base64 编码:LoRaWAN 等低功耗设备常将二进制数据编码为 Base64 字符串,如
A2fnAARoUgV9QAIGc/on。 - 自定义文本协议:如
$GPGGA,082403.000,3958.3000,N,...或LBS=117.1390522_034.6651114。
如果不处理,这些数据将无法被平台自动解析为标准属性,也就无法用于实时监控、告警、App面板、看板展示或历史分析。
🔧 ThingsCloud 的两大处理利器
ThingsCloud 通过 消息规则(Message Rules) 提供两类核心处理能力:
1️⃣ 属性上报预处理规则
适用于设备上报标准的 JSON 格式,但结构复杂或需计算转换。
👉 典型场景:提取嵌套字段、数组展开、单位换算、生成衍生指标(如 THI 温热指数)。
2️⃣ 自定义数据上报规则
适用于设备通过 自定义数据流 上报的 HEX、Plaintext、JSON 等原始数据。
👉 典型场景:DTU 透传 Modbus 报文、LoRaWAN Base64 数据、GPS 模块原始 NMEA 语句。
🚀 实战案例:四种常见格式处理方法
✅ 案例 1:从属性上报的嵌套 JSON 中提取属性
原始上报:
{
"payload": {
"temperature": 18.4,
"humidity": 65.3
}
}
属性上报预处理函数:
module.exports = function (report_attributes) {
if (report_attributes.payload) {
Object.assign(report_attributes, report_attributes.payload);
}
return report_attributes;
}
结果:自动新增 temperature 和 humidity 两个独立属性,可用于看板、App面板和告警。
✅ 案例 2:解析 LoRaWAN 设备属性上报的 Base64 数据
原始上报:
{
"data": "A2fnAARoUgV9QAIGc/on"
}
属性上报预处理函数:
module.exports = function (report_attributes) {
if (report_attributes.data !== undefined) {
var buffer = Cloud.Utils.base64ToBuffer(report_attributes.data);
report_attributes.data_hex = buffer.toString('hex'); // 仅用于调试
let i = 0;
if (buffer[0] == 0x01 && buffer[1] == 0x75) {
report_attributes.battery = buffer.readInt8(2);
}
if (buffer[3] == 0x03 && buffer[4] == 0x67) {
report_attributes.temperature = buffer.readInt16LE(4) / 10;
}
// ... 其他字段解析
}
return report_attributes;
}
结果:自动解码出电池、温度、湿度、CO2 等多个传感器数据。
✅ 案例 3:处理属性上报数组型传感器数据
原始上报:
{
"sensorDatas": [
{"flag": "temperature", "value": "29.0813"},
{"flag": "humidity", "value": "47.3777"}
]
}
属性上报预处理函数:
module.exports = function (report_attributes) {
if (report_attributes.sensorDatas) {
report_attributes.sensorDatas.forEach(v => {
report_attributes[v.flag] = parseFloat(v.value);
});
}
return report_attributes;
}
结果:动态生成 temperature 和 humidity 属性,适配多传感器灵活上报。
✅ 案例 4:从属性上报 GNSS 数据提取经纬度
原始上报:
{
"gps_gga": {
"latitude": 32.74245,
"longitude": 111.5542
}
}
属性上报预处理函数:
module.exports = function (report_attributes) {
if (report_attributes.gps_gga?.latitude && report_attributes.gps_gga?.longitude) {
report_attributes.location_gps = {
lat: report_attributes.gps_gga.latitude,
lng: report_attributes.gps_gga.longitude
};
}
return report_attributes;
}
结果:生成标准 MapPoint 类型的 location_gps 属性,可直接用于看板或 App 的地图组件。
✅ 案例 5:从自定义数据流上报的 plaintext 中提取经纬度
原始上报:
GPS=E:117.1392,N:34.66583
自定义数据上报转属性上报函数:
module.exports = function (identifier, data) {
/**
* 参数:
* identifier: 上报的自定义数据流标识符
* data: 上报的自定义数据,二进制 Buffer格式
* 返回值:
* attributes: 生成设备属性
*/
var attributes = {};
const text = data.toString();
if (text.substr(0, 4) == 'GPS=') {
const tmp = text.split('=');
if (tmp.length == 2) {
const loc = tmp[1].split(',');
if (loc.length == 2) {
const lng = loc[0].substr(2) /1;
const lat = loc[1].substr(2) /1;
attributes.GPS_loc = {
lng: lng,
lat: lat,
}
}
}
}
return attributes;
}
结果:生成标准 MapPoint 类型的 GPS_loc 属性,可直接用于看板或 App 的地图组件。
📌 小贴士:所有规则云函数都支持 在线调试!你可以粘贴设备原始数据,实时查看处理结果,开发效率翻倍!
🎯 总结
无论你的设备使用何种协议、上报何种格式,ThingsCloud 都能帮你“化繁为简”:
- 标准 JSON?直接上报,秒级生效。
- 嵌套/数组/Base64/自定义文本?用消息规则轻松解析。
- 需要计算或联动?JavaScript 云函数任你发挥。
从此告别“数据孤岛”,让每一比特的设备数据都发挥最大价值!📊
🔥 立即体验:登录 ThingsCloud 控制台,创建你的第一条数据处理规则吧!
📘 更多示例:查看官方教程
想了解更多?立即访问 ThingsCloud官网 或阅读 设备接入指南,开启您的物联网设备管理之旅!
关于 ThingsCloud
ThingsCloud 是新一代物联网设备统一接入平台,帮助企业在极短的时间内搭建个性化的物联网平台和应用,并适应不断变化的发展需求。目前广泛应用于制造、电力、能源、环境、农业、楼宇、家居、教育、交通、物流、自动化等领域。
ThingsCloud 可接入各类网关,传感器、执行器、控制器、通信模组、智能硬件等,实现数据采集、远程控制,数据分析、告警通知、智能联动。还可以零代码生成项目应用 SaaS 和用户应用 App,并开放 API 和实时消息,便于业务系统集成和扩展开发。
通过使用 ThingsCloud,企业可以大大缩短搭建物联网系统的时间,节省软件开发费用,降低定制开发的风险,快速落地数字化和智能化项目。我们的客户遍布各行业,包括中国石化、中国铁塔、中国燃气、吉林大学、北控水务、ACE、中国民航大学、西安交通大学、精量电子、大秦铁路、宁波水利局等。




















