Main Content

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

创建自定义 ThingSpeak 通道视图

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

添加数字显示小组件

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

添加通道位置图

您可以存储通道的位置信息以及通道数据的单独更新。对于这个示例,首先添加通道位置图,它与源数据位置信息不同。选择通道视图上的“通道设置”选项卡。

选择“显示通道位置”并输入您的通道位置的“纬度”和“经度”信息。

点击“保存通道”以更新设置。

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

将二系列图添加到通道视图

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

选择自定义代码模板。在 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 可视化效果。使用 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');

建筑物前面较温暖的位置的微妙影响会导致出现一些较小的圆圈,表明土壤较干燥,但喷头刚刚结束的右侧除外。

您可以将保存的可视化效果添加到通道的公共和私有视图中。在“显示设置”中,使用“将此可视化添加/编辑到通道”旁边的加号来展开通道列表。

选中与要将可视化添加到的通道对应的复选框。要添加私有可视化,请选择“私有视图”。要共享 URL 并将可视化添加到“公共视图”,请点击“创建公共 URL”。要更新您的选择,请点击“保存显示设置”。