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

ops/2024/11/25 13:42:52/

目录

引言

1. AWS SNS 节点简介

2. 节点配置

2.1 基本配置示例

3. 使用场景

3.1 设备报警

3.2 数据同步

3.3 用户通知

4. 实际项目中的应用

4.1 项目背景

4.2 项目需求

4.3 实现步骤

5. 总结


引言

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

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 SNS 节点简介

AWS SNS 节点的主要作用是在规则链执行过程中,将消息发布到 Amazon SNS 主题。Amazon SNS 是一种完全托管的发布/订阅消息传递服务,支持多种消息协议和终端节点,包括电子邮件、短信、HTTP、HTTPS、SQS 等。通过使用 AWS SNS 节点,可以将设备上报的数据或处理结果发送到不同的终端节点,实现通知和消息传递。

2. 节点配置
  • AWS 区域:选择 AWS 服务所在的区域。
  • 访问密钥:提供 AWS 访问密钥,用于身份验证。
  • 秘密密钥:提供 AWS 秘密密钥,用于身份验证。
  • 主题 ARN:指定要发布的 SNS 主题的 Amazon Resource Name (ARN)。
  • 消息:指定要发布的消息内容,可以是静态文本或动态变量。
2.1 基本配置示例
{"region": "us-east-1","accessKey": "YOUR_ACCESS_KEY","secretKey": "YOUR_SECRET_KEY","topicArn": "arn:aws:sns:us-east-1:123456789012:YourTopicName","message": "This is a test message from ThingsBoard"
}
3. 使用场景

AWS SNS 节点在多种场景下都非常有用,特别是在需要将消息发送到不同终端节点或实现通知机制时。以下是一些具体的应用场景:

3.1 设备报警

在设备检测到异常情况时,可以通过 AWS SNS 节点将报警信息发送到指定的终端节点,例如发送短信或电子邮件通知相关人员。

{"region": "us-east-1","accessKey": "YOUR_ACCESS_KEY","secretKey": "YOUR_SECRET_KEY","topicArn": "arn:aws:sns:us-east-1:123456789012:AlarmNotifications","message": "Device ${msg.deviceId} has detected an anomaly: ${msg.anomalyType}"
}
3.2 数据同步

在需要将设备上报的数据同步到其他系统或服务时,可以通过 AWS SNS 节点将数据发送到指定的 SNS 主题,再由其他服务订阅该主题并处理数据。

{"region": "us-east-1","accessKey": "YOUR_ACCESS_KEY","secretKey": "YOUR_SECRET_KEY","topicArn": "arn:aws:sns:us-east-1:123456789012:DataSyncTopic","message": "Device ${msg.deviceId} reported data: ${msg.data}"
}
3.3 用户通知

在需要向用户发送通知时,可以通过 AWS SNS 节点将通知信息发送到用户的终端节点,例如发送电子邮件或推送通知。

{"region": "us-east-1","accessKey": "YOUR_ACCESS_KEY","secretKey": "YOUR_SECRET_KEY","topicArn": "arn:aws:sns:us-east-1:123456789012:UserNotifications","message": "Dear user, your device ${msg.deviceId} has been successfully updated."
}
4. 实际项目中的应用

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

4.1 项目背景

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

4.2 项目需求
  • 记录设备的状态,例如当前温度、湿度等。
  • 记录设备的使用情况,例如开关次数、能耗等。
  • 实现实时反馈,确保用户能够及时了解操作结果。
  • 在设备检测到异常情况时,发送报警信息。
  • 在设备更新或操作成功时,发送用户通知。
4.3 实现步骤
  1. 部署设备

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

    • 添加 AWS SNS 节点,用于将报警信息和用户通知发送到指定的 SNS 主题。
    • 添加其他处理节点,如设备控制、状态查询和数据存储。
  3. 配置规则链

    • 配置 AWS SNS 节点,用于发送报警信息。
{"region": "us-east-1","accessKey": "YOUR_ACCESS_KEY","secretKey": "YOUR_SECRET_KEY","topicArn": "arn:aws:sns:us-east-1:123456789012:AlarmNotifications","message": "Device ${msg.deviceId} has detected an anomaly: ${msg.anomalyType}"
}
  • 配置 AWS SNS 节点,用于发送用户通知。
{"region": "us-east-1","accessKey": "YOUR_ACCESS_KEY","secretKey": "YOUR_SECRET_KEY","topicArn": "arn:aws:sns:us-east-1:123456789012:UserNotifications","message": "Dear user, your device ${msg.deviceId} has been successfully updated."
}
  1. 处理数据
    • 根据业务逻辑,动态地发送报警信息和用户通知。
