×

用于健康检查的设备网格

消耗积分:0 | 格式:zip | 大小:0.35 MB | 2022-11-04

386660

分享资料个

描述

当前,COVID-19 大流行要求我们采取行动和日常护理来保护自己,从而实现健康的生活。在一些国家,已经看到混合工作计划重返办公室。

DMHC HOST Probe 是使用 AWS IoT Edukit 及其一些称为单元的传感器创建的设备。它允许我们在定义的时间间隔内远程检查我们的心率、氧饱和度和温度。

它会向我们的手机发送 SMS 警报,或者如果我们将 Slack 会话连接到特定频道,它会记住我们何时必须验证我们的 HOST 值。

例如,可以在办公室使用,让每个工人都有一个探针,我们可以集中验证每个工人的数据。

或者在与他的医生有联系的特定患者中验证这些值的进展,从而立即采取纠正措施。

为此,使用了 Amazon Web Services 云,设备在其中发送这些数据,以使用 Amazon QuickSight 进行处理、存储和咨询,Amazon QuickSight 是在 Amazon Honeycode 和 Grafana 中开发的移动应用程序。

以下部分描述了硬件、基础结构、使用的不同 AWS 云服务以及用于查询已发送数据的选项。

AWS IoT EduKit 硬件端口

这些图像显示了扩展端口 Ext(引脚 22 SCL 和引脚 21 SDA)。它是使用 Proto-13.2 模块白色连接器和塑料盒创建的。白色焊接连接器是端口,并具有以下连接:

  • 引脚 1 - GND(蓝线)
  • 引脚 2 - 5v(红线)
  • 引脚 3 - G21 SDA(洋红色白色)
  • 引脚 4 - G22 SCL(绿线)
 
 
 
poYBAGNkekCATmv7AAz6t4qum6o401.jpg
 
1 / 4原理图 Ext 端口 I2C
 

这些图像显示了端口位置,包括塑料盒内的 Ext 端口,并使用扩展连接器连接到 AWS IoT Edukit。

 
 
 
pYYBAGNkekSAL1C7AAQwKTI7oBI661.jpg
 
1 / 3端口 A (I2C)
 

传感器和模块(M5Stack 单元)及其连接图

  • A端口:Heart Unit是H传感器(心率传感器)
  • 分机端口:迷你集线器
  • Mini Hub端口 1:ENV。III 单元(压力、湿度和温度传感器)
  • Mini Hub端口 2:NCIR 单元是 T 传感器(温度传感器)
  • Mini Hub端口 3:RFID 单元

此图显示了所有使用单元的连接图,包括一个 proto-13.2 板。

poYBAGNkekeADorzAABBJX44EBU585.png
连接所有单元的 AWS IoT Edukit
 

基地建设

连接所有单元和扩展模块后,需要建立一个底座来固定每个单元和 AWS IoT Edukit。

按照自定义零件和外壳部分中的说明使用乐高 EV3 零件。pdf 文件逐步显示,而在 pdr 文件中使用 Ldraw 程序可以遵循 3D 设计。

poYBAGNkekyAV91lAADglqoYfc4972.png
带有 EV3 零件的乐高基础结构
 
 
 
 
pYYBAGNkelOAY-PPAAyAYO804sY317.jpg
 
1 / 3底座与所有部件和控制模块组装在一起
 

DMHC 主机探针软件

固件安装

使用的固件是 UIFlow Core2 v1.8.4 来加载它,将 AWS IoT Edukit 连接到计算机的 USB 端口之一,确保根据平台安装了USB 驱动程序。

下载程序以更新固件,M5Burner并根据平台进行安装。

执行 M5Burner 时,我们必须选择我们的设备连接到的 COM 端口。

poYBAGNkelmAMyxgAAHH74eljTQ012.png
选择您的设备连接的 COM 端口
 

使用登录选项中的帐户创建访问权限,输入后按Bind With Account按钮以将设备与 UIFlow 云链接。

 
 
 
pYYBAGNkelyABSxoAAF22V8whBA647.png
 
1 / 2创建一个帐户登录
 

如果我们选择您的电子邮件,它将显示Device Management打开浏览器的菜单选项,并向我们显示我们可以用来验证设备是否正确链接的信息。

 
 
 
poYBAGNkemCAVnqiAAHeHkSZ9WY508.png
 
1 / 2选择设备管理选项
 

