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

devtools/2024/11/7 23:01:40/

引言

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


http://www.ppmy.cn/devtools/132146.html

相关文章

深入理解Spring、SpringMVC、SpringBoot和Spring Cloud的区别与用法

引言: 在Java开发领域,Spring框架家族的成员Spring、SpringMVC、SpringBoot和Spring Cloud扮演着举足轻重的角色。它们各自具有独特的功能和用途,为开发者提供了强大的工具集,以简化应用程序的开发、测试和部署。本文将详细介绍这…

Linux云计算 |【第五阶段】CLOUD-DAY6

主要内容: 了解Kubernetes的架构、搭建Kubernetes集群 一、Kubernetes 概述 Kubernetes 这个名字来自希腊语,意思是“舵手”或“领航员”;K8S 是 Kubernetes 的缩写,其中“8”代表字母“ubernete”中的8个字母。Kubernetes 是由…

【Java语言】抽象类与接口

抽象类 抽象类:一个类中没有包含详细的信息来描述一个对象,一般抽象类都是父类而且没有描述一个具体的对象。举一个例子吧: 父类Animal中的back方法好像并没有什么实际工作,都是由 Animal的各种子类的back方法来完成的&#xff0…

CSS中常见的两列布局、三列布局、百分比和多行多列布局!

目录 一、两列布局 1、前言: 2. 两列布局的常见用法 两列布局的元素示例: 代码运行后如下: 二、三列布局 1.前言 2. 三列布局的常见用法 三列布局的元素示例: 代码运行后如下: 三、多行多列 1.前言 2&…

【5.9】指针算法-双指针解验证回文字符串 Ⅱ

一、题目 给定一个非空字符串s, 最多删除一个字符 。判断是否能成为回文字符串。 示例 1: 输入: s "aba " 输出: true 示例 2: 输入: s "abca" 输出: true 解释: 你可以删除c字符。 示例 3: 输入: s "abc" 输出: false 提示: 1 &l…

基于python主观题自动阅卷系统毕业设计项目

基于python主观题自动阅卷系统毕业设计项目 大家好,我是陈辰学长,一名在 Java 圈辛勤劳作的码农。今日,要和大家分享的是一款基于python主观题自动阅卷系统毕业设计。项目源码以及部署相关事宜,请联系陈辰学长,文末会…

stm32不小心把SWD和JTAG都给关了,程序下载不进去,怎么办?

因为想用STM32F103的PA15引脚,调试程序的时候不小心把SWD和JTAD接口都给关了,先看下罪魁祸首 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关掉JTAG,不关SWGPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//关掉SW&am…

想转行网络安全,可以先看看过来人的建议

在当前就业形势下,不少朋友面临转行的困境。网络安全作为一个热门领域,自然也吸引了许多人的目光。本文将就转行网络安全这一话题,提供一些切实可行的建议。 网络安全行业概况 网络安全涵盖了从基础的脚本编写到高级的漏洞研究等多个层面。…