计算风寒指数并更新通道
此示例展示如何从公共通道读取数据、分析数据并调度代码定期运行。在示例中,您修改了 MATLAB Analysis 和 MATLAB Visualization App 提供的代码模板之一。此示例使用来自 ThingSpeak 通道 12397 的数据来计算风寒,该数据从位于马萨诸塞州纳蒂克的 Arduino 气象站收集温度和风速。
创建通道
登录 ThingSpeak 创建私有通道,记录和绘制温度、风速和风寒。转至 Channels 选项卡并选择 My Channels。点击 New Channel。选中相应的复选框,并输入这些通道设置值:
Name -
Wind Chill Measurement
Field 1 -
Temperature (F)
Field 2 -
Wind Speed (mph)
Field 3 -
Wind Chill (F)
点击 Save Channel。
分析并写入您的数据
要分析来自公共通道的数据并将其写入您的私有通道,您可以使用代码模板编写 MATLAB® 脚本。纳蒂克的气象站收集与天气相关的数据,并将结果发送到公共 ThingSpeak 通道。您可以访问实时气象站数据来计算风寒指数并自动绘制图。
1) 转至 Apps 选项卡并选择 MATLAB Analysis。点击 New,选择 Calculate wind chill and update channel 选项,然后点击 Create。
2) MATLAB Code 字段预先填充了用于分析和写入数据的代码。将 writeChID
和 writeAPIKey
的给定值替换为您的通道设置。您可以在页面右侧的 Channel Info 面板下找到通道 ID 并写入 API Key。
readChID = 12397; % Replace the following with your channel ID. writeChID = 17504; % Enter your write API key between the ''. writeAPIKey = '23ZLGOBBU9TWHG2H';
3) 使用 thingSpeakRead
函数分别从气象站通道中的字段 4 和 2 中检索最新的温度和风速读数。该函数还记录时间戳。
[temp,time] = thingSpeakRead(readChID,'Fields',4); windSpeed = thingSpeakRead(readChID,'Fields',2);
4) 计算并显示风寒温度。风寒指数是空气温度的一种测量标准,它考虑了风对人体皮肤的冷却作用。该措施仅当气温低于 50 华氏度且风速大于 3 英里每小时时才有效。本例使用国家气象局公式来计算风寒效应。
windChill = 35.74 + (0.06215*temp) - (35.75*windSpeed^0.16) + (0.4275*temp*windSpeed^0.16);
display(windChill,'Wind Chill');
39.9372
5) 将两个测量值和计算值写入您私有 ThingSpeak 通道中的字段 1、2 和 3。
thingSpeakWrite(writeChID,[temp,windSpeed,windChill],'Fields',[1,2,3],... 'TimeStamps',time,'WriteKey',writeAPIKey);
6) 点击 Save and Run 来执行您的代码。ThingSpeak 通道中的三个图各自填充了一个点。您可以通过点击页面右侧 Channel Info 面板中的通道链接来访问您的通道。
调度代码
您可以使用 TimeControl App 将代码设置为定期运行。定期运行代码会在您的 ThingSpeak 通道中生成随时间变化的风寒效应的连续图。
1) 在包含 MATLAB 代码的页面上,滚动到底部并打开 TimeControl App 设置。
2) 将新的 TimeControl 命名为 Wind Chill Control
。将 Frequency 调为 Recurring 并将 Recurrence 设置为 Minute。在 Every - minutes 下拉列表中选择 30
。
3) 将 Action 设置为 MATLAB Analysis
并将 Code to execute 设置为 Calculate wind chill and update channel
。
4) 点击 Save TimeControl。
注意:设置 TimeControl 以使用您 ThingSpeak 帐户上的可用消息将数据写入您的通道。此操作最终会耗尽可用消息,导致拒绝通道源更新。
ThingSpeak 通道中的三个图每 30 分钟更新一次新的风寒值。