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

引言

[1. RPC Call Reply 节点简介](#1. RPC Call Reply 节点简介)

[2. 节点配置](#2. 节点配置)

[2.1 基本配置示例](#2.1 基本配置示例)

[3. 使用场景](#3. 使用场景)

[3.1 设备控制](#3.1 设备控制)

[3.2 状态查询](#3.2 状态查询)

[3.3 命令执行](#3.3 命令执行)

[4. 实际项目中的应用](#4. 实际项目中的应用)

[4.1 项目背景](#4.1 项目背景)

[4.2 项目需求](#4.2 项目需求)

[4.3 实现步骤](#4.3 实现步骤)

[5. 总结](#5. 总结)


引言

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

ThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台_哔哩哔哩_bilibiliThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台共计34条视频,包括:1、ThingsBoard项目介绍、2、ThingsBoard前端Vue版本代码编译、3、ThingsBoard本地后端源码编译等,UP主更多精彩视频,请关注UP账号。https://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);
    }

  2. 前端界面:

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

    • 使用 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 Vuehttp://thingsvue.tpson.cn:7772/#/login?redirect=/tb-home/index

复制代码
账号:admin@thingsboard.org 
密码:admin123456

🎽 安装使用

获取项目代码:

代码地址https://gitee.com/tpsonwell_admin/thingsvue

相关推荐
GlobalInfo9 小时前
2026年全球机器人用超平执行器市场研究报告:市场规模达7.51亿美元,人形机器人商业化与轻量化运动控制需求推动行业增长
大数据·人工智能·数码相机·microsoft·机器人
小鱼仙官13 小时前
Qt 主界面弹出分界面
开发语言·qt
编码者卢布17 小时前
【Azure Container Apps】为什么通过 Diagnostic Settings 发送到 Log Analytics 中的日志会延迟几分钟?
microsoft·azure
誰能久伴不乏18 小时前
用 UDP 做一条“可靠“的控制通道
c++·qt·网络协议·udp
0x000719 小时前
微软intelligent-terminal:Windows 的官方内置Agent Cli
microsoft
海盗123420 小时前
微软技术日报 2026-11-02:开发者环境服务退役、Defender 清点本地 AI 代理
人工智能·microsoft·机器人·人工智能aigc
Bczheng11 天前
VS2022 安装MFC和QT
c++·qt·mfc
会编程的小孩1 天前
8.19号函数
qt
聪明蛋子哟2 天前
高扩展性AI应用架构指南:融合RAG检索、Agent编排与OpenAPI/RPC工具网关的设计模式
人工智能·rpc·架构
蓝祁子yoky2 天前
Qt学习日记 Day15:网络编程(二)- UDP基础
网络·qt·学习