Отметка концентратора шлюза не равна UTC-времени измерения
В выгрузке LoRaWAN встречаются числа времени разной природы. Одно относится к внутреннему счётчику шлюза, другое — к приёму сообщения сервером, третье может передаваться самим датчиком. Если записать их в один столбец без происхождения, график хозяйства получит неверную хронологию и ложную оценку задержки.
Прочитать смысл каждого поля
Semtech PROTOCOL.TXT различает внутреннюю отметку концентратора tmst и другие временные сведения пакета. (Semtech Lora-net — Packet Forwarder PROTOCOL.TXT) Документация сообщений The Things Industries также выделяет отдельные поля метаданных приёма. (The Things Industries — Messages API Reference) Название timestamp без указания источника недостаточно для преобразования в календарное время.
В карте данных укажите единицу, начало отсчёта, возможное переполнение и поведение при перезапуске, если они определены реализацией. Не подставляйте значение tmst в обычный преобразователь Unix времени. Правдоподобная дата, полученная программой, не подтверждает корректность исходной интерпретации.
Разделить измерение и транспортные события
Время измерения относится к моменту получения физического значения узлом. Отметка шлюза описывает этап приёма радиообмена, а серверная — доступный этап обработки сообщения. При локальном буфере датчика эти моменты могут заметно различаться даже при исправной сети.
Увеличить схему
Если время измерения отсутствует, обозначьте это в модели данных. Не переименовывайте время серверного поступления в время измерения ради заполнения обязательного поля. Допустимое приближение должно иметь отдельное происхождение и понятные ограничения для пользователя графика.
Проверить сопоставление часов
На стенде создайте контролируемое событие и сохраните исходный payload вместе с метаданными всех этапов. Зафиксируйте, откуда каждая сторона получает UTC и как определяется качество синхронизации. Без этого разность двух отметок может отражать расхождение часов вместо задержки связи.
Отдельно проверьте перезапуск шлюза. Внутренняя шкала может начать новый жизненный цикл, который нельзя склеивать с предыдущим произвольным постоянным смещением. Если система поддерживает специальное преобразование временных доменов, используйте только документированный механизм и сохраняйте его статус.
Сделать происхождение времени видимым
Храните оригинальные поля рядом с нормализованными значениями. Для отображения календарного времени указывайте выбранную зону, не изменяя исходные серверные отметки. Это позволяет пересмотреть расчёт без потери фактов и объяснить порядок поздно доставленных записей.
Приёмка завершена, когда для каждой временной оси можно назвать источник и границы точности. Тогда внутренний счётчик помогает диагностировать радиообмен, серверное время описывает обработку, а история измерений строится по действительно доступному времени физического события либо по явно обозначенному приближению.