现在我们选择选项 UIFLOW (CORE2) 正确的版本 v1.8.4-core2 并按Download

按下Configuration按钮,在 UIFlow Config 屏幕中,输入您的 Wi-Fi 网络 SSID 和密码的数据,然后按下按钮Save以连接设备以更新固件。

poYBAGNkemKAcETnAABpEAMY5eA220.png
UIFlow 配置
 

按下Burn 按钮并检查将要连接设备的网络的 SSID 和密码数据是否正确,然后按下 按钮Start

此过程完成后,设备将重新启动并显示屏幕,指示它已连接到网络和 UIFlow 云以及我们的 API 密钥。

 
 
 
poYBAGNkemeAE3JwAAEFuj66k1w486.jpg
 
1 / 5按下按钮 刻录
 

在 AWS IoT Core 服务中创建事物

AWS IoT Core 允许将 IoT 设备连接到 AWS 云,而无需预置或管理服务器。

在 AWS 控制台中,转到 AWS IoT Core 并在菜单选项中Manage创建一个事物。Things

  • 按下Create Things按钮
  • 选择Create single thing
  • 对于事物名称:DMHC_HOST_Probe
  • 对于设备证书:自动生成新证书
  • 策略:创建一个新策略AllowAllAccess并复制并粘贴此代码
{
        "Version": "2012-10-17",
        "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:*",
            "Resource": "*"
        }
    ]
}
  • 按下Create Thing按钮
 
 
 
poYBAGNkemqAHxnQAADcWvPxZwY691.png
 
1 / 5创造事物
 

弹出窗口显示所有要下载的证书和密钥。

下载设备证书xxxx.pem.crt和两个额外的公钥xxxx-pubilc.pem.key和私钥很重要xxxx-private.pem.key,因为这将是我们唯一能做的,如果它们丢失了,你必须创建一个新的东西。

需要设备证书和私钥才能建立设备与 AWS IoT Core 服务的通信。

poYBAGNkemyAQZxzAAC7D3ZnZTE910.png
弹出让我们下载证书和密钥
 

除了证书和两个密钥之外,设备还需要端点,即每个事物都有一个可用的 REST API 的 url,以便可以访问 MQTT 客户端和 AWS IoT 设备 SDK。

在菜单选项设置中,您可以查看并复制此地址以在我们将构建的软件中使用它。

pYYBAGNkem-AEc0UAAC8wCjWi9Q995.png
事物端点
 

总之,我们有一个事情:

  • 名称:DMHC_HOST_Probe
  • AWS IoT 端点:a2i2bsijbyml6j-ats.iot.us-west-2.amazonaws.com
  • MQTT 端口:8883
  • 保持活力:60
  • 设备证书:xxxx.pem.crt 重命名为 certificate.pem
  • 私钥文件:xxxx-private.pem.key 重命名为 private.pem

要使用的主题

  • dmhc/host_data→ 发布
  • dmhc/reset← 订阅

将所有资源和软件上传到 AWS IoT Edukit

现在在浏览器中转到flow.m5stack.com ,取消初始弹出屏幕并转到account icon,在弹出登录时添加您之前创建的电子邮件和密码以恢复在固件更新的先前步骤中链接的所有设备信息。

插入 USB 端口 AWS IoT Edukit,启动它并等待它显示 Api Key 屏幕。reconnect iconDisconnected word 右侧的 reconnect device 并更新 ApiKey 和 Version,确认版本至少为v1.8.4.

 
 
 
poYBAGNkenWAEUYfAADuZjOPPKI895.jpg
 
1 / 3转到 flow.m5stack.com
 

现在是时候将所有png图像、所有wav声音文件certificateprivate密钥上传到 AWS IoT Edukit 设备了。这些文件可以从代码部分下载。

 
 
 
poYBAGNkeniALO8_AAEsnGPUb44742.jpg
 
1 / 3上传的图像文件
 

属于 de mesh 的每个设备都必须是保存在 EEProm key 中的唯一 ID device_id

从代码部分打开setDeviceId.m5f,调整其值并运行程序(单击箭头图标),您必须在屏幕上看到该值Saved ID: xxxxx

 
 
 
pYYBAGNkenuARhdNAAFjzMxiVtA264.jpg
 
1 / 2setDeviceId.m5f 程序
 

在 AWS 配置了所有必需的资源后,我们上传启动 HOST Probe 的程序。我们打开dmhcV2.m5f位于代码部分的文件并将其上传到设备。

