ThingsBoard规则链节点:Save Timeseries 节点详解

目录

引言

1. Save Timeseries 节点简介

2. 节点配置

2.1 基本配置示例

3. 使用场景

3.1 设备状态监测

3.2 数据统计

3.3 业务逻辑处理

4. 实际项目中的应用

4.1 项目背景

4.2 项目需求

4.3 实现步骤

5. 总结

   🌐 项目地址

🎽 安装使用


引言

ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,Save Timeseries 节点用于将数据保存为时间序列数据,这对于数据持久化和后续分析非常有用。

ThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台_哔哩哔哩_bilibiliThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台共计35条视频,包括:1、ThingsBoard项目介绍、2、ThingsBoard前端Vue版本代码编译、3、ThingsBoard本地后端源码编译等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1CH36egEDM/?spm_id_from=333.999.0.0 

1. Save Timeseries 节点简介

Save Timeseries 节点的主要作用是在规则链执行过程中将数据保存为时间序列数据。通过 Save Timeseries 节点,可以将设备上报的数据或其他处理结果持久化存储,以便后续查询和分析。这在设备状态监测、数据统计和业务逻辑处理中非常有用。

2. 节点配置
  • 实体类型:选择要保存时间序列数据的实体类型,通常为设备(DEVICE)。
  • 实体 ID:指定要保存时间序列数据的实体 ID,通常是设备 ID。
  • 数据键值对:设置要保存的时间序列数据键值对,可以是静态值、动态表达式或消息中的属性。
  • 时间戳:可以选择使用当前时间或自定义时间戳。
2.1 基本配置示例
{
  "entityType": "DEVICE",
  "entityId": "${msg.deviceId}",
  "ts": "${msg.ts}",
  "values": {
    "temperature": "${msg.temperature}",
    "humidity": "${msg.humidity}"
  }
}
3. 使用场景

Save Timeseries 节点在多种场景下都非常有用,特别是在需要数据持久化和后续分析时。以下是一些具体的应用场景:

3.1 设备状态监测

在设备状态监测系统中,需要将设备上报的状态数据保存为时间序列数据,以便后续查询和监控。

{
  "entityType": "DEVICE",
  "entityId": "${msg.deviceId}",
  "ts": "${msg.ts}",
  "values": {
    "temperature": "${msg.temperature}",
    "humidity": "${msg.humidity}",
    "pressure": "${msg.pressure}"
  }
}
3.2 数据统计

在数据统计系统中,需要将设备上报的数据保存为时间序列数据,以便进行数据分析和报表生成。

{
  "entityType": "DEVICE",
  "entityId": "${msg.deviceId}",
  "ts": "${msg.ts}",
  "values": {
    "energyConsumed": "${msg.energyConsumed}",
    "waterUsage": "${msg.waterUsage}"
  }
}
3.3 业务逻辑处理

在业务逻辑处理中,需要将处理结果保存为时间序列数据,以便后续使用。

{
  "entityType": "DEVICE",
  "entityId": "${msg.deviceId}",
  "ts": "${msg.ts}",
  "values": {
    "orderCount": "${msg.orderCount}",
    "revenue": "${msg.revenue}"
  }
}
4. 实际项目中的应用

下面是一个实际项目中的例子,展示如何在智能家居系统中使用 Save Timeseries 节点。

4.1 项目背景

假设我们正在开发一个智能家居系统,该系统需要支持用户通过手机应用控制家中的灯光、空调等设备,并记录设备的状态和使用情况。此外,还需要实现实时反馈,确保用户能够及时了解操作结果。

4.2 项目需求
  • 记录设备的状态,例如当前温度、湿度等。
  • 记录设备的使用情况,例如开关次数、能耗等。
  • 实现实时反馈,确保用户能够及时了解操作结果。
