分析您的数据
此示例展示如何从 ThingSpeak 通道 12397 读取温度和湿度数据,该通道从 Arduino® 设备收集与天气相关的数据。您将温度和湿度数据与计算出的露点数据一起写入露点测量通道。然后使用 ThingSpeak™ 在您的通道上可视化结果。
先决条件步骤
此示例要求您已执行以下步骤:
登录您的 MathWorks® 帐户或 ThingSpeak 帐户,或者创建一个新的 MathWorks 帐户。
创建通道 作为您的露点测量通道。
从通道读取数据
从公共 WeatherStation 通道字段 3 和 4 读取湿度和温度,并将该数据分别写入露点测量通道的字段 2 和 1。计算露点并将其写入字段 3。
使用 MATLAB® Analysis 读取、计算和写入数据。
转至 Apps 选项卡,然后点击 MATLAB Analysis。
点击 New。选择 Custom 模板,然后点击 Create。
在 Name 字段中,输入
Dew Point Calculation
。在 MATLAB 代码字段中,输入以下代码行。
将公共气象站通道 ID 和露点测量通道 ID 保存到变量。
readChId = 12397; writeChId = 671; % replace with your channel number
将您的写入 API 密钥保存到变量中。
writeKey = 'F6CSCVKX42WFZN9Y'; % Replace with your channel write key
要查找您的通道 ID 和写入 API 密钥,请参阅 My Channels 选项卡上的通道信息。
从公共气象站通道将最新的 20 个带有时间戳的温度数据和湿度数据读入变量。
[temp,time] = thingSpeakRead(readChId,'Fields',4,'NumPoints',20); humidity = thingSpeakRead(readChId,'Fields',3,'NumPoints',20);
计算露点
添加以下 MATLAB 代码,使用温度和湿度读数计算露点:
将温度从华氏度转换为摄氏度。
tempC = (5/9)*(temp-32);
指定水蒸气(
b
)和气压(c
)的常数。b = 17.62; c = 243.5;
计算摄氏度的露点。
gamma = log(humidity/100) + b*tempC./(c+tempC); dewPoint = c*gamma./(b-gamma)
将结果转换回华氏度。
dewPointF = (dewPoint*1.8) + 32;
将数据写入您的露点测量通道。此代码在一次操作中发布所有可用数据并包含正确的时间戳。
thingSpeakWrite(writeChId,[temp,humidity,dewPointF],'Fields',[1,2,3],... 'TimeStamps',time,'Writekey',writeKey);
完整的代码块现在如下所示:
点击 Save and Run 来验证并处理您的代码。
代码中的任何错误都会在 Output 字段中指明。
要查看您的代码是否成功运行,请点击 Channel Info 面板中的 Dew Point Measurement 通道链接。
露点测量通道现在显示来自每个领域的通道数据图表。
调度代码
使用 TimeControl App 在您的 MATLAB 分析代码中调度露点计算。调度它每 30 分钟从气象站读取数据并计算露点。
滚动到 MATLAB 分析露点计算页面的底部。点击 TimeControl 打开 App,其中 Actions 字段中预先选择了 MATLAB 分析,且 Code to execute 选择了露点计算。
将新的 TimeControl 命名为
Dew Point TC
在 Frequency 字段中选择 Recurring。
在 Recurrence 字段中选择 Minute。
在 Every - minutes 字段中选择 30。
将 Start Time 保持为默认值。
验证 Action 是否是 MATLAB Analysis,并且 Code to execute 是否是 Dew Point Calculation。
点击 Save TimeControl
注意
设置 TimeControl 以使用您 ThingSpeak 帐户上的可用消息将数据写入您的通道。此操作最终会耗尽可用消息,导致拒绝通道源更新。确保写入通道的数据在时间域中不会重叠,因为这会导致不必要的消息使用。
可视化露点测量
使用 MATLAB 可视化 App 可视化从露点测量通道测量的露点数据、温度和湿度。此示例使用 plot
(MATLAB) 函数在单个可视化中显示所有三个数据点。
转至Apps > MATLAB Visualizations,然后点击 New 以创建可视化。
或者,您可以点击露点测量通道视图中的 MATLAB Visualization。
选择 Custom 模板,然后点击 Create。
将可视化命名为“露点”。
为您的露点测量通道 ID 和读取 API 密钥创建变量。将代码中的值替换为您的通道 ID 和读取 API 密钥。
readChId = ZZZZ readKey = 'XXXXXXXXXXXXXXXX';
从通道字段读取数据,并获取最后 100 个数据点:
温度:来自 1 号场地
湿度:来自 2 号田地
露点:来自 3 号田
[dewPointData,timeStamps] = thingSpeakRead(readChId,'fields',[1,2,3],... 'NumPoints',100,'ReadKey',readKey);
使用 x 和 y 标签、标题和图例绘制数据。
plot(timeStamps,dewPointData); xlabel('TimeStamps'); ylabel('Measured Values'); title('Dew Point Measurement'); legend({'Temperature','Humidity','Dew Point'}); grid on;
您的代码将类似于以下代码:
点击 Save and Run。如果您的 MATLAB 代码没有错误,则绘图输出看起来类似于此处显示的绘图:
后续步骤
在示例 基于数据进行操作 中,您可以跟踪计算出的露点,以便在超过指定水平时触发自动推文。
另请参阅
thingSpeakRead
| thingSpeakWrite
| plot
(MATLAB) | xlabel
(MATLAB) | ylabel
(MATLAB) | title
(MATLAB) | legend
(MATLAB) | grid
(MATLAB)