ThingsBoard规则链节点:AWS SQS 节点详解

引言

ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,AWS SQS 节点用于将消息发送到 Amazon Simple Queue Service (SQS) 队列。

ThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台_哔哩哔哩_bilibiliThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台共计36条视频,包括:1、ThingsBoard项目介绍、2、ThingsBoard前端Vue版本代码编译、3、ThingsBoard本地后端源码编译等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1CH36egEDM/?spm_id_from=333.999.0.0&vd_source=5b535ac3589f53abe431d7f6afc44ff4

1. AWS SQS 节点简介

AWS SQS 节点的主要作用是在规则链执行过程中,将消息发送到 Amazon SQS 队列。Amazon SQS 是一种完全托管的消息队列服务,支持消息的异步传递,适用于解耦和分布式系统之间的通信。通过使用 AWS SQS 节点,可以将设备上报的数据或处理结果发送到 SQS 队列,再由其他服务或系统消费这些消息,实现异步处理和解耦。

2. 节点配置
  • AWS 区域:选择 AWS 服务所在的区域。
  • 访问密钥:提供 AWS 访问密钥,用于身份验证。
  • 秘密密钥:提供 AWS 秘密密钥,用于身份验证。
  • 队列 URL:指定要发送消息的 SQS 队列的 URL。
  • 消息:指定要发送的消息内容,可以是静态文本或动态变量。
2.1 基本配置示例
复制代码
{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/YourQueueName",
  "message": "This is a test message from ThingsBoard"
}
3. 使用场景

AWS SQS 节点在多种场景下都非常有用,特别是在需要实现异步处理和解耦的场景中。以下是一些具体的应用场景:

3.1 数据处理

在需要将设备上报的数据异步处理时,可以通过 AWS SQS 节点将数据发送到 SQS 队列,再由其他服务或系统消费这些消息进行处理。

复制代码
{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/DataProcessingQueue",
  "message": "Device ${msg.deviceId} reported data: ${msg.data}"
}
3.2 任务调度

在需要调度任务时,可以通过 AWS SQS 节点将任务消息发送到 SQS 队列,再由任务调度系统消费这些消息执行任务。

复制代码
{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/TaskSchedulingQueue",
  "message": "Task scheduled for device ${msg.deviceId}: ${msg.taskDetails}"
}
3.3 事件通知

在需要发送事件通知时,可以通过 AWS SQS 节点将事件消息发送到 SQS 队列,再由事件处理系统消费这些消息进行通知。

复制代码
{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/EventNotificationQueue",
  "message": "Event occurred for device ${msg.deviceId}: ${msg.eventType}"
}
4. 实际项目中的应用

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

4.1 项目背景

假设我们正在开发一个智能家居系统,该系统需要支持用户通过手机应用控制家中的灯光、空调等设备,并记录设备的状态和使用情况。此外,还需要实现数据处理、任务调度和事件通知功能。

4.2 项目需求
  • 记录设备的状态,例如当前温度、湿度等。
  • 记录设备的使用情况,例如开关次数、能耗等。
  • 实现实时反馈,确保用户能够及时了解操作结果。
  • 将设备上报的数据异步处理。
  • 调度定期任务,例如定时开关设备。
  • 发送事件通知,例如设备故障通知。
