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

引言

ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,RPC Call Request 节点用于发起远程过程调用(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&vd_source=5b535ac3589f53abe431d7f6afc44ff4 

1. RPC Call Request 节点简介

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

2. 节点配置
  • 设备:选择目标设备,可以是已经注册在 ThingsBoard 中的设备。
  • 方法:指定要调用的 RPC 方法名称。
  • 参数:设置要传递的参数,可以是静态值、动态表达式或消息中的属性。
  • 超时:设置请求的超时时间,单位为毫秒。
2.1 基本配置示例
{
  "device": "Device1",
  "method": "turnOn",
  "params": {
    "duration": 60
  },
  "timeout": 5000
}
3. 使用场景

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

3.1 设备控制

在设备控制系统中,需要根据用户的指令控制设备的状态,例如开关灯、调节温度等。通过 RPC Call Request 节点,可以向设备发送控制命令。

{
  "device": "LightDevice",
  "method": "turnOn",
  "params": {},
  "timeout": 5000
}
3.2 状态查询

在状态查询系统中,需要根据用户的请求查询设备的状态,例如当前温度、湿度等。通过 RPC Call Request 节点,可以向设备发送状态查询请求。

{
  "device": "SensorDevice",
  "method": "getTemperature",
  "params": {},
  "timeout": 5000
}
3.3 命令执行

在命令执行系统中,需要根据用户的指令执行特定的操作,例如重启设备、更新固件等。通过 RPC Call Request 节点,可以向设备发送命令执行请求。

{
  "device": "ControllerDevice",
  "method": "reboot",
  "params": {},
  "timeout": 5000
}
4. 实际项目中的应用

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

4.1 项目背景

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

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

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

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

    • 配置 RPC Call Request 节点,发起控制灯光的 RPC 请求。
{
  "device": "LightDevice",
  "method": "turnOn",
  "params": {},
  "timeout": 5000
}
  • 配置 RPC Call Request 节点,发起查询温度的 RPC 请求。
{
  "device": "SensorDevice",
  "method": "getTemperature",
  "params": {},
  "timeout": 5000
}
  1. 处理数据
    • 根据用户的指令,向设备发送 RPC 请求并处理响应。
// 控制灯光的 RPC 方法
public void controlLight(String deviceId, String method) {
    JsonNode params = JsonNodeFactory.instance.objectNode();
    rpcCallRequestNode.call(deviceId, method, params, 5000);
}

// 查询温度的 RPC 方法
public void getTemperature(String deviceId) {
    JsonNode params = JsonNodeFactory.instance.objectNode();
    JsonNode response = rpcCallRequestNode.call(deviceId, "getTemperature", params, 5000);
    double temperature = response.get("temperature").asDouble();
    System.out.println("当前温度: " + temperature);
}
  1. 前端界面

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

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

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

   🌐 项目地址

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、付费专栏及课程。

余额充值