Список параметров GRF Protocol

Параметры AVL + описание

id свойства в пакетеНазвание свойстваБайтыТипДиапазон значений (мин – макс)МножительЕдиница измеренияОписание
50(0032)статус модема
(AT)
1без знака
(unsigned)
0 – 10 – не отвечает
1 – доступен
51(0033)Готовность SIM-карты
(AT+CPIN?)
1без знака
(unsigned)
0 – 40 – готова
1 – ожидает ввода PIN
2 – ожидает ввода PUK
3 – PIN защита от кражи
4 – PUK зажита от кражи
5 – ERROR 17
6 – ERROR 18
52(0034)GSM-сигнал, уровень
(AT+CSQ)
1без знака
(unsigned)
0 – 50 – нет сигнала
1-5 значение шкалы
53(0035)Регистрация в сети
(AT+CREG?)
1без знака
(unsigned)
0 – 10 – нет регистрации
1 – есть регистрация
54(0036)
55(0037)GPRS статус
(AT+CGATT?)
1без знака
(unsigned)
0 – 10 – не подключен
1 – подключен
56(0038)Используемый GSM-оператор
(AT+COPS?)
4 или 2 ?без знака
(unsigned)
25099 – билайн
4294967295 – из телтоники
Код используемого GSM оператора
60(003C)Напряжение батареи2без знака
(unsigned)
0 – 655350.001ВольтНапряжение
61(003D)Уровень заряда батареи1без знака
(unsigned)
1 – 100%Уровень емкости аккумулятора
62(003E)Статус зарядки1без знака
(unsigned)
0 – 10 – не заряжается
1 – заряжается

id_51 – Готовность SIM-карты (AT+CPIN?).
Значения от модуля:
– READY – не ожидает ввода пароля
– SIM PIN – ожидает ввода PIN-кода SIM-карты
– SIM PUK – ожидает ввода PUK-кода SIM-карты
– PH_SIM PIN – ожидает подключения телефона к SIM-карте (защита от кражи)
– PH_SIM PUK – ожидает ввода PUK SIM-карты (защита от кражи)
– SIM PIN2 – PIN2, например, для редактирования книги FDN, возможен только в том случае, если предыдущая команда была подтверждена с +CME ERROR: 17
– SIM PUK2 – Возможен только в том случае, если предыдущая команда была подтверждена с ошибкой +CME ERROR: 18
Ответ приводим к значениям от 0 до 6:
– READY – 0
– SIM PIN – 1
– SIM PUK – 2
– PH_SIM PIN – 3
– PH_SIM PUK – 4
– SIM PIN2 – 5
– SIM PUK2 – 6

id_52 – GSM-сигнал (AT+CSQ).
Значения от модуля:
– 0 и 99 – нет сигнала
– 1…31 – уровень сигнала
Уровень сигнала приводим к шкале от 1 до 5:
– 1…6 – 1
– 7…12 – 2
– 13…18 – 3
– 19…24 – 4
– 25…31 – 5
и
– 0 или 99 – 0

id_53 – Регистрация в сети (AT+CREG?).
Значения от модуля принимают две переменные вида n,n:
– 0,0 или 1,0 или 1,2 и т.д., есть разные вариации
– 0,1 – есть регистрация
То есть, если не 0,1 – то нет регистрации в сети, если 0,1 – то есть
Ответ приводим к значению 0 или 1:
– 0,1 – 1 (есть регистрация)
– другие варианты – 0 (нет регистрации)

Формула пакета

Используем кодек телтоники – Codec 8 Extended

preamble = 00 00 00 00 – 4 байта (Преамбула — пакет начинается с четырех нулевых байтов.)
data_lenth = ? – 4 байта (Длина поля данных — размер рассчитывается от идентификатора кодека до номера данных 2.). Пример: data_lenth = 00 00 01 c1
id_codec = 8e – 1 байт (Идентификатор кодека — в Codec8 Extended он всегда равен 0x8E.)
num_data_1 = 01 – 1 байт (Номер данных 1 — число, определяющее количество записей в пакете, то есть Данные AVL, но не количество параметров, а именно самих сборок Данные AVL). У нас он будет всегда 01 (пока что).
avl_data = X – x байт (Данные AVL — фактические данные в пакете, то есть параметры которые мы передаём.)
num_data_2 = 01 – 1 байт (Номер данных 2 — число, определяющее количество записей в пакете. Это число должно быть таким же, как «Номер данных 1».)
crc_16 = ? – 4 байта (CRC-16 — рассчитывается от идентификатора кодека до второго номера данных. CRC (циклический избыточный код) — это код обнаружения ошибок, используемый для обнаружения случайных изменений в данных RAW. Для расчета мы используем 
CRC-16/IBM .) Пример: crc_16 = 00 00 41 af

preamble + data_lenth + id_codec + num_data_1 + avl_data + num_data_2 + crc_16
Пример(жирным выделены неизменные переменные, в { } данные avl_data):
00 00 00 00 + 00 00 01 c1 + 8e + 01 + { … } + 01 + 00 00 41 af

Данные AVL

timestamp = ? – 8 байт (Timestamp – разница в миллисекундах между текущим временем и полуночью января 1970 года по Гринвичу (UNIX-время).). Дату и время берем из данных gps строки RMC:
Вид строки: $GPRMC,222819.00,A,5257.27840,N,03600.66493,E,0.039,,211124,,,A*7A
где
gps_date = 211124
gps_time = 222819.00
И приводим через функцию к нужному нам виду: 0000019350d72bb8
priority = 01 – 1 байт (Priority – поле, определяющее приоритет данных AVL. 0 – низкий, 1 – высокий, 2 – паника). Приоритет в телтонике задается в настройках модуля через ПО, для чего он нужен мне не особо понятно, но оставим его и по умолчанию будем указывать 1-высокий. В hex – 01.
GPS Element – ​​информация о местоположении данных AVL (подробнее ниже).

00000000 – Долгота (Longitude)
00000000 – Широта (Latitude)
0000 – Высота (Altitude)
0000 – Угол (Angle)
00 – Спутники (Satellites)
0000 – Скорость (Speed)


IO Element – ​​дополнительная настраиваемая информация с устройства (подробнее ниже).