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

Json 如何解释Yoctopuce传感器的数据记录器格式?,json,iot,Json,Iot,我想使用Yoctopuce的Virtualhub rest api从传感器数据记录器获取数据。传感器手册提到了如何获取数据,但没有提到如何解释数据。我一直试图从中理解,但我无法得到100%的结论 下面是一个我走了多远的例子。也许这里有人知道我错了。或者可能有人已经通过了努力 我的例子是光传感器。我已经清除了数据记录器的数据并开始每分钟记录一次。该值是以勒克斯为单位测量的数字 首先,我们需要来自数据记录器的摘要数据。这可以通过调用来完成。这将生成一个json文档,如下所示: [{"id":"li

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

下面是一个我走了多远的例子。也许这里有人知道我错了。或者可能有人已经通过了努力


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

首先,我们需要来自数据记录器的摘要数据。这可以通过调用来完成。这将生成一个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的持续时间(秒);这将在稍后阶段确认。而freq实际上是每分钟一次。属性val似乎代表了一个汇总的最小/平均/最大三元组

接下来,可以通过提供传感器名称和一个准确的utc值来请求详细信息。例如,调用生成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值+(索引*60)。这一切似乎都有道理。除了时间重叠

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

我希望重叠的值是相同的。但事实并非如此。事实上,它们完全不同。所以我不能忽视他们

这一切都使人们对如何解释这些数据产生了疑问。应该考虑所有的三胞胎吗?重叠应该被下一个元素的值覆盖吗?还是相反?也许应该把它们加起来

问题是,我找不到一种解释数据的方法,这种方法毫无疑问是有意义的

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

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

如果你可以很容易地重现问题,而且重叠非常大,最好是在你的电脑上显示时钟,连接传感器,记下传感器连接的时间,20分钟左右后断开连接,记下时间,重新连接,看看问题是否再次出现。下载所有REST数据并解码utc时间戳,以检查哪些值正确,哪些值错误

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

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

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

如果你可以很容易地重现问题,而且重叠非常大,最好是在你的电脑上显示时钟,连接传感器,记下传感器连接的时间,20分钟左右后断开连接,记下时间,重新连接,看看问题是否再次出现。下载所有REST数据并解码utc时间戳,以检查哪些值正确,哪些值错误


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

我会的!但基本上你是说我可以用后面运行的重叠值覆盖前面运行的值?我会这么做的!但基本上你是说我可以用后面运行的重叠值覆盖前面运行的值?