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账号。icon-default.png?t=O83Ahttps://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}"
}
  • 配置 AWS 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}"
}
  • 配置 AWS 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}"
}
  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);
}
  1. 前端界面

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

    • 使用 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 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922099.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书

目录 一、CA机构 二、Lets Encrypt特点 三、申请SSL 一、CA机构 ‌Lets Encrypt‌是一个由非营利组织Internet Security Research Group (ISRG)运营的证书颁发机构(CA),旨在通过自动化和开放的方式为全球网站提供免费、可靠的SSL/TLS证书。…

二进制 分析工具:Radare2、r2frida、Binutils、file、string、as、nm、ldd、objdump、readelf、strip

1、二进制 分析工具 工欲善其事,必先利其器,在二进制安全的学习中,​使用工具尤为重要。遇到一个不熟悉的文件时, 首先要确定 "这是什么类型的文件",回答这个问题的首要原则是,绝不要根据文件的扩…

如何通过OpenSSL来创建自签名的CA证书?

通过创建自签名CA证书可以让我们在没有商业支持的情况下学习与研究PKI(公钥基础设施)和SSL/TLS技术,本文将详细介绍如何通过OpenSSL来创建自签名的CA证书。 1. 初衷:为什么需要创建自签名CA证书? 除了开篇引言中提到的…

浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)

首先,在InternStudio平台上创建开发机。 创建成功后点击进入开发机打开WebIDE。进入后在WebIDE的左上角有三个logo,依次表示JupyterLab、Terminal和Code Server,我们使用Terminal就行。(JupyterLab可以直接看文件夹)…

vscode下面python调试报错ImportError: cannot import name ‘Literal‘ from ‘typing‘

1 问题描述 我在vscode下面编写python程序,这个程序是在一个英伟达anoconda环境下的项目。之前能运行能调试,最近发现只能运行ctlf5,但是使用f5进行调试时,报错“File “c:\Users\86137.vscode\extensions\ms-python.debugpy-202…

订单日记为“惠采科技”提供全方位的进销存管理支持

感谢温州惠采科技有限责任公司选择使用订单日记! 温州惠采科技有限责任公司,成立于2024年,位于浙江省温州市,是一家以从事销售电气辅材为主的企业。 在业务不断壮大的过程中,想使用一种既能提升运营效率又能节省成本…

应用|“华院计算数智人在第一财经的应用”案例入选《2024年人工智能先锋案例集》

华院计算技术(上海)股份有限公司(以下简称“华院计算”)的 “华院计算数智人在第一财经《秒懂金融》及《新春特别节目》应用”案例在300余个案例申报中脱颖而出,入选中国人工智能产业发展联盟《2024年人工智能先锋案例…

eduSRC挖洞思路

声明 学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍🏻作者简介:致…

86汇编-数据串的输出

在 86 汇编语言中,输出数据串(例如字符串)的方式通常依赖于操作系统和环境。对于 DOS 操作系统,常见的做法是使用 BIOS 中断或 DOS 中断。这里将展示如何在 DOS 环境下使用 86 汇编语言输出一个字符串。 使用 DOS 中断 21h 输出字…

【贪心算法第二弹——2208.将数组和减半的最小操作数】

1.题目解析 题目来源 2208.将数组和减半的最小操作数——力扣 测试用例 2.算法原理(贪心策略) 3.实战代码 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> hash;double sum 0.0;for(auto e : nums){hash.push(e);sum …

【2024 Optimal Control 16-745】Ubuntu22.04 安装Julia

找不到Julia 内核 下载Julia curl -fsSL https://install.julialang.org | sh官网下载&#xff1a;Julia 安装 IJulia 打开 Julia REPL&#xff08;在终端中输入 julia&#xff09;并执行以下命令安装 IJulia&#xff1a; using Pkg Pkg.add("IJulia")这将为 Ju…

STM32F103系统时钟配置

时钟是单片机运行的基础&#xff0c;时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏&#xff0c;决定CPU速率&#xff0c;像人的心跳一样 只有有了心跳&#xff0c;人才能做其他的事情&#xff0c;而单片机有了时钟&#xff0c;才能够运行执行指令&#x…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Elasticsearch 是…

Hive分桶超详细!!!

1、分桶的意义 数据分区可能导致有些分区,数据过多&#xff0c;有些分区,数据极少。分桶是将数据集分解为若干部分(数据文件)的另一种技术。 分区和分桶其实都是对数据更细粒度的管理。当单个分区或者表中的数据越来越大&#xff0c;分区不能细粒度的划分数据时&#xff0c;我…

Feed流系统重构:架构篇

重构对我而言&#xff0c;最大的乐趣在于解决问题。我曾参与一个C#彩票算奖系统的重构&#xff0c;那时系统常因超时引发用户投诉。接手任务时&#xff0c;我既激动又紧张&#xff0c;连续两天几乎废寝忘食地编码。结果令人振奋&#xff0c;算奖时间从一小时大幅缩短至十分钟。…

数据结构第一讲

数据结构定义 算法的定义 什么是好算法&#xff1f; 空间复杂度 时间复杂度 例子1 打印1到N之间的正整数 有递归和循环两种方法实现。 但是在数字变大后&#xff0c;递归的方法会导致内存占用过多而崩溃。 而循环则不会 例子2 写程序给定多项式在X处的值 从里往外算的算…

Leetcode226. 翻转二叉树(HOT100)+Leetcode221. 最大正方形(HOT100)

链接 题解&#xff1a; 本题是要镜像反转二叉树&#xff0c;相当于从中间一分&#xff0c;然后把左子树和右子树对调&#xff0c;但又不是简单的对调&#xff0c;还要继续反转子树的子树&#xff0c;所以要用递归。 我们特判root是否为空&#xff08;否则出现nullptr->nul…

Jenkins + gitee 自动触发项目拉取部署(Webhook配置)

目录 前言 Generic Webhook Trigger 插件 下载插件 ​编辑 配置WebHook 生成tocken 总结 前言 前文简单介绍了Jenkins环境搭建&#xff0c;本文主要来介绍一下如何使用 WebHook 触发自动拉取构建项目&#xff1b; Generic Webhook Trigger 插件 实现代码推送后&#xff0c;触…

Dubbo源码解析-服务调用(七)

一、服务调用流程 服务在订阅过程中&#xff0c;把notify 过来的urls 都转成了invoker&#xff0c;不知道大家是否还记得前面的rpc 过程&#xff0c;protocol也是在服务端和消费端各连接子一个invoker&#xff0c;如下图&#xff1a; 这张图主要展示rpc 主流程&#xff0c;消费…

Spring 框架的介绍(Java EE 学习笔记02)

Spring致力于解决Java EE应用中的各种问题&#xff0c;对于一个Java开发者来说&#xff0c;Spring框架的熟练使用是必备的技能之一。Spring具有良好的设计和分层结构&#xff0c;它克服了传统重量型框架臃肿、低效的劣势&#xff0c;大大简化了项目开发中的技术复杂性。 ​ 什…