分析通道数据以发送电子邮件通知
此示例显示如何使用 ThingSpeak™ 警报服务以电子邮件消息发送通知。使用 TimeControlApp 定期触发 MATLAB® Analysis。MATLAB Analysis App 分析数据以根据土壤湿度数据决定生成适当的电子邮件信息。利用 MATLAB 的分析能力,您可以从 ThingSpeak 数据中生成经过过滤、有针对性的、特定的通道活动通知。
通道 276330 记录了办公室植物的土壤湿度测量值。在此示例中,当植物需要水时,您可以使用 ThingSpeak 警报接收包含最新土壤传感器值的电子邮件通知。要了解如何设置土壤湿度监测器来记录 ThingSpeak 上的数据,请参阅使用 HTTP POST 请求向通道发送湿度传感器数据。
创建 MATLAB Analysis
使用 MATLAB 分析 ThingSpeak 数据。您可以使用分析结果来触发网络请求,例如来自 ThingSpeak 警报的电子邮件请求。该分析读取四周的数据以根据历史数据计算阈值。低于数据范围 10% 的测量值会改变输出信息。
1) 选择 Apps > MATLAB Analysis,然后选择 New。
2) 在示例部分中选择读取通道以触发电子邮件。下面的代码已预先填充在您的 MATLAB Analysis 窗口中。
3) 命名您的分析并修改代码。更改 alertApiKey
以匹配您的警报 API 密钥。要从您自己的公共通道读取,请更改 channelID
值。首先设置通道 ID 和警报键。所有警报 API 密钥均以 TAK
开头。
channelID = 276330;
alertApiKey = 'TAKXXXXXXXXXXXXX';
4) 设置 URL 和头文件。警报服务需要 ThingSpeak-Alerts-API-Key
头文件。使用 weboptions
设置头文件。
alertUrl = "https://api.thingspeak.com/alerts/send"; options = weboptions("HeaderFields", ["ThingSpeak-Alerts-API-Key", alertApiKey ]); alertSubject = sprintf("Plant soil information");
5) 使用 thingSpeakRead 读取最近的数据。
moistureData = thingSpeakRead(channelID,'NumDays',30,'Fields',1);
6) 确保从通道读取了数据并相应地设置消息。根据数据跨度计算 10% 的阈值。使用最新的值来设置警报主体消息。
if isempty(moistureData) alertBody = ' No data read from plant. '; else % Calculate a 10% threshold value based on recent data. span = max(moistureData) - min(moistureData); dryValue = 0.1 * span + min(moistureData); % Get the most recent point in the array of moisture data. lastValue = moistureData(end); % Set the outgoing message if (lastValue<dryValue) alertBody = ' I need water! '; end if (lastValue>dryValue) alertBody = ' No water needed. '; end end
7) 用户 webwrite
发送警报请求。将发送请求包装在 try/catch
中,以防止在请求因任何原因失败时禁用MATLAB Analysis。
try webwrite(alertUrl , "body", alertBody, "subject", alertSubject, options); catch someException fprintf("Failed to send alert: %s\n", someException.message); end
创建时间控制来运行分析
TimeControl App 可以评估您的 ThingSpeak 通道数据并触发其他事件。创建一个 TimeControl App 实例,每天调用您的 MATLAB Analysis 代码。选择 Apps > TimeControl,然后点击 New TimeControl。
名称 - 命名 TimeControl。
频率 - 选择重复。
重复 - 选择天。
操作 - 选择 MATLAB Analysis。 在要执行的代码 列表中,选择您之前编写的 MATLAB Analysis 的名称。
每次 TimeControl App 运行时,您都会收到一封电子邮件,告知您植物是否需要浇水。10% 的阈值仅为估计值;ThingSpeak 对您的工厂不承担任何责任。
注意:本示例中的配置每天使用一封电子邮件警报。您的总警报数量是有限的;如果超出限制,您将无法再触发新的电子邮件警报。
另请参阅
Write
Data
| webwrite
(MATLAB) | Send
Alert
| Get Alert
History