pYYBAGNken6ALWyOAAKzdxO09zU931.jpg
dmhcv2.m5f 程序
 

该程序是使用 UIFlow 在线编辑器创建的,可以以 Blockly 或 Python 格式查看。

使用的算法如下:

/*
The current time is read.
All images are loaded.
The user interface is painted.
Read ambient temperature, humidity and pressure.
Activate Time to check your health event
    Play wav file
    Activate vibration
    RGB LEDs blink between red and green color.
Activate Heart rate and spo2 review Event
    Play wav file (H sensor)
    RGB Leds blink between red and black
    Starts to read ten values ​​from heart rate and spo2 sensor
    Updates status bar and progress bar
    Saves the values ​​in two lists, one for each concept.
Activate Temperature review event
    Play wav (T Sensor)
    RGB Leds blink between green and black
    Starts reading ten values ​​from temperature sensor
    Updates status bar and progress bar
    Saves values ​​in a list.
Activate Test completed event
    Play wav
Connect to AWS cloud using MQTT protocol.
Read values ​​of three lists created, prepares a Json and publishes it in 
topic dmhc/host_data.
*/

这是一个发送到主题的 Json 示例数据dmhc/host_data

{
    “device_id” : “JCruz”,
    "heartrate" : 120,
    "spo2" : 97,
    "temperature" : 45
}

它订阅了该主题dmhc/reset,因此当它从 AWS 云接收到需要激活读取的信息时,它会重置系统以开始新的周期检查。

此处列出了所有帮助功能的列表:

# Paint user interface, get time and environment data
def DMHC_Init():

# Get time from device, format it and show at user interface
def Get_Time():

# Read from Env III unit temperature, pressure and humidity, 
# format values and show at user interface
def Read_ENV3():

# Begin check process activate vibration, play
# wav, RGB leds blink between red and green
def TimeToCheck():

# Read data from heart and temperature unit sensor 
# and put them at three value lists
def Read_Data():

# Read heart rate and spo2 from Heart Unit, put
# values in two lists and show at user interface
def Read_HeartRate_SpO2():

# Indicate that test was completed
def Test_Completed():

# Read temperature value from NCIR Unit, 
# put it in a list and show at user interface
def Read_Temperature():

# Wait from AWS Cloud that call dmhc/reset
# topic to reset device and begin new process
def fun_dmhc_reset_(topic_data):

主要程序模块:

# DMHC HOST Probe program v2
# 
DMHC_Init()
TimeToCheck()
Read_Data()
Test_Completed()
lb_status.set_text('Connecting to AWS ...')
_thread.stack_size(0)

# Connect to thing endpoint at AWS IoT Core using MQTT protocol
aws = AWS(things_name='DMHC_HOST_Probe', host='a2i2bsijbyml6j-ats.iot.us-west-2.amazonaws.com', port=8883, keepalive=60, cert_file_path="/flash/res/certificate.pem", private_key_path="/flash/res/private.pem")

aws.subscribe(str('dmhc/reset'), fun_dmhc_reset_)
aws.start()
lb_status.set_text('AWS Connected')
_thread.stack_size(0)


# Create a Json with all list data read from sensors and send to AWS cloud
DataJson = {}
while not not len(temp_list):
    DataJson['device_id'] = device_id
    DataJson['heartrate'] = heart_list.pop(0)
    DataJson['spo2'] = spo2_list.pop(0)
    DataJson['temperature'] = temp_list.pop(0)

# Publish to topic dmhc/host_data
aws.publish(str('dmhc/host_data'),str((json.dumps(DataJson))))
lb_status.set_text('Sending data to AWS ...')
_thread.stack_size(0)
lb_status.set_text('Waiting for a new request')

详细完整的代码可以在代码部分下载,文件dmhcV2.py 是完整的MIcroPython代码。

设备(事物)用户界面

poYBAGNkeoSAcEUXAACBcNQlQyk552.png
用户界面
 

附加步骤

要创建 wav 格式的声音文件,AWS Polly可以使用该服务,该服务允许将文本转换为语音。

pYYBAGNkeoeALFQwAAAkuhJnfNA364.png
使用 AWS Polly 生成 wav 文件
 

您需要创建一个 AWS S3 存储桶dmhc-bucket和一个wav/文件夹来存储 AWS Polly 以 mp3 格式生成的文件。最后,下载生成的 mp3 文件并使用online-converter.com服务将它们从 mp3 转换为 wav。

 
 
 
poYBAGNkeoqAWt3DAAEcc0EJPfk713.jpg
 
