当前位置: 首页 > news >正文

ThingsBoard规则链节点:RPC Call Reply节点详解

引言

1. RPC Call Reply 节点简介

2. 节点配置

2.1 基本配置示例

3. 使用场景

3.1 设备控制

3.2 状态查询

3.3 命令执行

4. 实际项目中的应用

4.1 项目背景

4.2 项目需求

4.3 实现步骤

5. 总结


引言

ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,RPC Call Reply 节点用于回复远程过程调用(RPC)请求,这对于实现实时交互和设备控制非常有用。

ThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台_哔哩哔哩_bilibiliThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台共计34条视频,包括: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. RPC Call Reply 节点简介

RPC Call Reply 节点的主要作用是在规则链执行过程中回复远程过程调用(RPC)请求。通过 RPC Call Reply 节点,可以将处理结果发送回发起 RPC 请求的客户端或设备,实现双向通信和实时交互。这在设备控制、状态查询和命令执行中非常有用。

2. 节点配置
  • 请求ID:指定要回复的 RPC 请求的 ID,通常从消息中获取。
  • 响应内容:设置要发送的响应内容,可以是静态值、动态表达式或消息中的属性。
2.1 基本配置示例
{"requestId": "${msg.rpcRequestId}","response": {"status": "SUCCESS","result": "${msg.result}"}
}
3. 使用场景

RPC Call Reply 节点在多种场景下都非常有用,特别是在需要实现实时交互和设备控制时。以下是一些具体的应用场景:

3.1 设备控制

在设备控制系统中,需要根据用户的指令控制设备的状态,例如开关灯、调节温度等。通过 RPC Call Reply 节点,可以将控制结果反馈给用户。

{"requestId": "${msg.rpcRequestId}","response": {"status": "SUCCESS","result": "Light turned on"}
}
3.2 状态查询

在状态查询系统中,需要根据用户的请求查询设备的状态,例如当前温度、湿度等。通过 RPC Call Reply 节点,可以将查询结果反馈给用户。

{"requestId": "${msg.rpcRequestId}","response": {"status": "SUCCESS","result": {"temperature": "${msg.temperature}","humidity": "${msg.humidity}"}}
}
3.3 命令执行

在命令执行系统中,需要根据用户的指令执行特定的操作,例如重启设备、更新固件等。通过 RPC Call Reply 节点,可以将执行结果反馈给用户。

{"requestId": "${msg.rpcRequestId}","response": {"status": "SUCCESS","result": "Device restarted successfully"}
}
4. 实际项目中的应用

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

4.1 项目背景

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

4.2 项目需求
  • 支持用户通过手机应用控制家中的灯光、空调等设备。
  • 支持用户查询设备的状态,例如当前温度、湿度等。
  • 实现实时反馈,确保用户能够及时了解操作结果。
4.3 实现步骤
  1. 部署设备

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

    • 添加 RPC Call Reply 节点,用于回复 RPC 请求。
    • 添加其他处理节点,如设备控制、状态查询和数据存储。
  3. 配置规则链

    • 配置 RPC Call Reply 节点,回复控制灯光的 RPC 请求。
{"requestId": "${msg.rpcRequestId}","response": {"status": "SUCCESS","result": "Light turned on"}
}
  • 配置 RPC Call Reply 节点,回复查询温度的 RPC 请求。
{"requestId": "${msg.rpcRequestId}","response": {"status": "SUCCESS","result": {"temperature": "${msg.temperature}","humidity": "${msg.humidity}"}}
}
  1. 处理数据
    • 根据用户的指令,控制设备的状态并生成响应。
