我有一块嵌入式板,可从IMU传感器发送信息以及从RTC模块接收的时间戳。
时间戳是从Adafruit's RTClib
获得的该代码具有一个名为unixtime()
的函数,该函数为我提供了以下时间戳:
1537466106
1537466107
1537466109
如果我在Online Epoch Converter中输入上述时间戳记,则它为我提供了今天的正确时间。
我通过HTTP发送此信息,并且信息以imu
的形式存储在InfluxDB中,如下所示:
查询:SELECT * FROM imu LIMIT 100
time eul_x eul_y eul_z liac_x liac_y liac_z location nodeid status
---- ----- ----- ----- ------ ------ ------ -------- ------ ------
1537466106 273.25 -0.88 4.06 -0.06 -0.74 9.81 front node1 0
1537466107 273.25 -0.88 4.12 -0.09 -0.87 9.72 front node1 0
1537466109 273.25 -0.88 4.12 -0.09 -0.86 9.62 front node1 0
1537466110 273.25 -0.88 4.12 -0.07 -0.84 9.67 front node1 0
1537466111 273.25 -0.88 4.12 -0.1 -0.85 9.71 front node1 0
1537466112 273.25 -0.88 4.12 -0.08 -0.86 9.74 front node1 0
1537466113 273.25 -0.88 4.12 -0.04 -0.83 9.7 front node1 0
1537466114 273.25 -0.88 4.12 -0.07 -0.84 9.7 front node1 0
1537466115 273.25 -0.88 4.12 -0.07 -0.85 9.67 front node1 0
1537466116 273.25 -0.88 4.12 -0.06 -0.85 9.67 front node1 0
1537466117 273.25 -0.88 4.12 -0.06 -0.84 9.66 front node1 0
1537466118 273.25 -0.88 4.12 -0.07 -0.83 9.66 front node1 0
1537466119 273.25 -0.88 4.12 -0.09 -0.83 9.68 front node1 0
1537466120 273.25 -0.88 4.12 -0.08 -0.84 9.7 front node1 0
1537466121 273.25 -0.81 4.12 -0.08 -0.87 9.52 front node1 0
1537466123 272.12 -0.81 -3.06 -0.15 0.54 9.74 front node1 0
现在,我在计算机上运行一个Chronograf实例,以可视化上述测量中获得的数据
Chronograf查询
奇怪的是,表格始终显示时间戳记指向1970年时代。
从数据库中查询单个字段将提供以下输出:
我阅读了InfluxDB的文档,并且它们具有用于nanoseconds
精度的时间戳。
相反,我上面提到的时间戳实际上是正确的,但是为什么Chronograf / InfluxDB无法正确把握它?
我从uint32_t
获得了时间戳记RTClib
,但是我不确定如何将其转换为纳秒精度。
我将时间戳信息作为字符串发送,将零连接到字符串是否明智?如果那么那么可能需要多少个零?
答案 0 :(得分:0)
我正在使用 DS3231 RTC模块,该模块提供秒的精度。 [1] 。
根据InfluxDB HTTP写语法 [2] 的文档:
除非另有说明,否则所有时间戳均假定为Unix纳秒。
由于RTC提供的信息是特定于硬件的,因此我认为精度不能更改。 (可疑)
我在Arduino Sketch中的HTTP写入语法中使用了precision
参数,如下所示:
HTTPClient http;
http.begin("http://" + _host + ":" + _port + "/write?db=" + _db + "&precision=s");
http.addHeader("Content-Type", "text/plain");
int httpResponseCode = http.POST(mes_dat);
precision
的值为s
(以秒为单位)。这样会将信息以正确的方式保存在InfluxDB中。
name: imu
time eul_x eul_y eul_z liac_x liac_y liac_z location nodeid status
---- ----- ----- ----- ------ ------ ------ -------- ------ ------
1537470381000000000 359.31 0 9.81 -0.05 -1.47 9.82 front node1 0
1537470382000000000 359.37 0 10.81 -0.05 -1.72 9.75 front node1 0
1537470383000000000 359.37 -0.06 10.81 -0.06 -1.75 9.71 front node1 0
1537470384000000000 359.37 -0.06 10.81 -0.03 -1.75 9.67 front node1 0
1537470385000000000 359.37 -0.06 10.81 -0.05 -1.76 9.73 front node1 0
1537470386000000000 359.37 -0.06 10.75 -0.05 -1.76 9.72 front node1 0
1537470387000000000 359.37 -0.06 10.75 -0.06 -1.77 9.64 front node1 0
1537470388000000000 359.37 -0.06 10.75 -0.02 -1.76 9.61 front node1 0
1537470389000000000 359.37 -0.06 10.75 -0.04 -1.76 9.61 front node1 0
1537470390000000000 359.37 -0.06 10.75 -0.03 -1.82 9.61 front node1 0
1537470391000000000 359.37 -0.06 10.63 -0.03 -1.78 9.72 front node1 0
1537470393000000000 359.37 -0.06 10.63 -0.05 -1.78 9.63 front node1 0
1537470394000000000 359.37 -0.06 10.63 -0.05 -1.76 9.76 front node1 0
在Chronograf中,可视化是完美的,所有上述查询均在问题中。