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

目录

引言

[1. AWS SNS 节点简介](#1. AWS SNS 节点简介)

[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 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,AWS SNS 节点用于将消息发布到 Amazon Simple Notification Service (SNS) 主题。

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 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);
    

    }

  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 SNS 节点在 ThingsBoard 规则链中是一个非常有用的工具,可以帮助你将消息发布到 Amazon SNS 主题,实现通知和消息传递。通过合理地使用 AWS SNS 节点,可以在设备报警、数据同步和用户通知等场景中,确保系统的高效性和灵活性。无论是在智能家居、工业监控还是其他物联网应用中,AWS SNS 节点都能发挥重要作用。

🌐 项目地址

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

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

🎽 安装使用

获取项目代码:

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

相关推荐
木子Linux3 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
HaoHao_0101 天前
云消息队列 Kafka 版
分布式·阿里云·kafka·云计算·云服务器
sinat_307021532 天前
大数据技术与应用——大数据处理技术(一)(山东省大数据职称考试)
大数据·云计算
HaoHao_0102 天前
云消息队列 RabbitMQ 版
阿里云·云计算·云服务器
終不似少年遊*2 天前
云计算HCIP-OpenStack01
云原生·云计算·学习笔记·openstack·hcip·虚拟化
云计算DevOps-韩老师2 天前
【网络云计算】2024第51周-每日【2024/12/20】小测-理论-周测
云计算
jmoych2 天前
我在华为的安全日常
大数据·运维·网络·安全·华为·架构·云计算
HaoHao_0102 天前
应用实时监控服务ARMS
阿里云·云计算·云服务器
树莓集团2 天前
什么是数字化转型?对企业发展的帮助有哪些?
大数据·人工智能·云计算·新媒体运营·媒体
创实信息2 天前
GitHub企业版:AWS CodeCommit迁移的最佳路径与技术优势
git·ci/cd·github·aws·github企业版·aws codecommit