Коммуникационный протокол Wialon IPS

Коммуникационный протокол Wialon IPS разработан компанией Gurtam для использования в персональных и автомобильных GPS и ГЛОНАСС трекерах, передающих данные на сервер системы спутникового мониторинга по протоколу TCP или UDP.

Входящие данные TCP протокола

Все данные приходят в текстовом формате и представляют собой пакет следующего вида: #TP#msg\r\n

# cтартовый байт
TP тип пакета, описание всевозможных типов указано в таблице 1
# разделитель
msg непосредственное сообщение
\r\n конец пакета

Типы пакетов

Тип Описание Кто отправляет
L пакет логина оборудование
AL ответ на пакет логина сервер
D пакет с данными оборудование
AD ответ на пакет с данными сервер
P пинговый пакет оборудование
AP ответ на пинговый пакет сервер
SD сокращенный пакет с данными оборудование
ASD ответ на сокращенный сервер
B пакет с черным ящиком оборудование
AB ответ на пакет с черным ящиком сервер
M сообщение для водителя оборудование/сервер
AM ответ на сообщение для водителя сервер
I пакет с фотоизображением оборудование
AI ответ на пакет с фотоизображением сервер
US пакет с новой прошивкой сервер

Пакет логина

#L#imei;password\r\n

imei уникальный ID контроллера, IMEI или серийный номер
; разделитель
password пароль для доступа к устройству, если отсутствует, то передаётся NA

В ответ на пакет логина сервер посылает команду AL: “1” -если авторизация объекта на сервер прошла успешно “0” – если сервер отверг подключение “01” – если ошибка проверки пароля.

Пример: #AL#1\r\n или #AL#0\r\n

Сокращённый пакет с данными

#SD#date;time;lat1;lat2;lon1;lon2;speed;course;height;sats\r\n

date дата в формате DDMMYY, в UTC
time время в формате HHMMSS, в UTC
lat1;lat2 широта (5544.6025;N)
lon1;lon2 долгота (03739.6834;E)
speed скорость, целое число, км/ч
course курс, целое число, градусы
height высота, целое число, в метрах
sats количество спутников, целое число

В ответ на сокращённый пакет с данными сервер посылает команду ASD: “-1” – ошибка структуры пакета “0” – некорректное время “1” – пакет успешно зафиксировался “10” – ошибка получения координат “11” – ошибка получения скорости, курса или высоты “12” – ошибка получения количества спутников.

Пример: #ASD#1\r\n #ASD#0\r\n #ASD#10\r\n #ASD#11\r\n #ASD#12\r\n

В ответ на пакет с данными сервер посылает команду AD: “-1” – ошибка структуры пакета “0” – некорректное время “1” – пакет успешно зафиксировался “10” – ошибка получения координат “11” – ошибка получения скорости, курса или высоты “12” – ошибка получения количества спутников или hdop “13” – ошибка получения inputs или outputs “14” – ошибка получения adc “15” – ошибка получения дополнительных параметров.

Пример: #AD#1\r\n #AD#0\r\n #AD#10\r\n #AD#11\r\n … #AD#16\r\n

date дата в формате DDMMYY, в UTC
time время в формате HHMMSS, в UTC
lat1;lat2 широта (5544.6025;N)
lon1;lon2 долгота (03739.6834;E)
speed скорость, целое число, км/ч
course курс, целое число, градусы
height высота, целое число, в метрах
sats количество спутников, целое число
hdop снижение точности, дробное число
inputs цифровые входы, каждый бит числа соответствует одному входу, начиная с младшего, целое число
outputs цифровые выходы, каждый бит числа соответствует одному выходу, начиная с младшего, целое число
adc аналоговые входы, дробные числа, через запятую. Нумерация выхода начинается с единицы. Пример: 14.77,0.02,3.6
ibutton код ключа водителя, строка произвольной длины. В случае отсутствия ключа передаётся NA
params набор дополнительных параметров через запятую. Каждый параметр представляет собой конструкцию NAME:TYPE:VALUE NAME – произвольная строка, длиной не более 15 байт TYPE – тип параметра, 1 – int, 2 – double, 3 – string VALUE – значение в зависимости от типа. Пример: count1:1:564,fuel:2:45.8,hw:3:V4.5

В ответ на пакет с данными сервер посылает команду AD:

Пример: #AD#1\r\n #AD#0\r\n #AD#10\r\n #AD#11\r\n … #AD#16\r\n

Пинговый пакет

#P# \r\n

Служит для поддержания активного TCP соединения с сервером, а так же для проверки работоспособности канала. В ответ на пинговый пакет сервер посылает команду AP:

Пример: #AP#\r\n

Пакет с чёрным ящиком

#B#msg \r\n

Пакет с чёрным ящиком предназначен для передачи несколько сообщений одновременно. “msg” представляет собой несколько пакетов (сокращённых или полных), разделённых между собой символом ‘|’. В ответ на пакет с чёрным ящиком сервер посылает команду AB, где указывается количество зафиксированных сообщений.

Пример: #AB#5\r\n #AB#0\r\n

Сообщение для водителя

#M#msg \r\n

Служит для отправки текстового сообщения водителю. “msg” - непосредственно текст сообщения. Сообщение может посылаться как сервером так и оборудованием. В ответ на сообщение для водителя сервер посылает команду AM:

“1” – сообщение принято

“0” – ошибка принятия сообщения

Пример: #AM#1\r\n #AM#0\r\n

Пакет с фотоизображением

Служит для отправки фотоизображений на сервер Wialon. Всё изображение разбивается на равнозначные блоки, каждый из которых отправляется на сервер с помощью этого пакета. Рекомендуемый размер блока 512 байт. Если сервер не может получить какой-нибудь из блоков изображения -он разрывает соединение, в этом случае рекомендуем уменьшить размер блоков до 256 или 128 байт.

#I#sz;ind;count;date;time;name\r\nBIN

z размер бинарных данных пакета (к примеру, 512 байт)
ind порядковый номер передаваемого блока (нумерация с нуля)
count общее количество передаваемых блоков
date дата в формате DDMMYY, в UTC
time время в формате HHMMSS, в UTC
name имя передаваемого изображения
BIN бинарный блок изображения

В ответ на пакет с фотоизображением сервер посылает команду AI: #AI#ind;0/1\r\n

“1” – если пакет с блоком изображения принят

“0” – если ошибка принятия пакета

#AI#1\r\n – изображение полностью принято и сохранено в Wialon.

Пример: #AI#3;0\r\n #AI#16;1\r\n #AI#1\r\n

Пакет с новой прошивкой

Служит для отправки новой прошивки на контроллер. #US#sz\r\nBIN

sz - размер бинарных данных прошивки

BIN - прошивка в бинарном виде

Входящие данные UDP протокола

Все данные приходят в текстовом формате и представляют собой такую же структуру как и в TCP протоколе с добавлением в начале пакета imei устройства. К примеру, сокращённый пакет с данными будет выглядеть следующим образом: imei#SD#date;time;lat1;lat2;lon1;lon2;speed;course;height;sats\r\n