分析您的数据
此示例演示如何从 ThingSpeak channel 12397 读取温度和湿度数据,该数据从 Arduino® 设备收集天气相关数据。您将温度和湿度数据以及计算出的露点数据写入露点测量通道。然后使用 ThingSpeak™ 在您的通道上可视化结果。
前提步骤
此示例要求您已执行以下步骤:
Sign In 到您的 MathWorks® 帐户或 ThingSpeak 帐户,或创建一个新的 MathWorks account。
创建通道 作为您的露点测量通道。
从通道读取数据
从公共气象站通道字段 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
将您的 Write API Key 保存到变量中。
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 Analysis,并将露点计算设置为 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 个数据点:
温度:来自 Field 1
湿度:来自 Field 2
露点:来自 Field 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)