2017-06-14 86 views
1

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

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


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

首先,我们需要来自数据记录器的摘要数据。这通过呼叫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表示数据的开始utc时间戳。 dur;这在后期得到证实。并且频率确实是一分钟。物业val似乎代表了一个汇总的最小/平均/最大三重。

接下来,可以通过提供传感器的名称和确切的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] 
] 

乍一看这是最小/平均/最大三胞胎的阵列。这证实了假设dur表示以秒为单位的持续时间。因为有10个元素,每分钟一个元素。其中代表600秒。

我为此假设每个三元时间戳都是utc值+(index * 60)。这一切似乎都有道理。时间重叠的例外。

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

我希望重叠的值是相同的。他们不是。他们实际上很不相同。所以我不能忽视它们。

这一切都让人怀疑如何解释数据。是否应该考虑所有的三胞胎?重叠应该被下一个元素的值覆盖吗?或者相反?也许他们应该总结一下?

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

回答

0

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

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

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

您可以通过[email protected]直接跟进此讨论。

+0

我会那么做!但基本上你是在告诉我,我可以用后来运行的重叠值覆盖早期运行的值。 –