// 发送报警信息
public void sendAlarmNotification(String deviceId, String anomalyType) {// 配置 AWS SNS 节点JsonNode config = JsonNodeFactory.instance.objectNode().put("region", "us-east-1").put("accessKey", "YOUR_ACCESS_KEY").put("secretKey", "YOUR_SECRET_KEY").put("topicArn", "arn:aws:sns:us-east-1:123456789012:AlarmNotifications").put("message", "Device " + deviceId + " has detected an anomaly: " + anomalyType);awsSnsNode.publish(config);
}// 发送用户通知
public void sendUserNotification(String deviceId, String message) {// 配置 AWS SNS 节点JsonNode config = JsonNodeFactory.instance.objectNode().put("region", "us-east-1").put("accessKey", "YOUR_ACCESS_KEY").put("secretKey", "YOUR_SECRET_KEY").put("topicArn", "arn:aws:sns:us-east-1:123456789012:UserNotifications").put("message", "Dear user, your device " + deviceId + " " + message);awsSnsNode.publish(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 SNS 节点在 ThingsBoard 规则链中是一个非常有用的工具,可以帮助你将消息发布到 Amazon SNS 主题,实现通知和消息传递。通过合理地使用 AWS SNS 节点,可以在设备报警、数据同步和用户通知等场景中,确保系统的高效性和灵活性。无论是在智能家居、工业监控还是其他物联网应用中,AWS SNS 节点都能发挥重要作用。

    🌐 项目地址

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/ops/136582.html

相关文章

string类的认识

一、初始string类 在 C 中&#xff0c;std::string是标准库提供的用于处理字符串的类。它提供了比 C 风格字符串&#xff08;以\0结尾的字符数组&#xff09;更方便、更安全的字符串处理方式。 要使用std::string&#xff0c;需要包含<string>头文件。并且&#xff0c;st…

Vulnhub靶场 Jangow: 1.0.1 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 命令执行2. 反弹shell3. 提权4. 补充4.1 其他思路4.2 问题 0x04 总结 0x00 准备 下载链接&#xff1a;https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 介绍&#xff1a; Difficulty: easy…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二十集:制作专门渲染HUD的相机HUD Camera和画布HUD Canvas

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作HUD Camera以及让两个相机同时渲染屏幕二、制作HUD Canvas 1.制作法力条Soul Orb引入库2.制作生命条Health读入数据3.制作吉欧统计数Geo Counter4.制作…

【jvm】从字节码角度看待对象创建流程

目录 1. 分配内存空间2. 初始化内存空间为零值3. 设置对象头4. 调用构造函数初始化对象5. 示例代码6. 字节码指令解析 1. 分配内存空间 1.在Java中&#xff0c;对象存储在堆&#xff08;Heap&#xff09;内存中。2.当创建一个新对象时&#xff0c;JVM首先需要为对象分配一块内…

ONNX 输入batch修改

ONNX 输入batch修改 导出的onnx模型分为静态和动态输入两种&#xff0c;但一般用户会在导出后进行onnxsim操作&#xff0c;导致某些非全卷积的模型修改batch失败&#xff0c;比如transformer类其中reshape的attr属性会固定&#xff0c;修改相当麻烦&#xff0c;需要从源头重新…

Git命令使用与原理详解

1.仓库 # 在当前目录新建一个Git代码库 $ git init ​ # 新建一个目录&#xff0c;将其初始化为Git代码库 $ git init [project-name] ​ # 下载一个项目和它的整个代码历史 $ git clone [url]2.配置 # 显示当前的Git配置 $ git config --list ​ # 编辑Git配置文件 $ git co…

UE5 slate BlankProgram独立程序系列

源码版Engine\Source\Programs\中copy BlankProgram文件夹&#xff0c;重命名为ASlateLearning&#xff0c;修改所有文件命名及内部名称。 ASlateLearning.Target.cs // Copyright Epic Games, Inc. All Rights Reserved.using UnrealBuildTool; using System.Collections.Ge…

Java的包装类及其缓存机制

Java的包装类及其缓存机制 ​ Java 的包装类&#xff08;Wrapper Classes&#xff09;是为每种基本数据类型提供的对象表示。基本数据类型&#xff08;如 int、double 等&#xff09;是非对象类型&#xff0c;而包装类为它们提供了对应的对象版本&#xff0c;以便可以在需要对…