1 / 5创建存储桶
 

AWS Polly Text-to-Speach 使用的选项是:

  • 语言:美国英语
  • 配音:乔安娜,女
  • 神经
 
 
 
pYYBAGNkeo6AH8tPAAD0rM2x7BI730.jpg
 
1 / 3AWS Polly 服务 Text-To_Speech
 

 

后端软件(AWS 云架构)

poYBAGNkepGAUAHsAAHFjgP2j1o836.png
AWS 服务架构图
 

AWS IoT 核心服务

从架构图中可以看出,后端的主要服务是AWS IoT Core.

在 AWS IoT Core 服务中创建事物一章中所述,它注册每个设备(事物)以使用 MQTT 协议与云进行通信。

为此,dmhc/host_data使用了主题,它允许以 json 格式发布每个探测器生成的数据。

要处理主题接收到的消息并将它们发送到其他服务,必须定义规则,在我们的例子中,我们将在AWS IoT Core.

dmhc_rule_iot_analitycs :将接收到的消息发送到AWS IoT Analitycs service

  • 在 AWS IoT Core 菜单Act 中选择选项Rules
  • 创建规则名称:dmhc_rule_iot_analytics
  • 查询语句:select * from 'dmhc/host_data'
  • Add action,选择Send a message to IoT Analytics
  • configure action
  • 选择Quick create IoT Analytics resources命名dmhc_host
  • quick create
  • 创建一个新角色:dmhc_host_role

这时候所有AWS IoT Analytics的资源都创建好了:

  • dmhc_host_channel
  • dmhc_host_pipeline
  • dmhc_host_datastore
  • dmhc_host_dataset
 
 
 
pYYBAGNkepSAStv0AACZqaRMXRM209.jpg
 
1 / 6在 AWS IoT Core 中创建规则
 

dmhc_rule_timestream :将接收到的消息发送到AWS TimeStream

  • 在 AWS IoT Core 菜单Act 中选择选项Rules
  • 创建规则名称:dmhc_rule_timestream
  • 查询语句:SELECT device_id, heartrate, spo2, temperature FROM 'dmhc/host_data'
  • Add action,选择Write a message into a Timestream table
  • Configure action
  • 创建一个新的数据库:dmhc_timestreamdb,标准
  • 创建一个新表:dmhc_timestreamtable在数据库中dmhc_timestreamdb
  • 维度:维度名称“ DeviceID”,值${device_id}
  • 时间戳:值 ${timestamp()},单位 MILLISECONDS
  • 选择角色dmhc_host_role
 
 
 
poYBAGNkepaAdDuFAAByRO2rIr4670.jpg
 
1 / 10创建新规则
 

AWS 物联网分析服务

AWS IoT Analytics 自动执行分析来自 IoT 设备的数据所需的每个困难步骤。AWS IoT Analytics 在将 IoT 数据存储在时间序列数据存储中进行分析之前对其进行过滤、转换和丰富。

  • dmhc_host_channel接收所有消息并将它们发送到
  • dmhc_host_pipeline谁验证和转换并将它们发送到
  • dmhc_host_datastore谁存储数据并可用于
  • dmhc_host_dataset与其他服务共享。

我们需要为每条传入的消息在一个新的 json 字段中存储时间戳server_time,并且只允许 spo2<>0 和 temperature<200 的消息,以避免传感器错误读取提供的错误数据。使用 lambda 函数和管道活动我们可以做到。

拉姆达函数:dmhc_TimeStamp

  • 语言:Node.js 14.x
  • 部分代码处的源代码
  • 设置角色和权限
// Handler called by IoT Analytics - pipeline dmhc_host_pipeline
exports.handler = function handler(event, context, callback) {
    //Add timestamp to incoming data and name it "server_time"
    event[0].server_time = Date.now();
    // Return the data
    callback(null, event);
};
 
 
 
pYYBAGNkepmAWAzJAADr9w9fBMw602.jpg
 
1 / 6创建 Lambda 函数 dmhc_TimeStamp
 

添加到管道dmhc_host_pipeline两个活动:

  • 使用 Lambda 函数转换消息
    调用 lambda 函数dmhc_TimeStamp
  • 有条件地过滤消息
    设置 spo2 不为 0 且温度小于 200 条件
 
 
 
