如何解读Yoctopuce传感器的数据记录器格式?

时间:2017-06-14 20:53:43

标签: json iot

我想使用Yoctopuce的Virtualhub rest api从传感器数据记录器获取数据。传感器手册提到了如何获取数据,但没有提到如何解释数据。我一直试图从中理解,但我无法获得100%的结论。

在我得到多远的一个例子之下。也许有人在这里看到我错在哪里。或者也许有人已经完成了这项工作。

我的例子是光传感器。我已经清除了数据记录器的数据并开始每分钟记录一次。该值是以Lux测量的数字。

首先,我们需要来自数据记录器的摘要数据。这可以通过调用 http://hub:4444/bySerial/LIGHTMK1-2ABABA/dataLogger.json 来完成。这产生了如下的json文档:

[{"id":"lightSensor","unit":"lx","calib":"0,","cal":"*","streams":
[{"run":0,"utc":1497384000,"dur":1380,"freq":"1/m","val":[0,11,15]}
,{"run":1,"utc":1497384360,"dur":1800,"freq":"1/m","val":[13,15,16]}
,{"run":2,"utc":1497387000,"dur":600,"freq":"1/m","val":[14,16,17]}
,{"run":2,"utc":1497387600,"dur":3600,"freq":"1/m","val":[0,1,18]}
,{"run":2,"utc":1497391200,"dur":3600,"freq":"1/m","val":[0,0,0]}
,{"run":2,"utc":1497394800,"dur":3600,"freq":"1/m","val":[0,0,0]}
,{"run":2,"utc":1497398400,"dur":3600,"freq":"1/m","val":[0,0,0]}
,{"run":2,"utc":1497402000,"dur":3600,"freq":"1/m","val":[0,0,0]}
,{"run":2,"utc":1497405600,"dur":3600,"freq":"1/m","val":[0,0,0]}
,{"run":2,"utc":1497409200,"dur":3600,"freq":"1/m","val":[0,1,12]}
,{"run":2,"utc":1497412800,"dur":3600,"freq":"1/m","val":[0,1,2]}
,{"run":2,"utc":1497416400,"dur":3600,"freq":"1/m","val":[2,10,18]}
,{"run":2,"utc":1497420000,"dur":780,"freq":"1/m","val":[17,17,19]}
...etc...
]}]

第一行非常明显 - 传感器的名称(lightSensor)和其度量单位的符号(lx)。 似乎持有数据。不幸的是,我还没有找到流代表的东西。 运行数字代表什么。随着时间的推移,元素正在被添加。对于其余部分,我认为 utc 代表数据的开始时间戳。 dur的持续时间(秒);这在后期得到证实。而且 freq 确实是一分钟一次。属性 val 似乎代表汇总的min / avg / max三元组。

接下来,可以通过提供传感器的名称和其中一个确切的utc值来请求详细信息。例如,调用 http://hub:4444/bySerial/LIGHTMK1-2ABABA/dataLogger.json?id=lightSensor&utc=1497387000 会生成json文档

[[16,16,16]
,[16,16,16]
,[15,16,16]
,[14,15,15]
,[14,15,15]
,[14,15,15]
,[15,16,17]
,[14,17,17]
,[17,17,17]
,[16,17,17]
]
乍一看,这是一个min / avg / max三元组数组。这证实了假设 dur 表示以秒为单位的持续时间。因为有10个元素,每分钟一个。这代表600秒。

我假设每个三元组时间戳是utc值+(索引* 60)。这一切似乎都有道理。除时间重叠外。

第一个摘要元素从utc 1497384000开始,持续1380秒。这意味着下一个元素应该从utc 1497385380开始。但是,它从utc 1497384360开始。这是之前的时间戳!重叠1020秒。事实上,当运行数增加时,似乎总是有重叠。

我希望重叠值相同。他们不是。事实上它们非常不同。所以我不能忽视它们。

这都会对如何解释数据产生怀疑。是否应考虑所有三胞胎?重叠是否应被下一个元素的值覆盖?还是逆?也许他们应该总结一下?

问题在于我无法找到一种方法来解释超出合理怀疑的数据。

1 个答案:

答案 0 :(得分:0)

当传感器断开连接(断电)并重新连接时,“运行编号”会自动递增,此时下一个测量值不能自然地适合当前流。通常,如果重新连接传感器的时间似乎早于最后一个流中的最后一个度量,则会执行新流以反映此不一致性。

问题是,为什么这些时间戳不匹配...由于微型USB光传感器没有内置时钟,因此在USB协商期间从主机(PC)获得USB时间戳。因此,如果您将传感器连接到具有不同时间设置(不同时间或不同时区)的两台不同PC,您可能会遇到此类问题。另一个可能的原因是如果当前正在通过NTP调整PC时钟,这可能导致传感器时钟以与PC不同的速率运行。但鉴于巨大的差异,这不太可能......

如果您可以轻松地重现问题,并且由于重叠很大,最好的方法是在PC上显示时钟,连接传感器,记下传感器连接的时间,20分钟后断开连接左右,记下时间,重新连接并查看问题是否再次出现。下载所有REST数据并解码utc时间戳以检查哪个值是正确的以及哪个值是错误的。

您可以直接使用support@yoctopuce.com

跟进此讨论