Некорректный парсинг протокола Wialon IPS 2.0 (может и 1.0 не проверял)

ELSE7 months ago

Добрый день.
Подключил несколько одинаковых устройств к Траккар по протоколу Wialon IPS 2.0.
кусок лога взаимодействия с сервером Траккар:
Устройство №1 SN: XXX423

240712-085309:--> [TraccarL]#L#2.0;30XXXXXX5250;NA;6080
240712-085309:<-- [TraccarL]#AL#1
240712-085319:--> [TraccarL]#D#120724;084623;6630.331;N;178038.228;W;NA;NA;80;NA;NA;NA;NA;;NA;imei:3:30XXXXXX5250,sn:1:XXX423,battery:1:5,rssi:1:0,momsn:1:600,channel:1:1,temp:1:16;9A61

Устройство №2 SN XXXX433:

240712-085732:--> [TraccarL]#L#2.0;30XXXX3240;NA;9B01
240712-085732:<-- [TraccarL]#AL#1
240712-085742:--> [TraccarL]#D#120724;084721;6602.735;N;178035.844;W;NA;NA;NA;NA;NA;NA;NA;;NA;imei:3:30XXXXX3240,sn:1:XXXX433,battery:1:5,rssi:1:2,momsn:1:65492,channel:1:1,temp:1:5;1080

Устройство №2 хоть и пишет что обновление было N времени назад, но данные в Траккар не отображаются.
Оба пакета полностью соотв. описанию протокола Wialon IPS 2.0.
Разница между данными в устройствах только в том, что Широта в целой части минут имеет ведущий 0 (т.е. число минут меньше 10) :
6602.735;N;, т.е. 66 град 2.735 минут.

Проверил остальные устройства - такое же поведение. У всех целая часть минут меньше 10 и идет с ведущим нулем.

Цитата из документации на протокол:
"Координаты соответствуют стандарту NMEA 0183. GGMM.MM — формат широты. Две цифры градусов (GG). Если значение градусов состоит из одной цифры, поле градусов в любом случае содержит две цифры, т. е. заполняется нулями, например, 01. Далее две цифры целых минут, точка и дробная часть минут переменной длины. Лидирующие нули не опускаются. N — северная широта (положительная), S — южная широта (отрицательная). "

Не могли бы проверить парсинг протокола Wialon IPS на предмет соответствия документации по части обработки широты и долготы?
Ссылка на оф. документ оф. ресурса владельца протокола:
https://wialon.com/ru/gps-hardware/soft/wialon-ips

Anton Tananaev6 months ago

Где логи сервера?

ELSE6 months ago

Где лежит лог сервера? какой именно файл нужно выслать?
Без лога сервера парсер проверить невозможно на предмет корректности распарсивания чисел?

ELSE6 months ago

Лог сервера был включен только на warning. В итоге пусто. Вернули по-дефолту. Наберутся данные (несколько дней) - вышлю

Jimson6 months ago

ошибка с нашей стороны в лидирующем нуле в минутах, должно быть два знака до запятой, а не три
178038.228;W;
должно быть
17838.228;W;

но я обратил внимание что у вас в регулярных выражениях везде используется точка, но подразумевается не "любой символ", а именно точка, это может вызвать неверное сопоставление и привести когда то к магическим проблемам, которые будет сложно диагностировать
или где то глубже в коде вы заменяете точку на [.] перед сопоставлением шаблонов?

Anton Tananaev6 months ago

или где то глубже в коде вы заменяете точку на [.] перед сопоставлением шаблонов?

Заменяем на ".".