pYYBAGNkep2AdlYgAABYgNhfrf4061.jpg
 
1 / 8选择 dmhc_host_pipeline
 

数据集dmhc_host_dataset 需要将所有数据保存到dmhc_host_data_iotanalytics.csv文件并将其存储在存储桶dmhc-bucket文件夹files/中,以便与创建的 AWS Honeycode 应用程序共享。

我们可以用交付规则创建一个新的数据集Deliver result to S3

ChangeSQL 查询到:

select heartrate, spo2, temperature, server_time , __dt as day 
from dmhc_host_datastore
 
 
 
pYYBAGNkep-AUqbUAAE06fUSBlY383.jpg
 
1 / 2带有调整的 SQL 查询的数据集
 

亚马逊 AppFlow 和亚马逊 Honeycode

Amazon AppFlow 是一项完全托管的集成服务,使您能够在 Amazon S3 等 AWS 服务之间安全地传输数据并将其发送到 Amazon Honeycode。

亚马逊蜜码

  • 首先创建一个应用程序Amazon Honeycode
  • 创建账号,登录
  • 使用数据表创建工作簿DMHC Host Probe Datadmhc_data_table
  • 重命名表格字段heartrate, spo2, temperature, date,server_time
  • 并且可以在向导的帮助下创建表格的详细表格。

详细表格可以为每个字段激活一些警报条件,例如当 SpO2 小于 93 或心率>140 时显示红色背景值。

 
 
 
poYBAGNkeqOARL-0AAEivr6TvKw150.jpg
 
1 / 6创建工作簿
 

表为空,需要 Amazon AppFlow 的帮助以插入从由 AWS IoT Analytics 处理的 DMHC HOST Probe 接收的所有数据并存储在 AWS S3 Bucket Servicedmhc-bucket中,文件files/dmhc_host_data_iotanalytics.csv

亚马逊应用流

将成为 S3 和 Honeycode App 之间的桥梁,使用:

  • 一个流程dmhc_flow
  • 通过 Connection将dmhc-bucket文件夹files与 Amazon Honeycode 连接dmhc_conn
  • Honeycode 工作簿DMHC Host Probe Data
  • 桌子dmhc_data_table
  • 每 5 分钟增量传输一次流触发
  • 并映射csv文件中的所有字段dmhc_data_table
  • 应用一些需要的数据截断
 
 
 
poYBAGNkeqaAQrjdAACPnf9d0VY690.jpg
 
1 / 11创建 dmhc_flow
 

如果选择新流程dmhc_flow并按下Run flow按钮,所有数据将插入 Honeycode 应用程序dmhc_data_table,每 5 分钟更新一次。

在手机的 Honeycode 应用程序中打开应用程序 DMHC 数据表,将看到红色背景中的所有数据和一些警报。

 
 
 
pYYBAGNkequAUZZxAAApFyMmR90332.png
 
1 / 3手机中的 DMHC 数据表应用程序
 
 

亚马逊 QuickSight

借助 Amazon QuickSight,我们可以分析和创建连接到 AWS IoT Analytics 数据集的数据仪表板。

我们可以从大量数据源、数据库和 AWS 服务中创建数据集。

  • 选择datasets, New dataset,
  • 搜索AWS IoT Analytics
  • 选择dmhc_host_dataset,创建源,它会显示一个 Spice 数据集。

打开它,可以看到所有的香料信息,并可以刷新或安排自动刷新率。

 
 
 
poYBAGNkeq2AB8uqAACU9cXpQSk359.jpg
 
1 / 5创建数据集
 

创建数据集后,我们需要创建一个分析来处理香料中的所有数据。

  • 创建分析dmhc_host_analyses
  • S选择香料dmhc_host_dataset
  • 添加两种视觉类型line chart
  • 添加 和 的字段X axisValues请参见下图。
  • 选择Share Publish Dashboard创建仪表板DMHC HOST Probe
 
 
 
poYBAGNkerGAAiFwAAFJqD49BhM528.jpg
 
1 / 5创建分析 dmhc_host_analysiss
 

如果选择创建的仪表板,您可以在浏览器中看到它

 
 
 
pYYBAGNkerSAJ051AADY_8YkhMI982.jpg
 
1 / 2浏览器中的仪表板
 

在手机中打开 QuickSight 应用程序,将看到创建的仪表板。

 
 
 
pYYBAGNkermANSlYAABOrLo-gkg092.png
 
