基于W5100S与AWS IoT Core的物联网数据管道实战:从设备到Grafana可视化
1. 项目概述与核心价值最近在做一个环境监测的小项目核心需求是把一个嵌入式设备采集到的温湿度数据实时展示在云端的一个可视化面板上。听起来简单但真做起来从设备选型、数据上云到最终可视化每一步都有不少门道。我最终选择的方案是W5100S-EVB-Pico开发板 AWS IoT Core Amazon Timestream Grafana。这套组合拳打下来不仅稳定可靠而且扩展性极强非常适合作为物联网数据管道的标准范式来学习。W5100S-EVB-Pico这块板子很有意思它本质上是一个树莓派RP2040微控制器但集成了W5100S这颗硬核以太网芯片。这意味着它不需要依赖不稳定的Wi-Fi直接插网线就能获得稳定、低延迟的网络连接对于需要7x24小时运行的工业或环境监测场景来说这是巨大的优势。数据上云我选择了AWS IoT Core它是亚马逊云科技专门为物联网设备设计的托管服务负责设备认证、安全连接和消息路由。数据存储则交给了Amazon Timestream这是一个专门为时序数据优化的数据库写入和查询速度都很快而且按用量计费对小项目非常友好。最后用开源的Grafana来制作实时监控仪表盘界面美观功能强大。这个项目的核心价值在于它完整地走通了一条从“物理世界信号采集”到“云端数据存储”再到“可视化呈现”的链路。无论你是想监控家里的温湿度、办公室的空气质量还是工厂里的设备运行状态这套架构都能提供坚实的后端支持。接下来我会拆解每一个环节从硬件连接、代码配置、云端规则设置到面板制作把过程中踩过的坑和总结的技巧都分享出来。2. 硬件准备与开发环境搭建2.1 硬件清单与连接首先你需要准备好以下硬件清单很简单W5100S-EVB-Pico开发板核心设备。Micro-USB数据线用于供电和程序烧录。以太网网线连接开发板到路由器或交换机。一台个人电脑PC用于代码编写和编译。连接步骤傻瓜式操作即可将以太网网线一端插入W5100S-EVB-Pico的RJ45接口另一端插入你的路由器LAN口。使用Micro-USB数据线连接开发板的USB接口和电脑的USB端口。此时开发板上的电源指示灯应该会亮起。注意首次连接时电脑可能会自动安装驱动。确保连接稳定因为后续的固件烧录和串口调试都依赖这个USB连接。2.2 软件开发环境配置代码方面我们直接使用WIZnet官方提供的示例仓库这能省去大量底层网络驱动的调试工作。获取源代码 打开终端Windows可用Git Bash或CMDmacOS/Linux用系统终端执行以下命令克隆仓库。--recurse-submodules参数至关重要它会同时拉取依赖的子模块主要是ioLibrary_Driver即W5100S的驱动库。git clone --recurse-submodules https://github.com/Wiznet/RP2040-HAT-AWS-C.git如果克隆时忘了加参数可以进入目录后执行git submodule update --init --recursive来补救。安装编译工具链 官方示例推荐使用Visual Studio Code配合PlatformIO插件或者直接使用树莓派官方的Pico C/C SDK。对于新手我强烈推荐VSCode PlatformIO的方案它集成了工具链和环境管理开箱即用。安装Visual Studio Code。在VSCode扩展商店中搜索并安装“PlatformIO IDE”。安装完成后重启VSCode点击左侧的PlatformIO图标小蚂蚁打开刚克隆的RP2040-HAT-AWS-C文件夹。项目结构初览 用PlatformIO打开项目后主要关注两个目录examples/aws_iot_mqtt/这是我们即将修改和编译的主示例程序目录。port/ioLibrary_Driver/这里存放着W5100S芯片的SPI驱动和网络协议栈的移植层文件。3. AWS IoT Core 云端资源创建与配置在动手写设备端代码前我们需要先在云端把“接收器”和“仓库”搭建好。这一步虽然全是网页操作但细节很多一步错可能导致后续连不上。3.1 创建物联网“事物”与安全策略登录AWS管理控制台进入IoT Core服务。创建事物Thing在左侧导航栏选择“管理”“所有设备”“事物”点击“创建事物”。选择“创建单个事物”点击“下一步”。为你的设备起一个名字例如my_rp2040_thing。这个名字后面会作为MQTT的客户端IDClient ID和影子Shadow的名称非常重要。其他配置如事物类型、属性等可以暂时跳过直接点击“下一步”。生成设备证书在“设备证书”步骤选择“自动生成证书推荐”。AWS会为你生成一组X.509证书一个设备证书、一个公私钥对和一个根CA证书。关键操作务必立即点击“下载”按钮将“设备证书”、“私有密钥”和“Amazon Root CA 1”三个文件保存到电脑的安全位置。私钥一旦离开这个页面就无法再次下载只能重新创建设备。下载完成后点击“激活”按钮以启用证书然后点击“附加策略”。创建并附加IoT策略 策略规定了设备能用证书做什么。我们创建一个最小权限的策略。点击“创建策略”。策略名称RP2040_Policy。策略文档如下。它允许设备连接iot:Connect、发布消息iot:Publish和订阅主题iot:Subscribe并且通过Resource字段中的*通配符允许设备操作任何与其客户端ID匹配的主题资源。这是一种宽松的配置适合学习和测试。{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: [ iot:Connect, iot:Publish, iot:Subscribe, iot:Receive ], Resource: * } ] }创建完成后回到附加策略页面选中刚创建的RP2040_Policy点击“附加策略”。至此云端的事物、证书、策略三件套就准备好了。记下你的“事物”名称我们马上要在代码里用到它。3.2 获取连接端点Endpoint设备需要知道AWS IoT Core的服务地址才能连接。在IoT Core控制台左侧点击“设置”。在页面中找到“设备数据端点”。这个地址看起来像xxxxxxxxxxxx-ats.iot.region.amazonaws.com。复制它这就是我们代码中要填写的MQTT_DOMAIN。4. 设备端代码详解与配置现在回到本地的代码工程我们需要修改几个关键文件让设备知道如何连接网络、如何连接AWS。4.1 网络接口配置 (w5x00_spi.h)这个文件位于port/ioLibrary_Driver/目录下它定义了RP2040与W5100S芯片通信的SPI引脚映射。对于W5100S-EVB-Pico这个映射是固定的通常不需要修改但我们必须确认一下。打开w5x00_spi.h你会看到类似下面的定义。这些引脚编号与开发板上的硬件设计是对应的。/* SPI */ #define SPI_PORT spi0 #define PIN_SCK 18 #define PIN_MOSI 19 #define PIN_MISO 16 #define PIN_CS 17 #define PIN_RST 20实操心得如果你用的是其他基于RP2040和W5100S的板子务必根据原理图核对这些引脚定义。SPI引脚接错会导致网络芯片根本无法初始化。4.2 网络参数配置 (aws_iot_mqtt.c)这个文件在examples/aws_iot_mqtt/目录下是主程序文件。我们需要修改两个结构体。网络信息 (g_net_info) 找到static wiz_NetInfo g_net_info的定义。这里配置设备的IP地址等信息。最省事的做法是启用DHCP让路由器自动分配IP。.dhcp NETINFO_DHCP // 设置为 NETINFO_DHCP将dhcp字段设置为NETINFO_DHCP其他如ip、gw等字段可以忽略程序启动时会自动从路由器获取。如果你的网络环境必须使用静态IP则需填写完整的网络信息。AWS IoT连接参数 在文件靠前的位置找到一系列#define定义。这里需要填入你在AWS上获取的信息。#define MQTT_DOMAIN 你的设备数据端点如 a3qj7sk9abcde-ats.iot.us-east-1.amazonaws.com #define MQTT_PUB_TOPIC $aws/things/my_rp2040_thing/shadow/update #define MQTT_SUB_TOPIC $aws/things/my_rp2040_thing/shadow/update/accepted #define MQTT_CLIENT_ID my_rp2040_thingMQTT_DOMAIN粘贴你从AWS控制台“设置”里复制的端点地址。MQTT_CLIENT_ID必须与你在AWS上创建的“事物”名称完全一致这里是my_rp2040_thing。MQTT_PUB_TOPIC设备发布消息的主题。这里使用了AWS IoT设备影子Shadow的更新主题。设备影子是AWS IoT的一个核心概念可以理解为设备在云端的虚拟副本用于存储和同步设备状态即使设备离线应用也可以通过影子获取最后状态。MQTT_SUB_TOPIC设备订阅的主题。这里订阅了影子更新被接受后的确认主题设备可以据此知道云端是否成功处理了更新。4.3 证书与密钥嵌入 (mqtt_certificate.h)这是最关键也最容易出错的一步。我们需要把之前下载的三个证书文件内容以C语言字符串数组的形式嵌入到代码中。在examples/aws_iot_mqtt/目录下找到或创建mqtt_certificate.h文件。将以下三个变量的内容替换为你下载的文件内容。打开你下载的AmazonRootCA1.pem文件用文本编辑器如VS Code打开将其全部内容包括-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----行复制。替换mqtt_root_ca数组的内容。格式必须严格遵循每行用双引号括起来并以\r\n结尾。uint8_t mqtt_root_ca[] -----BEGIN CERTIFICATE-----\r\n MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\r\n ... (你的CA证书所有行) ...\r\n -----END CERTIFICATE-----\r\n;同理用下载的device-certificate.pem文件内容替换mqtt_client_cert数组。用下载的private-key.pem文件内容替换mqtt_private_key数组。注意私钥文件可能以-----BEGIN RSA PRIVATE KEY-----开头。避坑指南格式错误多一个空格、少一个换行符、漏了\r\n或引号不匹配都会导致SSL握手失败。建议使用编辑器的“显示所有字符”功能来检查。证书未激活确保在AWS控制台上已点击“激活”证书。策略未附加确认创建的IoT策略已正确附加到该证书上。4.4 数据负载构造与发送在aws_iot_mqtt.c的main函数或消息发布循环中我们需要构造要发送的MQTT消息。找到发送消息的部分通常在while(1)循环里我们需要发布一个符合AWS IoT Shadow服务预期的JSON格式消息。示例代码中可能是一个简单的字符串。我们需要将其改为包含温湿度数据的JSON。例如char payload[128]; int temp 25; // 假设从传感器读取的温度值 int humidity 60; // 假设从传感器读取的湿度值 snprintf(payload, sizeof(payload), {\state\:{\reported\:{\temperature\:%d,\humidity\:%d}}}, temp, humidity); mqtt_publish(client, MQTT_PUB_TOPIC, payload, strlen(payload));这个JSON结构是发给设备影子的。state.reported字段表示设备报告的状态。AWS IoT Core的规则引擎可以轻松地从这样的消息中提取temperature和humidity字段。实操心得在实际项目中temp和humidity应该替换为真实的传感器读取函数。你可以连接DHT11、DHT22或BME280等传感器到RP2040的GPIO引脚并在代码中读取数据。记得在发布消息之间加入适当的延时如sleep_ms(5000)避免发送频率过高。5. 编译、烧录与设备端测试5.1 编译固件在PlatformIO中编译非常简单确保打开了正确的项目RP2040-HAT-AWS-C。点击VSCode底部状态栏的“√”图标编译或从左侧PlatformIO菜单选择“Build”。编译成功后在终端输出中会看到类似“SUCCESS”的字样并提示固件位置通常是在build/examples/aws_iot_mqtt/目录下的aws_iot_mqtt.uf2文件。5.2 烧录固件到开发板RP2040芯片支持UF2引导模式烧录像拷贝文件一样简单。按住W5100S-EVB-Pico板上的白色“BOOTSEL”按钮不放。在按住按钮的同时将USB线插入电脑如果已经插入则按一下复位按钮再按住BOOTSEL。等待1-2秒后松开BOOTSEL按钮。此时电脑上会出现一个名为“RPI-RP2”的可移动磁盘。将编译生成的aws_iot_mqtt.uf2文件拖拽或复制到这个磁盘中。复制完成后开发板会自动复位并运行新程序。5.3 使用AWS IoT测试客户端验证在设备运行后我们可以第一时间在云端验证它是否成功连接并发送数据。回到AWS IoT Core控制台。在左侧导航栏选择“测试”“MQTT测试客户端”。在“订阅主题”选项卡中输入主题$aws/things/my_rp2040_thing/shadow/update/accepted点击“订阅”。如果设备连接、认证、发布都成功你将在几秒内在这个订阅窗口中看到设备发来的消息。消息内容应该就是你代码中构造的JSON。你也可以在“发布主题”选项卡中向$aws/things/my_rp2040_thing/shadow/update主题发布一个消息例如{\state\:{\desired\:{\led\:\on\}}}来测试设备是否能接收云端指令这需要在设备端代码中实现订阅和处理逻辑。6. 构建云端数据管道IoT规则与Timestream设备数据成功抵达AWS IoT Core只是第一步。我们需要一个自动化的流程将这些数据从MQTT消息流中提取出来并存入一个适合时间序列数据查询的数据库。这就是IoT规则引擎和Amazon Timestream的用武之地。6.1 创建Amazon Timestream数据库和表Timestream是专门为时序数据优化的数据库读写效率高成本相对较低。在AWS控制台搜索并进入“Amazon Timestream”服务。创建数据库点击“创建数据库”。选择“标准数据库”。输入数据库名称如IoT_Environment_DB。其他设置保持默认点击“创建数据库”。这个过程很快。创建表在新建的数据库详情页点击“创建表”。输入表名如sensor_data。数据保留策略这里需要理解两个概念。内存存储Memory Store用于存储近期高频访问的热数据默认保留1天。查询速度极快。磁存储Magnetic Store用于存储长期归档的冷数据默认保留365天。成本更低。对于我们的温湿度监控可以接受1天前的数据查询稍慢。因此可以将内存存储保留期设为1天磁存储保留期设为更长如730天。根据你的成本和查询需求调整。点击“创建表”。6.2 创建IoT规则并指向Timestream规则引擎是AWS IoT的“大脑”它可以监听指定的MQTT主题对消息进行处理然后触发一个动作Action比如写入数据库。回到AWS IoT Core控制台选择“消息路由”“规则”。点击“创建规则”。设置规则属性规则名称Save_Sensor_Data_to_Timestream。描述可选将温湿度数据存入Timestream。编写规则查询语句在“SQL语句”框中输入以下内容SELECT state.reported.temperature as temperature, state.reported.humidity as humidity, clientid() as device_id, timestamp() as time FROM $aws/things//shadow/update WHERE state.reported.temperature IS NOT NULL AND state.reported.humidity IS NOT NULL语句解析FROM $aws/things//shadow/update监听所有事物是通配符的影子更新主题。这样如果你有多个设备一条规则就能处理所有。SELECT ...从消息负载的JSON中提取temperature和humidity字段并重命名为temperature和humidity。同时使用clientid()函数获取发布消息的设备Client ID即事物名用timestamp()函数获取AWS服务器收到消息的时间戳。WHERE ...过滤条件确保只处理包含温湿度数据的消息。添加动作点击“添加动作”。选择“将消息发送到Amazon Timestream”。点击“配置动作”。配置Timestream写入动作选择之前创建的数据库IoT_Environment_DB和表sensor_data。维度Dimensions这是Timestream的重要概念用于标记和分类数据。我们将device_id作为维度。这样在查询时我们可以按设备筛选数据。点击“添加维度”名称填device_id值输入${clientid()}。度量名称Measure name填写sensor_metrics。这是一个逻辑分组名。度量值Measure value我们需要添加两个度量值。点击“添加度量值”类型选DOUBLE名称填temperature值输入${temperature}。再次点击“添加度量值”类型选DOUBLE名称填humidity值输入${humidity}。时间戳Timestamp值输入${time}单位选择MILLISECONDS。创建IAM角色在权限设置部分规则需要一个IAM角色来授权它向Timestream表写入数据。选择“创建新角色”给它起个名字如IoTRuleToTimestreamRole。关键技巧强烈建议在这里点击“创建角色”让AWS自动生成一个具有最小必要权限写入特定Timestream表的角色。手动去IAM控制台创建角色并配置策略容易因权限不足而导致规则执行失败。一路点击“下一步”最后“创建规则”。创建完成后规则就处于激活状态。此时你的设备再发送温湿度数据规则就会被触发数据将自动写入Timestream表中。6.3 验证数据写入规则创建后最好立刻验证一下数据是否正常流入Timestream。进入Timestream控制台选择你的数据库和表。点击“查询编辑器”标签页。运行一个简单的查询来检查数据SELECT * FROM IoT_Environment_DB.sensor_data ORDER BY time DESC LIMIT 10如果配置正确你应该能看到最近10条包含device_id、temperature、humidity和time的记录。常见问题排查查询无结果首先确认设备端程序在运行并且AWS IoT测试客户端能收到消息。然后检查IoT规则的SQL语句是否正确特别是字段名是否与设备发送的JSON键名匹配。最后检查规则的“监控”选项卡查看是否有错误指标。权限错误检查为规则创建的IAM角色确保其信任实体Trust Relationship是iot.amazonaws.com并且附加的策略包含了针对目标Timestream数据库和表的timestream:WriteRecords权限。7. 数据可视化Grafana连接与仪表盘制作数据存好了最后一步就是把它漂亮地展示出来。Grafana是业界最流行的开源数据可视化平台支持Timestream数据源。7.1 部署与配置Grafana你可以选择在本地安装Grafana也可以使用云托管服务。为了方便演示这里以在本地或一台EC2云服务器安装为例。安装Grafana根据你的操作系统参考Grafana官网的安装指南。对于Ubuntu/Debian通常就是几条命令的事。启动并登录安装后启动Grafana服务通过浏览器访问http://localhost:3000默认端口3000。首次登录使用默认账号admin和密码admin会要求立即修改密码。7.2 添加Amazon Timestream数据源在Grafana侧边栏点击“Configuration”齿轮图标 “Data sources”。点击“Add data source”。搜索并选择“Amazon Timestream”。配置连接Authentication Provider选择“Access secret key”。对于生产环境建议使用IAM Roles但AK/SK方式最简单。Access Key ID Secret Access Key填入你在AWS IAM中创建的用户密钥。务必为该用户分配仅包含查询Timestream必要权限的策略遵循最小权限原则。Default Region选择你创建Timestream数据库的区域如us-east-1。Default Database Default Table这里可以预先填写我们创建的IoT_Environment_DB和sensor_data这样在创建面板时就不用每次都选了。点击“Save test”。如果看到“Connection success”的绿色提示说明配置成功。7.3 创建实时监控仪表盘点击侧边栏“Dashboards” “New dashboard” “Add a new panel”。在查询编辑器里数据源已经自动选为Timestream。现在需要编写查询语句来获取数据。查询示例1绘制温度随时间变化曲线。在“Query”编辑框中可以切换到“Code”模式直接输入SQLSELECT time, measure_value::double as temperature FROM IoT_Environment_DB.sensor_data WHERE measure_name temperature AND device_id my_rp2040_thing ORDER BY time ASC这个查询会筛选出设备my_rp2040_thing的所有温度读数并将度量值转换为双精度浮点数。在右侧“Visualization”面板选择“Time series”图表。可以设置坐标轴单位、颜色等。查询示例2在同一图表中显示温湿度双曲线。Timestream一个查询只能返回一个measure_name。要同时显示温湿度需要添加两个查询Query A, Query B。Query A(温度)SELECT time, measure_value::double as value FROM IoT_Environment_DB.sensor_data WHERE measure_name temperature AND device_id my_rp2040_thingQuery B(湿度)SELECT time, measure_value::double as value FROM IoT_Environment_DB.sensor_data WHERE measure_name humidity AND device_id my_rp2040_thing在右侧图例Legend设置中可以为Query A和Query B分别设置显示名称为“Temperature”和“Humidity”。添加当前值显示Stat点击仪表盘上方的“Add panel”图标通常是加号选择“Stat”。编写查询获取最新的温度值SELECT MAX(time) as time, measure_value::double as value FROM IoT_Environment_DB.sensor_data WHERE measure_name temperature AND device_id my_rp2040_thing在“Field”设置中选择“显示”为“最新值”。可以设置单位、阈值颜色如温度过高显示红色。同样方法再添加一个湿度面板。调整与刷新拖拽调整各个面板的位置和大小。在仪表盘右上角可以设置自动刷新间隔如5s实现真正的实时监控。点击“Apply”保存面板再点击仪表盘页面的“Save”保存整个仪表盘。高级技巧你可以利用Grafana的“Alerting”功能为温度或湿度设置告警规则。例如当温度连续5分钟超过30度时通过邮件、Slack或Webhook发送告警通知。8. 项目优化、问题排查与扩展思路8.1 设备端优化与稳定性提升增加重连与看门狗逻辑工业应用要求高可靠性。在网络波动或AWS服务短暂不可用时设备端代码应加入MQTT连接状态检测和自动重连机制。同时可以利用RP2040的硬件看门狗或软件定时器实现看门狗防止程序跑飞。完善错误处理在初始化网络、连接MQTT、发布消息等每个关键步骤后都应检查返回值并进行相应的错误处理如打印错误日志、闪烁LED报警等而不是简单地忽略。使用设备影子简化状态管理本示例中我们只使用了影子的“报告”状态。实际上你可以让云端应用向影子的“期望”状态写入数据如设定目标温度设备订阅$aws/things//shadow/update/delta主题来获取“期望”与“报告”状态的差异从而执行相应动作。这实现了云端对设备的反向控制。降低功耗如果设备由电池供电可以考虑在数据发送间隙让RP2040进入休眠模式并通过W5100S的网络唤醒WOL功能或定时中断来唤醒以大幅降低平均功耗。8.2 云端架构优化规则引擎优化当前规则将数据直接写入Timestream。如果数据处理逻辑变复杂如数据清洗、转换、聚合可以考虑引入AWS IoT Analytics或通过规则将数据先发送到Kinesis Data Streams再由Lambda函数处理后写入Timestream或其他数据库架构更灵活。安全加固设备端定期轮换设备证书。可以在设备首次启动时使用预置的厂商证书申请唯一的设备证书实现安全引导。云端为IoT规则和Timestream数据库配置更精细的IAM策略遵循最小权限原则。考虑使用IoT自定义身份验证或Cognito进行更复杂的设备认证。成本监控在AWS Cost Explorer中设置预算告警监控IoT Core消息数量、Timestream读写单元等产生的费用避免意外开销。8.3 常见问题排查速查表问题现象可能原因排查步骤设备无法连接网络网线未插好、IP配置错误、路由器防火墙1. 检查网线连接和路由器指示灯。2. 在代码中启用调试输出查看DHCP获取IP是否成功。3. 尝试Ping网关或外网地址。AWS IoT连接失败 (SSL握手错误)证书格式错误、证书未激活、策略未附加、Endpoint错误1. 仔细核对mqtt_certificate.h中证书格式确保每行有\r\n。2. 在AWS IoT控制台确认证书状态为“Active”且已附加策略。3. 确认MQTT_DOMAIN的Endpoint地址和区域正确。AWS IoT测试客户端收不到消息设备未运行、主题不匹配、规则SQL过滤掉1. 检查设备串口日志确认程序在运行并成功发布消息。2. 确认设备发布的主题与测试客户端订阅的主题完全一致。3. 检查IoT规则的SQL语句的WHERE条件是否过于严格。Timestream表中无数据IoT规则执行失败、权限错误、数据格式不匹配1. 在IoT规则控制台的“监控”选项卡查看规则执行错误指标和日志。2. 检查规则动作中配置的IAM角色是否有写入Timestream的权限。3. 确认规则SQL选取的字段名与设备发送的JSON键名匹配。Grafana无法连接TimestreamAK/SK错误、区域不匹配、网络不通1. 核对Grafana中配置的Access Key和Secret Key。2. 确认Default Region与Timestream数据库所在区域一致。3. 如果Grafana部署在本地检查网络是否能访问AWS服务。Grafana图表无数据查询语句错误、时间范围不对1. 在Grafana查询编辑器中点击“Query Inspector”查看原始返回数据。2. 检查SQL语句中数据库名、表名、度量名、维度值是否正确。3. 调整仪表盘右上角的时间范围选择器。8.4 项目扩展思路这个基础框架可以轻松扩展为更复杂的应用多传感器集成在RP2040上连接更多传感器如光照强度、大气压力、CO2浓度等。只需在设备端代码中增加读取逻辑并在MQTT消息和Timestream表中增加对应字段。边缘计算利用RP2040的双核优势一个核心负责采集传感器数据并进行简单的预处理如滤波、异常值检测另一个核心负责网络通信。OTA固件升级通过AWS IoT Jobs服务可以实现对设备群的远程固件升级无需物理接触设备。移动端告警结合AWS SNS简单通知服务或Lambda函数当Grafana监测到数据异常通过告警规则时可以发送短信或推送通知到手机。数据聚合与分析定时触发AWS Lambda函数对Timestream中的历史数据进行聚合分析如计算日均温度、最高湿度将结果写回数据库或生成报告。这个项目就像搭积木掌握了从设备到云端再到可视化的每一块积木你就能构建出各种各样实用的物联网系统。