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

引言

1. Save Attributes 节点简介

2. 节点配置

2.1 基本配置示例

3. 使用场景

3.1 设备状态管理

3.2 数据统计

3.3 业务逻辑处理

4. 实际项目中的应用

4.1 项目背景

4.2 项目需求

4.3 实现步骤

5. 总结


引言

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

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 Attributes 节点简介

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

2. 节点配置
  • 实体类型:选择要保存属性的实体类型,可以是设备(DEVICE)、客户(CUSTOMER)等。
  • 实体 ID:指定要保存属性的实体 ID,可以是设备 ID 或客户 ID。
  • 属性类型:选择属性的类型,可以是客户端属性(CLIENT_SCOPE)、共享属性(SHARED_SCOPE)或服务器属性(SERVER_SCOPE)。
  • 属性键值对:设置要保存的属性键值对,可以是静态值、动态表达式或消息中的属性。
2.1 基本配置示例
{"entityType": "DEVICE","entityId": "${msg.deviceId}","scope": "SERVER_SCOPE","attributes": {"temperature": "${msg.temperature}","humidity": "${msg.humidity}"}
}
3. 使用场景

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

3.1 设备状态管理

在设备管理系统中,需要将设备上报的状态数据保存为设备属性,以便后续查询和监控。

{"entityType": "DEVICE","entityId": "${msg.deviceId}","scope": "SERVER_SCOPE","attributes": {"status": "${msg.status}","batteryLevel": "${msg.batteryLevel}"}
}
3.2 数据统计

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

{"entityType": "DEVICE","entityId": "${msg.deviceId}","scope": "SERVER_SCOPE","attributes": {"totalEnergyConsumed": "${msg.totalEnergyConsumed}","averageTemperature": "${msg.averageTemperature}"}
}
3.3 业务逻辑处理

在业务逻辑处理中,需要将处理结果保存为设备或客户实体的属性,以便后续使用。

{"entityType": "CUSTOMER","entityId": "${msg.customerId}","scope": "SHARED_SCOPE","attributes": {"lastOrderDate": "${msg.lastOrderDate}","orderCount": "${msg.orderCount}"}
}
4. 实际项目中的应用

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

4.1 项目背景

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

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

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

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

    • 配置 Save Attributes 节点,保存设备的状态数据。
{"entityType": "DEVICE","entityId": "${msg.deviceId}","scope": "SERVER_SCOPE","attributes": {"temperature": "${msg.temperature}","humidity": "${msg.humidity}","lightStatus": "${msg.lightStatus}","acStatus": "${msg.acStatus}"}
}
  • 配置 Save Attributes 节点,保存设备的使用情况。
{"entityType": "DEVICE","entityId": "${msg.deviceId}","scope": "SERVER_SCOPE","attributes": {"switchCount": "${msg.switchCount}","energyConsumed": "${msg.energyConsumed}"}
}
  1. 处理数据
    • 根据设备上报的数据,使用 Save Attributes 节点保存设备的状态和使用情况。
// 处理设备上报的数据
public void processDeviceData(DeviceData data) {// 保存设备状态saveDeviceAttributes(data.getDeviceId(), "SERVER_SCOPE", Map.of("temperature", data.getTemperature(),"humidity", data.getHumidity(),"lightStatus", data.getLightStatus(),"acStatus", data.getAcStatus()));// 保存设备使用情况saveDeviceUsage(data.getDeviceId(), "SERVER_SCOPE", Map.of("switchCount", data.getSwitchCount(),"energyConsumed", data.getEnergyConsumed()));
}// 保存设备属性
private void saveDeviceAttributes(String deviceId, String scope, Map<String, Object> attributes) {JsonNode config = JsonNodeFactory.instance.objectNode().put("entityType", "DEVICE").put("entityId", deviceId).put("scope", scope).set("attributes", JsonNodeFactory.instance.objectNode().setAll(attributes));saveAttributesNode.save(config);
}// 保存设备使用情况
private void saveDeviceUsage(String deviceId, String scope, Map<String, Object> usage) {JsonNode config = JsonNodeFactory.instance.objectNode().put("entityType", "DEVICE").put("entityId", deviceId).put("scope", scope).set("attributes", JsonNodeFactory.instance.objectNode().setAll(usage));saveAttributesNode.save(config);
}
  1. 前端界面

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

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

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

  🌐 项目地址

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8746.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

光缆车间三维可视化系统

通过图扑可视化平台整合实时生产数据与流程监控&#xff0c;并呈现光缆制造流程&#xff0c;提升生产透明度与效率。支持异常检测、资源管理与智能决策&#xff0c;助力车间运营的智能化与自动化升级。

强化学习这么做绝绝子!最新idea登顶Science!

强化学习&#xff08;RL&#xff09;全新里程碑&#xff01;RL之父Richard Stutton团队&#xff0c;提出一种奖励聚中思想&#xff0c;能大幅增强所有RL算法&#xff01;也即&#xff1a;通过从观察到的奖励中减去平均奖励&#xff0c;来提高连续强化学习问题中折扣方法的性能&…

[含文档+PPT+源码等]精品基于springboot实现的原生Andriod广告播放系统

基于Spring Boot实现的原生Android广告播放系统背景&#xff0c;主要可以从以下几个方面进行阐述&#xff1a; 一、市场需求与背景 移动互联网的快速发展&#xff1a; 随着移动互联网技术的不断进步&#xff0c;智能手机已成为人们日常生活中不可或缺的一部分。人们越来越多地…

2023上半年下午3,4,5

