使用正确时间戳写入的数据不会在 Chronograf InfluxDB 中可视化
Data written with correct timestamp does not get visualized in Chronograf InfluxDB
我有一个嵌入式板,它发送来自 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 查询
奇怪的是 table 总是显示时间戳指向 1970 年的纪元
查询数据库中的单个字段提供以下输出:
研究
我阅读了 InfluxDB 的文档,它们具有 nanoseconds
精度的时间戳。
相反,我上面提到的时间戳实际上是正确的,但为什么 Chronograf/InfluxDB 不能正确把握它?
案例
我从 RTClib
中获得了 uint32_t
的时间戳,但我不确定如何将其转换为纳秒精度。
我将时间戳信息作为字符串发送,将零连接到字符串是否明智?如果是,可能需要多少个零?
硬件
我正在使用 DS3231 RTC 模块,它提供 精度 秒。 [1].
根据 InfluxDB 的 HTTP 写语法文档[2]:
All timestamps are assumed to be Unix nanoseconds unless otherwise specified
由于 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 中的可视化非常完美,问题中包含上述所有查询。
我有一个嵌入式板,它发送来自 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 查询
奇怪的是 table 总是显示时间戳指向 1970 年的纪元
查询数据库中的单个字段提供以下输出:
研究
我阅读了 InfluxDB 的文档,它们具有 nanoseconds
精度的时间戳。
相反,我上面提到的时间戳实际上是正确的,但为什么 Chronograf/InfluxDB 不能正确把握它?
案例
我从 RTClib
中获得了 uint32_t
的时间戳,但我不确定如何将其转换为纳秒精度。
我将时间戳信息作为字符串发送,将零连接到字符串是否明智?如果是,可能需要多少个零?
硬件
我正在使用 DS3231 RTC 模块,它提供 精度 秒。 [1].
根据 InfluxDB 的 HTTP 写语法文档[2]:
All timestamps are assumed to be Unix nanoseconds unless otherwise specified
由于 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 中的可视化非常完美,问题中包含上述所有查询。