4.3 实现步骤
  1. 部署设备:

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

    • 添加 AWS SQS 节点,用于将设备上报的数据发送到 SQS 队列,再由其他服务或系统消费这些消息进行处理。
    • 添加其他处理节点,如设备控制、状态查询和数据存储。
  3. 配置规则链

    • 配置 AWS SQS 节点,用于发送数据处理消息。

    {
    "region": "us-east-1",
    "accessKey": "YOUR_ACCESS_KEY",
    "secretKey": "YOUR_SECRET_KEY",
    "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/DataProcessingQueue",
    "message": "Device {msg.deviceId} reported data: {msg.data}"
    }

  1. 处理数据 :

    • 根据业务逻辑,动态地发送数据处理、任务调度和事件通知消息。

    // 发送数据处理消息
    public void sendDataProcessingMessage(String deviceId, String data) {
    // 配置 AWS SQS 节点
    JsonNode config = JsonNodeFactory.instance.objectNode()
    .put("region", "us-east-1")
    .put("accessKey", "YOUR_ACCESS_KEY")
    .put("secretKey", "YOUR_SECRET_KEY")
    .put("queueUrl", "https://sqs.us-east-1.amazonaws.com/123456789012/DataProcessingQueue")
    .put("message", "Device " + deviceId + " reported data: " + data);

    复制代码
     awsSqsNode.sendMessage(config);

    }

    // 发送任务调度消息
    public void sendTaskSchedulingMessage(String deviceId, String taskDetails) {
    // 配置 AWS SQS 节点
    JsonNode config = JsonNodeFactory.instance.objectNode()
    .put("region", "us-east-1")
    .put("accessKey", "YOUR_ACCESS_KEY")
    .put("secretKey", "YOUR_SECRET_KEY")
    .put("queueUrl", "https://sqs.us-east-1.amazonaws.com/123456789012/TaskSchedulingQueue")
    .put("message", "Task scheduled for device " + deviceId + ": " + taskDetails);

    复制代码
     awsSqsNode.sendMessage(config);

    }

    // 发送事件通知消息
    public void sendEventNotificationMessage(String deviceId, String eventType) {
    // 配置 AWS SQS 节点
    JsonNode config = JsonNodeFactory.instance.objectNode()
    .put("region", "us-east-1")
    .put("accessKey", "YOUR_ACCESS_KEY")
    .put("secretKey", "YOUR_SECRET_KEY")
    .put("queueUrl", "https://sqs.us-east-1.amazonaws.com/123456789012/EventNotificationQueue")
    .put("message", "Event occurred for device " + deviceId + ": " + eventType);

    复制代码
     awsSqsNode.sendMessage(config);

    }

  2. 前端界面:

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

    • 使用 SQL 查询,获取设备的状态和使用情况。

    SELECT * FROM device_status WHERE device_id = 'device1' ORDER BY timestamp DESC LIMIT 10;
    SELECT * FROM device_usage WHERE device_id = 'device1' ORDER BY timestamp DESC LIMIT 10;

5. 总结

AWS SQS 节点在 ThingsBoard 规则链中是一个非常有用的工具,可以帮助你将消息发送到 Amazon SQS 队列,实现异步处理和解耦。通过合理地使用 AWS SQS 节点,可以在数据处理、任务调度和事件通知等场景中,确保系统的高效性和灵活性。

🌐 项目地址

Things Vuehttp://thingsvue.tpson.cn:7772/#/login?redirect=/tb-home/index

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

🎽 安装使用

获取项目代码:

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

相关推荐
朱包林13 小时前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
酒神dnspup16 小时前
IPv6 网站访问异常怎么查?DNSPup 双栈检测、DNS 与端口排障指南
运维·云计算·域名·dns·dnspup
workflower1 天前
矿用机器人人工智能安全与治理体系
人工智能·安全·机器学习·机器人·云计算·无人机
怪奇云呼军1 天前
教育试听预约后没到课,闪电智能 Voice Agent 如何做分层回访?
人工智能·python·算法·云计算·音视频
yichengerp2 天前
国内中小电子工厂用哪个erp系统好?
大数据·运维·人工智能·云计算·制造
sbjdhjd2 天前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
GPU实战笔记2 天前
项目网盘大文件上传:暂停与取消的事实边界
云计算·文件上传·项目网盘·gpu云服务器
workflower2 天前
汽车自动驾驶9 要素
人工智能·机器学习·重构·云计算·汽车·无人机
阿乔外贸日记3 天前
全球电子产业高度集中:中、韩、日和中国台湾地区占全球数字硬件产能八成
大数据·服务器·人工智能·物联网·云计算