文中的英文很可能是类名。没有英文的段落可以不看 如图&#xff0c;C1和C5应该是父类&#xff0c;有234和678等多个箭头指向他们 所以C2,C3,C4应该是C1的子类&#xff0c;C5同理 聚合表示部分可以脱离整体而存在&#xff0c;整体消失部分也能存在 组合则部分不能脱离整体&…

【C/C++】字符/字符串函数(0)(补充)——由ctype.h提供

零.导言 除了字符分类函数&#xff0c;字符转换函数也是一类字符/字符串函数。 C语言提供了两种字符转换函数&#xff0c;分别是 toupper &#xff0c; tolower。 一.什么是字符转换函数&#xff1f; 顾名思义&#xff0c;即转换字符的函数&#xff0c;如大写字母转小写字母&am…

华为eNSP实验:QINQ技术

QinQ技术是一种扩展VLAN空间的技术&#xff0c;通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能。 QinQ技术允许私网VLAN透传公网&#xff0c;使得在骨干网中传递的报文有两层802.1Q Tag&#xff08;一层公网Tag&#xff0c;一层私网Tag&#xff…

YOLOv5之Common.py

文章目录 1.学习目的2.网络模型![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/67b8dbd00c9b4034ba370fc8b8a6031a.jpeg)3.common.py分析 1.学习目的 YOLOv5中最关键一个模型类 2.网络模型 3.common.py分析 # Ultralytics YOLOv5 &#x1f680;, AGPL-3.0 license…

5G时代,国产化融合通信行业的新机遇

在5G时代&#xff0c;国产化融合通信行业正在经历重要的转型与崛起&#xff0c;国产化融合通信行业正肩负着重要的社会责任&#xff0c;成为了推动我们社会发展的重要力量。5G技术的高速发展以及大规模的商业应用&#xff0c;使国产化融合通信行业迎来了前所未有的发展机遇。 5…

Spring WebFlux 核心原理(2-2)

1、Project Reactor 核心 1.1、新建项目 新建maven项目&#xff0c;将Project Reactor作为依赖项添加到应用程序中&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:x…

sublime Text的提取查找结果功能

notePad中是 sublime Text是快捷键 ctrlshiftF 点击find就行了&#xff0c;会新建一个文件里面是提取的内容 勾选展示上下文的情况

基于Jeecgboot3.6.3vue3的flowable流程online表单的审批使用介绍

更多技术支持与服务请加入我的知识星球或加我微信&#xff0c;名称:亿事达nbcio技术交流社区https://t.zsxq.com/iPi8F 今天介绍一下基于jeecgboot3.6.3的flowable流程使用online表单进行审批的情况 1、首先建立一个online应用类型的流程&#xff0c;如下&#xff1a; 2、进行…

flink 内存配置(二):设置TaskManager内存

flink 内存配置&#xff08;一&#xff09;&#xff1a;设置Flink进程内存 flink 内存配置&#xff08;二&#xff09;&#xff1a;设置TaskManager内存 flink 内存配置&#xff08;三&#xff09;&#xff1a;设置JobManager内存 flink 内存配置&#xff08;四&#xff09;…

基于SpringBoot沉浸式戏曲文化体验系统【附源码】

基于SpringBoot沉浸式戏曲文化体验系统 效果如下&#xff1a; 系统主页面 系统登陆页面 用户管理页面 戏曲剧目管理页面 戏曲倾听页面 活动信息管理页面 个人中心页面 研究背景 随着互联网技术的飞速发展&#xff0c;传统文化传播方式正面临着前所未有的变革。戏曲作为我国传…

P3-1.【结构化程序设计】第一节——知识要点:算法、顺序结构程序设计、if语句的语法结构及各种用法

讲解视频&#xff1a; P3-1.【结构化程序设计】第一节——知识要点&#xff1a;算法、顺序结构程序设计、if语句的语法结构及各种用法 知识要点&#xff1a;算法、顺序结构程序设计、if语句的语法结构及各种用法 一、算法、顺序结构程序设计任务分析 知识要点&#xff1a;算法…

RAG三件套运行的新选择 - GPUStack

GPUStack 是一个开源的大模型即服务平台&#xff0c;可以高效整合并利用 Nvidia、Apple Metal、华为昇腾和摩尔线程等各种异构的 GPU/NPU 资源&#xff0c;提供本地私有部署大模型解决方案。 GPUStack 可以支持 RAG 系统中所需要的三种关键模型&#xff1a;Chat 对话模型&…

SSM物联网养殖管理系统-计算机毕业设计源码03998

目录 1 绪论 1.1 研究背景和意义 1.2国内外研究现状 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2经济可行性分析 2.1.3操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 系统流程分析…

使用Python进行健康监测和分析的案例研究

健康监测和分析是指系统地使用健康数据来跟踪和评估个人或人群在一段时间内的健康状况。它包含一系列活动&#xff0c;从实时生理数据收集&#xff08;如心率&#xff0c;血压和体温&#xff09;到分析更复杂的健康记录&#xff08;包括患者病史&#xff0c;生活方式选择和遗传…

RHCE 第四次作业

一.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 1.配置环境 [rootlocalhost ~]# yum install bind [rootlocalhost ~]#systemctl stop firewalld [rootlocalhost ~]#setenforce 0 2.配置DNS主服务器 [rootlocalhost ~]# vim /etc/named.conf options { …

打字机效果显示

文章目录 打字机效果显示一、效果图二、视频效果三、代码 打字机效果显示 一、效果图 二、视频效果 B站-打字机效果图 打字机效果 打字机效果 三、代码 框架&#xff1a; <div class"t_title"><span>我的能力</span> <!-- <span>使…

PyQt5实战——翻译的实现,成功爬取微软翻译(可长期使用)经验总结(九)

个人博客&#xff1a;苏三有春的博客 系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序…