1 / 5Aws QuickSight - 收藏夹
 
 

亚马逊时间流和 Grafana

Grafana 是另一种用于创建图形和仪表板的工具,并且有一个用于 Amazon Timestream 的插件。您可以连接到数据库和表并分析数据时间序列,

我们需要用户凭证访问密钥 ID 和秘密访问密钥,以便 Grafana 访问数据库和表。

AWS IAM

  • 选择Users,Add user
  • 用户名:dmhc_timestreamuser
  • 选择 AWS 凭证类型:Access key - Programmatic access
  • 添加策略:AmazonTimestreamFullAccess
  • 保存Access Key IDSecret access key

在https://grafana.com/创建您的帐户

  • 登录到您的工作区
  • 选择ConfigurationPlugins 添加Amazon Timestream plugin
  • 选择ConfigurationDatasources点击亚马逊时间流
  • 更新Access Key IDSecret Access Keydmhc_timestreamuser创建
  • 默认区域:us-west-2
  • If凭据没问题,您可以选择数据库dmhc_timestreamdb和表dmhc_timestreamtable
  • 按保存并测试
 
 
 
poYBAGNkeryAOqm1AAE0ZfsPqUc595.jpg
 
1 / 2Grafana 配置插件
 
  • 选择 + 创建,仪表板
  • 添加空面板,将其重命名为 DHMC HOST
  • 设置数据源 Amazon Timestream
  • 为每个值添加三个查询
SELECT CREATE_TIME_SERIES(time,measure_value::bigint) as temperature FROM $__database.$__table where $__timeFilter and measure_name = 'temperature'

SELECT CREATE_TIME_SERIES(time,measure_value::bigint) as spo2 FROM $__database.$__table where $__timeFilter and measure_name = 'spo2'

SELECT CREATE_TIME_SERIES(time,measure_value::bigint) as heartrate FROM $__database.$__table where $__timeFilter and measure_name = 'heartrate'
pYYBAGNkesCAJBhFAAHGBYBOLfw959.jpg
Grafana 新仪表板和三个查询
 

按保存并应用,您现在可以在仪表板中看到所有数据值。

 
 
 
poYBAGNkeseABn0PAAFak4O6_3M097.jpg
 
1 / 2浏览器中的 Grafana 仪表板
 

 

 

Amazon EventBridge、Amazon SNS、AWS Chatbot 和 Amazon Pinpoint

为了控制 DMHC HOST Probe 请求运行状况检查的频率,我们将使用Amazon EventBridge将调用 Lambda 函数的服务,dmhc_ResetDevice以便它使用AWS IoT Core主题向设备发送通知 MQTT,该主题dmhc/reset将告诉您重新启动并继续捕获新数据。

  • 拉姆达函数dmhc_ResetDevice
  • 语言:Node.js 14.x
  • 部分代码处的源代码
  • 设置角色和权限:AWSIoTFullAccessAmazonSNSFullAccess
    Change
  • 更改 lambda 函数PhoneNume 中的 SMS 参数:xxxxxxxx您的注册电话号码,请参阅 AWS PinPoint 部分。
var AWS = require('aws-sdk');

// Define object AWS IoT Core with endpoint
var iotdata = new AWS.IotData({endpoint: 'a2i2bsijbyml6j-ats.iot.us-west-2.amazonaws.com' });
// Define object AWS SNS for SMS and Slack notifications
var sns = new AWS.SNS();

//Call by AWS EventBridge
exports.handler = async(event, context) => {
    //Prepare json data to send notification msg to Slack
    console.log("Send msg to Slack with topic dmhc_sns_topic...");
    var params = {
        Message:  '{ \
                     "version": "0",\
                     "id":"'.concat(context.awsRequestId).concat('",').concat(' \
                     "detail-type":"Is time to check your health! Please go to DMHC Host Probe.", \
                     "source":"aws.events", \
                     "account": "537233203723", \
                     "time":"'.concat(new Date().toISOString()).concat('",').concat(' \
                     "region": "us-west-2" \
                  }')), 
        Subject: "DMHC HOST Probe",
        TopicArn: "arn:aws:sns:us-west-2:537233203723:dmhc_sns_topic"
    };
    // Publish to SNS dmhc_sns_topic
    sns.publish(params, context.done);
    

    // Create publish parameters for SMS Number
    console.log("Send msg to SMS topic...");
    var params = {
      Message: 'Is time to check your health! Please go to DMHC Host Probe.', 
      //Set here your mobile phone number
      PhoneNumber: 'YOUR PHONE NUMBER'
    };
    // Publish to SNS SMS number attach
    sns.publish(params, context.done);

    // Publish to IoT Core topic dmhc/reset
    console.log("Publish in topic dmhc/reset...");
    var params = {
        topic: "dmhc/reset", //send any msg to this topic to reset edukit
        payload: JSON.stringify(event),           
        qos: 0
    };

    //Send reset request to DMHC HOST Probe topic dmhc/reset
    const request = iotdata.publish(params);
    request
        .on('success', () => console.log("Success"))
        .on('error', () => console.log("Error"))
    return new Promise(() => request.send());
};

