主要内容

本页采用了机器翻译。点击此处可查看英文原文。

创建自定义 ThingSpeak 通道视图

此示例显示如何将 ThingSpeak 通道视图转变为实时数据控制台。该示例使用通过物联网收集的环境数据,但您可以根据自己的数据调整该过程。ThingSpeak 通道 876466 是一个公共通道,显示来自三传感器探头的数据,该探头配有土壤湿度、温度和 GPS 位置传感器。示例通过物联网收集农业数据详细说明了如何构建将传感器数据发布到此通道的设备。可以添加字段值显示来显示计数器,然后添加通道位置图。使用时间相关读数来过滤传感器数据,并使其更容易可视化潜在趋势。最后,您可以绘制通道中位置数据的地图,并使用代表通道数据的颜色和点区域。

添加数字显示小组件

此通道上的字段 1 是一个计数器值,表明设备处于活动状态并且正在增加测量值。在通道视图上显示计数器的最新值可以快速更新传感器的活动。您可以使用私有通道视图中的添加小组件按钮为您的通道添加数字显示小组件。注意,您需要通道中的数据才能在数字小组件小部件上看到字段值。

添加通道位置图

您可以存储通道的位置信息以及通道数据的单独更新的位置信息。对于此示例,首先添加通道位置图,该图与源数据位置信息不同。在通道视图中选择 Channel Settings 选项卡。

选择 Show Channel Location 并输入通道位置的 LatitudeLongitude 信息。

点击 Save Channel 以更新设置。

现在,您的私有通道和公共通道视图都包含通道地图。

向通道视图添加双系列绘图

与通道视图中显示的默认 ThingSpeak 图相比,MATLAB Visualization 提供了对分析和图的更多控制。某些许可证类型还允许自动更新可视化效果。您可以使用时间和阈值过滤来改善数据可视化。对于此示例,可视化温度和土壤湿度之间的关系。首先点击通道视图上的 MATLAB Visualization按钮。

选择自定义代码模板。在 MATLAB 代码窗口中输入以下代码。因为感兴趣的数据来自之前的实验,所以使用时间过滤从通道中读取较旧的数据。使用 datetime 设置开始和结束时间。然后使用 thingSpeakRead 将数据读入时间表。

startTime = datetime(2019,8,23,09,15,00);
endTime=  startTime+ days(2);
sensorData = thingSpeakRead(876466,'Location',1,'dateRange',[startTime endTime],...
    'location',1,'outputformat','timetable');

第三列的温度数据有一些错误的测量值,必须在绘图之前将其过滤掉。删除温度读数大于 100 的所有行。

sensorData(sensorData{:,3}>100,:)=[];

现在完成绘图。使用 hold 确保图位于同一图窗中,并使用 yyaxis 在正确的轴上绘制土壤湿度。为了清晰起见,在每一侧添加 ylabel,并使用 ylim 设置比例。

plot (sensorData.Timestamps,sensorData.TemperatureF)
ylabel('^0F');
hold;
Current plot held
yyaxis right
plot(sensorData.Timestamps,sensorData.SoilMoisture);
ylabel('Soil Conductivity');
ylim([700 900]);
hold off;

土壤湿度探测器测量土壤的电导率,因此,土壤越潮湿,电导率越高,测量值在图上就越低。该图显示较低的温度与较湿润的土壤相关。

在通道视图上使用位置数据可视化测量结果

对于此通道,原型将位置数据与传感器测量值一起发送。其中一个应用是利用温度和湿度测量来勘测大面积区域,并通过位置来可视化数据。

与前面的示例一样,使用通道视图上的按钮添加新的 MATLAB Visualization。使用 thingSpeakRead 读取最近的点,并使用 goescatter 绘制位置数据。使用 geobasemap 选择卫星地图数据。

mapData = thingSpeakRead(876466,'ReadKey','R14RSDIMCQHDW1A8','Location',...
    1,'numpoints',37,'location',1,'outputformat','timetable');
geoscatter(mapData.Latitude,mapData.Longitude,'r');
geobasemap('satellite');

地图很好地显示了各个位置。在地图中包含温度和湿度数据以改善可视化。当测量装置从一个位置移动到另一个位置时,在探头重新放入地面之前,可能会产生不准确的湿度测量结果。删除第二列土壤湿度数据中所有小于 500 的数据。然后重新调整数据的比例以提高可见性。将湿度数据添加到 goescatter 函数中以确定圆圈的大小,并添加温度数据来确定颜色。使用 ‘filled’ 选项填充圆圈。

mapData(mapData{:,2}<500,:)=[];
mapData.SoilMoisture=mapData.SoilMoisture-min(mapData.SoilMoisture)+1;
geoscatter(mapData.Latitude,mapData.Longitude,mapData.SoilMoisture,mapData.TemperatureF,'filled');
geobasemap('satellite');

建筑物前方较温暖位置的微妙影响导致一些较小的圆圈出现,表示土壤较干燥,右侧洒水器刚刚结束喷水的地方除外。

您可以将保存的可视化效果添加到通道的公共和私有视图中。在 Display Settings 中,使用 Add/Edit this Visualization to a Channel 旁边的加号来展开通道列表。

选中与要添加可视化效果的通道对应的复选框。要添加私有可视化效果,请选择 Private View。要共享 URL 并将可视化内容添加到 Public View,请点击 Create a public URL。要更新您的选择,请点击 Save Display Settings