// 控制灯光的 RPC 方法
public void controlLight(String action) {if ("on".equals(action)) {// 打开灯光turnOnLight();sendRpcReply("SUCCESS", "Light turned on");} else if ("off".equals(action)) {// 关闭灯光turnOffLight();sendRpcReply("SUCCESS", "Light turned off");}
}// 发送 RPC 回复
private void sendRpcReply(String status, String result) {JsonNode response = JsonNodeFactory.instance.objectNode().put("status", status).put("result", result);rpcCallReplyNode.reply(msg.getRpcRequestId(), response);
}
  1. 前端界面

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

    • 使用 ThingsBoard 的 REST API 或 GraphQL 查询,获取历史数据和控制记录。
GET /api/plugins/telemetry/DEVICE/{deviceId}/values/timeseries?keys=temperature,humidity&startTs={startTimestamp}&endTs={endTimestamp}
5. 总结

RPC Call Reply 节点在 ThingsBoard 规则链中是一个非常有用的工具,可以帮助回复远程过程调用(RPC)请求,实现实时交互和设备控制。通过合理地使用 RPC Call Reply 节点,可以更好地管理和自动化系统中的各种操作。无论是在智能家居、工业监控还是其他物联网应用中,RPC Call Reply 节点都能发挥重要作用。

  🌐 项目地址

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

相关文章:

ThingsBoard规则链节点:RPC Call Reply节点详解

引言 1. RPC Call Reply 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 设备控制 3.2 状态查询 3.3 命令执行 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,提供了设备管理…...

【AI换装整合包及教程】OOTDiffusion:以AI技术引领的时尚换装革命

在当今数字化快速发展的时代,人工智能(AI)技术正以前所未有的速度改变着我们的生活。从智能家居到自动驾驶,从在线教育到虚拟现实,AI的应用范围正在不断扩展。而在时尚领域,一款名为OOTDiffusion&#xff0…...

排序算法详细总结

算法 定义:算法是解决特定问题的明确步骤集合。算法的效率通常用时间复杂度和空间复杂度来衡量。 排序算法 定义:排序算法是计算机科学中用于对元素序列进行排序的一系列算法。排序算法在各种应用中都非常常见,从简单的数据处理到复杂的数…...

uniapp MD5加密

安装: npm install js-md5 -D 引入: import Md5 from js-md5 需求加密一个对象, login_form: {openId: 123456789,phone: ,scenario: 656677,phoneSessionKey: ,openIdSessionKey: ,timeStamp: , }, //10位时间戳(秒)…...

提升视觉回归测试体验:Cypress 插件推荐

项目介绍 在现代前端开发中,视觉回归测试是确保用户界面在不同版本之间保持一致性的关键步骤。然而,传统的视觉回归测试工具往往复杂且难以使用。为了解决这一问题,我们推荐一款专为 Cypress 设计的插件:Cypress Plugin Visual Re…...

fastbootd模式刷android固件的方法

1. fastbootd追根溯源 Google在Android 10上正式引入了动态分区机制来提升OTA的可扩展性。动态分区使能后:andorid系统可以在开机阶段动态地进行分区创建、分区销毁、分区大小调整等操作,下游厂商只需要规划好super分区的总大小,其内部的各个…...

基于C#实现Windows后台窗口操作与图像处理技术分析

在Windows编程中,操作后台窗口是一项复杂而有用的技术。它可以用来自动化用户界面测试、应用程序机器人等场景。本文将深入探讨如何在C#中绑定后台窗口、获取后台窗口界面图片,以及在图片中寻找指定图标并获取坐标。本技术文章结合最先进的资料与实践经验…...

戴尔电脑 Bios 如何进入?Dell Bios 进入 Bios 快捷键是什么?

BIOS(基本输入输出系统)是计算机启动时运行的第一个程序,它负责初始化硬件并加载操作系统。对于戴尔电脑用户来说,有时可能需要进入 BIOS 进行一些特定的设置调整,比如更改启动顺序、调整性能选项或解决硬件兼容性问题…...

数据结构之二叉树——堆 详解(含代码实现)

1.堆 如果有一个关键码的集合 K { , , , … ,},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,则称为小堆( 或大堆 ) 。将根节点最大的堆叫做最大堆或大根堆,根节点最小的…...

推荐一款面向增材制造的高效设计平台:nTopology

nTopology是一款面向增材制造的高效设计平台,平台预置了大量增材制造常用的设计工具包,工程师通过调用若干个预置工具包、或自主开发定制的工具包,建立一个工作流,实现复杂几何结构的参数化设计。nTopology集合了的强大几何建模和…...

SQL,力扣题目1767,寻找没有被执行的任务对【递归】

一、力扣链接 LeetCode_1767 二、题目描述 表:Tasks ------------------------- | Column Name | Type | ------------------------- | task_id | int | | subtasks_count | int | ------------------------- task_id 具有唯一值的列。 ta…...

JavaScript数据类型- Symbol 详解

文章目录 前言1.唯一性2. 描述3. 作为对象属性键4. 全局注册6. 不可变性7. 隐式转换 前言 Symbol是ES6新增内容,代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题 在JavaScript发展的过程中,其中的ES6带…...

WordPress网站添加嵌入B站视频,自适应屏幕大小,取消自动播放

结合bv号 改成以下嵌入式代码&#xff08;自适应屏幕大小,取消自动播放&#xff09; <iframe style"width: 100%; aspect-ratio: 16/9;" src"//player.bilibili.com/player.html?isOutsidetrue&bvidBV13CSVYREpr&p1&autoplay0" scrolling…...

11.6 校内模拟赛总结

打的很顺的一场 复盘 7:40 开题&#xff0c;看到题目名很interesting T1 看起来很典&#xff0c;中位数显然考虑二分&#xff0c;然后就是最大子段和&#xff1b;T2 构造&#xff1f;一看数据范围这么小&#xff0c;感觉不是很难做&#xff1b;T3 神秘数据结构&#xff1b;T…...

Redis常用的五大数据类型(列表List,集合set)

简介 List 的特点&#xff1a;单键多值。底层实际是个双向链表&#xff0c;对两端的操作性能很高&#xff0c;通过索引下标的操作中间的节点性能会较差。 Redis 列表是简单的字符串列表&#xff0c;按照插入顺序排序。你可以添加一个元素到列表的头部&#xff08;左边&#xff…...

Ubuntu 20.04 部署向量数据库 Milvus + Attu

前言 最开始在自己的办公电脑&#xff08;无显卡的 windows 10 系统&#xff09; 上使用 Docker Desktop 部署了 Milvus 容器&#xff0c;方便的很&#xff0c; 下载 Attu 也很方便&#xff0c;直接就把这个向量数据库通过 Attu 这个图形化界面跑了起来&#xff0c;使用起来感…...

实现数传数据转网口(以太网)和遥控器SBUS信号转串口的功能

为了帮助你实现数传数据转网口&#xff08;以太网&#xff09;和SBUS信号转串口的功能&#xff0c;这里提供一个基本的框架。我们将使用STM32微控制器来完成这些任务。假设你已经具备了STM32的基本开发经验&#xff0c;并且已经安装了相应的开发环境&#xff08;如STM32CubeIDE…...

APP 后台广告位配置的关键要素与策略

在当今数字化营销的浪潮中&#xff0c;APP 作为重要的信息传播渠道&#xff0c;其后台广告位的配置显得尤为关键。这不仅影响着广告的展示效果&#xff0c;还直接关系到用户体验和平台收益。 首先&#xff0c;了解目标受众是配置广告位的基础。通过对 APP 用户的行为数据进行分…...

分布式数据库概述

分布式数据库概述 分布式数据库是一种将数据分散存储在多个物理节点上的数据库系统,这些节点通过网络相互连接,形成一个逻辑上统一的数据库系统。它旨在提高数据的可用性、可靠性、性能和可扩展性,是现代大数据和云计算环境下不可或缺的重要技术。 一、分布式数据库的核心…...

用通义灵码帮助实现校验bpmn.js当前画布上只能有一个开始节点的功能

最终代码&#xff1a; const elementRegistry this.bpmnModeler.get(elementRegistry);// 获取所有元素const allElements elementRegistry.getAll();// 过滤出开始节点const startEvents allElements.filter(element > element.type bpmn:StartEvent);// 校验开始节点的…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

Qt的学习(二)

1. 创建Hello Word 两种方式&#xff0c;实现helloworld&#xff1a; 1.通过图形化的方式&#xff0c;在界面上创建出一个控件&#xff0c;显示helloworld 2.通过纯代码的方式&#xff0c;通过编写代码&#xff0c;在界面上创建控件&#xff0c; 显示hello world&#xff1b; …...