亚马逊事件桥

  • 创建规则:dmhc_trigger_reset
  • 定义模式:固定速率每 30 分钟
  • 目标:Lambda 函数
  • 功能:dmhc_ResetDevice
 
 
 
pYYBAGNkesqAJroiAAFYuR2Tl7k311.jpg
 
1 / 2dmhc_trigger_reset 已创建
 

在此之前,Lambda 函数向Amazon SNS服务 topic发送两条消息dmhc_sns_topic

亚马逊社交网络

创建主题:d​​mhc_sns_topic

类型标准

poYBAGNkes2AaDK4AADWNBuG5Vc773.png
SNS 主题 dmhc_sns_topic 已创建
 

一个由订阅者处理的正确 json 格式,AWS Chatbot订阅者将向注册的 Slack 频道发送通知dmhc-events

AWS 聊天机器人

  • 配置新客户端
  • 选择 Slack,配置
  • 登录您的工作区
  • 允许 AWS Chatbot 请求访问您的 Slack 工作区的权限
  • 选择 slack 频道以发布通知(dmhc-events在您的 slack 工作区中创建)
  • 配置新频道:dmhc_chatbot_slack
  • 在 us-west-2 中订阅 SNS 主题dmhc_sns_topic
 
 
 
poYBAGNkes-Ae_syAADOWo-w-UU955.jpg
 
1 / 6配置新客户端
 
 
 
 
pYYBAGNketWAfUD0AABEHbrRNyE911.png
 
1 / 3手机中的 Slack dmhc-events 频道
 

另一种是json格式,适合注册电话号码类型的用户向手机发送短信通知。

亚马逊 PinPoint

我们需要先注册一个号码,然后再向其发送 SMS 并使用 Amazon Pinpoint 预置一个免费电话号码。

当该号码已注册并具有原始号码时,在沙盒环境中只有少量测试和 1 美元的金额,要增加此金额需要创建支持案例和升级到生产的请求。

  • 创建一个项目:dmhc_pinpoint_project
  • 设置 SMS 和 VoiceSetup SMS 设置
  • 验证沙箱中接收短信的目标号码(您的电话号码 被 lambda 函数使用dmhc_ResetDevice
  • 请求发起免费电话号码
 
 
 
poYBAGNketeAQ7XsAABOa7TVaLM676.jpg
 
1 / 6创建 dmhc_pinpoint_project 精确定位项目
 

亚马逊社交网络

必须为 SNS 主题创建一个订阅 SMS 号码dmhc_sns_topic并在 json 消息中设置subscription filter policy是否存在属性PhoneNumber,因为 slack 和 SMS 消息发送到同一个主题,并且此策略避免您收到两条 SMS 消息。

此电话号码已在 AWS PinPoint中注册,并将由 lambda 函数使用dmhc_ResetDevice

 
 
 
pYYBAGNketqAKHltAAHSa5BT9Po711.jpg
 
1 / 3订阅号码到 SNS 主题
 
poYBAGNket2AOuQEAABJ9vfJ9tM455.png
手机收到短信
 

概括

此项目中使用的 Amazon Web Services (Oregon us-west-2)

  • 物联网核心
  • 物联网分析
  • 拉姆达
  • S3
  • 应用流
  • 秘密经理
  • 时间流
  • 我是
  • 波莉
  • SDK
  • 事件桥
  • 社交网络
  • 聊天机器人
  • 查明

前端选项

  • 亚马逊 QuickSight
  • 使用 Amazon Honeycode 开发应用程序
  • Grafana 仪表板
  • 松弛
  • 手机短信

硬件物联网事物

DMHC HOST Probe = AWS IoT Edukit + Heart 单元 + NCIR 单元 + ENVIII 单元


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !