Данные, записанные с правильной меткой времени, не отображаются в Chronograf InfluxDB

У меня есть встроенная плата, которая отправляет информацию от датчиков IMU вместе с отметкой времени, полученной от модуля RTC.

Метки времени получены из RTClib от Adafruit.

В коде есть функция unixtime(), которая предоставляет мне следующие временные метки:

1537466106 
1537466107
1537466109

Если я введу вышеупомянутые временные метки в Online Epoch Converter, он предоставит мне правильное время на сегодняшний день.

Я отправляю эту информацию через HTTP, и информация сохраняется в InfluxDB при imu измерениях следующим образом:

Запрос: 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 на машине, чтобы визуализировать данные, полученные в вышеупомянутом измерении.

Запрос хронографа

Запрос хронографа

Как ни странно, таблица всегда показывает, что метки времени указывают на эпоху 1970 года.

Таблица показывает неправильные отметки времени

Запрос одного поля из базы данных дает следующие выходные данные:

Запрос правильный, но безрезультатно

Исследовать

Я прочитал документы для InfluxDB, и у них есть отметки времени для nanoseconds точности.

Напротив, временные метки, о которых я упоминал выше, на самом деле правильные, но почему Chronograf / InfluxDB не может правильно их понять?

кейс

Я получаю метки времени как uint32_t из RTClib, но я не уверен, как мне преобразовать их с точностью до наносекунд.

Я отправляю информацию о временной метке в виде строки, разумно ли объединять нули в строку? Если так, сколько нулей может потребоваться?


person Shan-Desai    schedule 20.09.2018    source источник


Ответы (1)


Аппаратное обеспечение

Я использую модуль RTC DS3231, который обеспечивает точность секунд. [1].

Согласно документации для синтаксиса записи HTTP InfluxDB [2]:

Все временные метки считаются наносекундами Unix, если не указано иное.

Поскольку информация, предоставляемая RTC, зависит от оборудования, я предполагаю, что точность не может быть изменена. (сомнительно)

Решение

Я использовал параметр precision в синтаксисе записи HTTP в моем Arduino Sketch следующим образом:

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 со всеми вышеупомянутыми запросами в вопросе.

[1] Adafruit's DS3231

[2] Документация по HTTP-записи InfluxDB

person Shan-Desai    schedule 20.09.2018