4.3 实现步骤
  1. 部署设备

    • 在家中安装智能灯光、空调等设备,并连接到 ThingsBoard 平台。
  2. 创建规则链

    • 添加 Save Timeseries 节点,用于保存设备的状态和使用情况。
    • 添加其他处理节点,如设备控制、状态查询和数据存储。
  3. 配置规则链

    • 配置 Save Timeseries 节点,保存设备的状态数据。
{
  "entityType": "DEVICE",
  "entityId": "${msg.deviceId}",
  "ts": "${msg.ts}",
  "values": {
    "temperature": "${msg.temperature}",
    "humidity": "${msg.humidity}",
    "lightStatus": "${msg.lightStatus}",
    "acStatus": "${msg.acStatus}"
  }
}
  • 配置 Save Timeseries 节点,保存设备的使用情况。
{
  "entityType": "DEVICE",
  "entityId": "${msg.deviceId}",
  "ts": "${msg.ts}",
  "values": {
    "switchCount": "${msg.switchCount}",
    "energyConsumed": "${msg.energyConsumed}"
  }
}
  1. 处理数据
    • 根据设备上报的数据,使用 Save Timeseries 节点保存设备的状态和使用情况。
// 处理设备上报的数据
public void processDeviceData(DeviceData data) {
    // 保存设备状态
    saveDeviceTimeseries(data.getDeviceId(), data.getTimestamp(), Map.of(
        "temperature", data.getTemperature(),
        "humidity", data.getHumidity(),
        "lightStatus", data.getLightStatus(),
        "acStatus", data.getAcStatus()
    ));

    // 保存设备使用情况
    saveDeviceUsage(data.getDeviceId(), data.getTimestamp(), Map.of(
        "switchCount", data.getSwitchCount(),
        "energyConsumed", data.getEnergyConsumed()
    ));
}

// 保存设备时间序列数据
private void saveDeviceTimeseries(String deviceId, long timestamp, Map<String, Object> values) {
    JsonNode config = JsonNodeFactory.instance.objectNode()
        .put("entityType", "DEVICE")
        .put("entityId", deviceId)
        .put("ts", timestamp)
        .set("values", JsonNodeFactory.instance.objectNode().setAll(values));

    saveTimeseriesNode.save(config);
}

// 保存设备使用情况
private void saveDeviceUsage(String deviceId, long timestamp, Map<String, Object> usage) {
    JsonNode config = JsonNodeFactory.instance.objectNode()
        .put("entityType", "DEVICE")
        .put("entityId", deviceId)
        .put("ts", timestamp)
        .set("values", JsonNodeFactory.instance.objectNode().setAll(usage));

    saveTimeseriesNode.save(config);
}
  1. 前端界面

    • 开发一个前端界面,显示设备的状态和使用情况。
    • 提供一个界面,让用户能够查看和管理设备的状态和使用情况。
  2. 数据查询

    • 使用 ThingsBoard 的 REST API 或 GraphQL 查询,获取设备的状态和使用情况。
GET /api/plugins/telemetry/DEVICE/{deviceId}/values/timeseries?keys=temperature,humidity,lightStatus,acStatus,switchCount,energyConsumed&startTs={startTimestamp}&endTs={endTimestamp}
5. 总结

Save Timeseries 节点在 ThingsBoard 规则链中是一个非常有用的工具,可以帮助将数据保存为时间序列数据,实现数据持久化和后续分析。通过合理地使用 Save Timeseries 节点,可以更好地管理和自动化系统中的各种操作。无论是在智能家居、工业监控还是其他物联网应用中,Save Timeseries 节点都能发挥重要作用。

   🌐 项目地址

Things Vueicon-default.png?t=O83Ahttp://thingsvue.tpson.cn:7772/#/login?redirect=/tb-home/index

账号:admin@thingsboard.org 
密码:admin123456

🎽 安装使用

获取项目代码:

代码地址icon-default.png?t=O83Ahttps://gitee.com/tpsonwell_admin/thingsvue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值