可视化 ThingSpeak REST API 中的数据
在此示例中,您将学习如何可视化 ThingSpeak API 中的数据。
出于演示目的,此处使用了交通监控公共通道(通道 ID:38629)。ThingSpeak API 支持多种格式,例如 JSON、CSV 和 XML,我们将介绍如何使用所有这些不同的 API 格式。
JSON 示例
如您在下图中所示,我们使用的是该通道的JSON feed URL。根据该 JSON schema,数据点位于名为 feeds
的节点下,因此我们将其指定为 Rows/Root 选择器。接着对于列,我们需要先指定时间列,即 JSON feed 中的 created_at
字段。然后,我们可以指定一个或多个指标(数字)字段,如下所示。
CSV 示例
如果您偏好 CSV 格式而非 JSON,此处是同一通道的示例设置。我们使用的是该通道的CSV feed URL。在查询中,选择 CSV
作为类型,指定 CSV feed URL,然后指定您需要的字段以及时间字段。
XML 示例
您不仅限于使用 CSV 或 JSON 格式。如果愿意,您也可以在查询中使用 XML 格式。我们使用的是该通道的XML feed URL。查询设置与 CSV/JSON 几乎相同。需要注意的配置是您的 rows/root 字段和 timestamp 字段。如下所示,我们使用 channel.feeds[0].feed
作为 root/rows 选择器,然后使用 created-at[0]._
选择 timestamp。
使用 Grafana 的时间过滤器
设置查询后,您可能会发现图表中总是查询最近的数据,而不管在 Grafana 中选择的时间范围是什么。要解决此问题,您需要在 URL 中传递 Grafana 的动态时间范围。根据ThingSpeak API 规范,您应该将开始时间和结束时间作为查询字符串参数传递到 URL。为此,请在 URL 末尾附加 ?start=${__from:date:YYYY-MM-DD HH:NN:SS}&end=${__to:date:YYYY-MM-DD HH:NN:SS}
。您可以使用grafana 文档中指定的任何变量
完整的 URL 现在变为 https://thingspeak.com/channels/38629/feed.json?start=${__from:date:YYYY-MM-DD HH:NN:SS}&end=${__to:date:YYYY-MM-DD HH:NN:SS}
。
长时程范围
通常,您可以在长达 2 小时的时间内检索所有未聚合的指标。如果您需要更长的时间范围,可能需要在 URL 中传递聚合过滤器。在下面的示例中,我们查询的是过去 180 天的数据,因此我们使用 URL https://thingspeak.com/channels/38629/feed.json?start=${__from:date:YYYY-MM-DD HH:NN:SS}&end=${__to:date:YYYY-MM-DD HH:NN:SS}&average=1440
拉取聚合数据。这里需要注意的重要一点是 average=1440,它指定每 1440 分钟/1 天取平均值。您可以指定更精细的时间粒度进行聚合。根据文档,10、15、20、30、60、240、720、1440 是有效的时间范围(以分钟为单位)。此外,除了 average,您还可以使用 sum/timescale/median 函数。
注意
此帖子最初发布在GitHub 讨论区