404e544301000000000000001300464d2a3e533a383636373935303333333233383634
PACKAGE:
protocol: NTCB
msg_type: *>S
imei: 866795033323864
*>S
Если сервер хочет начать работу с устройством, то нужно оправить ответ.
Если сервер не отправит ответ, то устройсвто примет решение, что подключение не установлено и не будет передавать данные.
4300000000010000000300455e2a3c53
PACKAGE:
protocol: NTCB
msg_type: *<S (ack)
На этом этапе устройство декларирует какие параметры будут передаваться в телеметрии.
404e544301000000000000002a0046742a3e464c4558b01e1efffffe300a08000000020000000020003800200000000000000104000000060000
PACKAGE:
protocol: NTCB
msg_type: *>FLEX
req_protocol: FLEX (176 | 0xb0 | 0b10110000)
req_protocol_ver: 3.0 (30 | 0x1e | 0b00011110)
req_struct_ver: 3.0 (30 | 0x1e | 0b00011110)
bitfield_size: 255 | 0xff | 0b11111111
flex_mask: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 29, 31, 37, 71, 107, 123, 124, 125, 139, 200, 206, 238, 239]
При обработке маски сервер должен:
all_params_length
(далее будет нужно для валидации сообщений).Если сервер не подтвердит маску, то устройсвто примет решение, что подключение не установлено и не будет передавать данные.
404e544300000000010000000900b1a02a3c464c4558b01e1e
PACKAGE:
protocol: NTCB
msg_type: *<FLEX (ack)
conf_protocol: FLEX (176 | 0xb0 | 0b10110000)
conf_protocol_ver: 3.0 (30 | 0x1e | 0b00011110)
conf_struct_ver: 3.0 (30 | 0x1e | 0b00011110)
Один пакет может содержать несколько сообщений. Для расчета полной длины пакета нужно "помнить" суммарную длину параметров all_params_length
, которая была расчитана при подключении устройства.
Пакет A
имеет такую структуру:
~
A
msg_count
messages
crc8
Размер поля messages
вычисляется как msg_count * all_params_length
7e41026e480000a111a7e6eb668023201b01dac77e6600000000000000000000000000000000000000000000120038080000837a0200000038ffedffdefd280401110e013600000016000000030000006f480000c111a8e6eb668023201b01dac77e6600000000000000000000000000000000000000000000120044080000837a020000000b0007000000280401054402360000001600000003000000d2
PACKAGE:
protocol: FLEX_3.0 (30 | 0x1e | 0b00011110)
msg_type: A
msg_count: 2 | 0x02 | 0b00000010
MESSAGE_1:
field_1: msg_number: 18542 (0x0000486e);
field_2: event_code: 4513 (0x11a1);
field_3: msg_time: 2024-09-19 11:53:59 (1726736039 | 0x66ebe6a7);
field_4: status: 128 (0x80 | 0b10000000); test_mode: 0 (0x00); alarm_notif: 0 (0x00); alarm: 0 (0x00); mode: 0 (0x00); evacuation: 0 (0x00); energy_save: 0 (0x00); accel_calib: 1 (0x01);
field_5: modules_st: 35 (0x23 | 0b00100011); gsm_pwr: 1 (0x01); usb_connect: 1 (0x01); hd_navigation: 0 (0x00); sync_clock: 0 (0x00); second_sim: 0 (0x00); gsm_reg: 1 (0x01); gsm_roam: 0 (0x00); engine: 0 (0x00);
field_6: modules_st2: 32 (0x20 | 0b00100000); gsm_jamming: 0 (0x00); gps_jamming: 0 (0x00); coords_averaging: 0 (0x00); accel_err: 0 (0x00); bluetooth_pwr: 1 (0x01); wifi_pwr: 0 (0x00); rtc_int_generator: 0 (0x00);
field_7: gsm: 27 (0x1b);
field_8: nav_recvr_state: 1 (0x01); valid_nav: 0 (0x00); sats: 0 (0x00);
field_9: last_valid_time: 2024-06-28 17:25:30 (1719584730 | 0x667ec7da);
field_10: latitude: 0.0 (0x00000000);
field_11: longitude: 0.0 (0x00000000);
field_12: altitude: 0 (0x00000000);
field_13: speed: 0.0 (00000000);
field_14: course: 0 (0x0000);
field_15: mileage: 0.0 (00000000);
field_19: pwr_ext: 0.018000000000000002 (0x0012);
field_20: pwr_int: 2.104 (0x0838);
field_29: inputs: 0 (0x00 | 0b00000000);
field_31: outputs: 0 (0x00 | 0b00000000);
field_37: engine_hours: 162435 (0x00027a83);
field_71: hdop: 0.0 (0x00); pdop: 0.0 (0x00);
field_107: acc_x: -0.2 (0xff38); acc_y: -0.019 (0xffed); acc_z: -0.546 (0xfdde);
field_123: status2: 40 (0x28 | 0b00101000); chasis_open: 0 (0x00); nav_antenna_st: 0 (0x00); ce_programm_st: 5 (0x05);
field_124: modules_st3: 4 (0x04 | 0b00000100); iridium_st: 0 (0x00); inertial_st: 0 (0x00); second_gnss_used: 1 (0x01);
field_125: connection_st: 1 (0x01 | 0b00000001); conn_type: 1 (0x01); conn_srv1: 0 (0x00); conn_srv2: 0 (0x00); conn_srv3: 0 (0x00); conn_service: 0 (0x00); conn_bluetooth: 0 (0x00);
field_139: accel_st: 17 (0x11 | 0b00010001); accel_st_sh1: 1 (0x01); accel_st_sh2: 0 (0x00); accel_st_sh3: 0 (0x00); accel_st_sh4: 0 (0x00); accel_st_wakeup: 1 (0x01); accel_st_sh5: 0 (0x00);
field_200: time_extension: 0.027 (0x010e);
field_206: diag: 54 (0x00000036 | 0b00000000000000000000000000110110); gsm_err_code: 54 (0x0036); gsm_band_type: 0 (0x00); diag_1_byte: 54 (0x36); diag_2_byte: 0 (0x00); diag_3_byte: 0 (0x00); diag_4_byte: 0 (0x00);
field_238: user_4u_1: 22 (0x00000016); user_4s_1: 22 (0x00000016); user_4f_1: 22.0 (41b00000);
field_239: user_4u_2: 3 (0x00000003); user_4s_2: 3 (0x00000003); user_4f_2: 3.0 (40400000);
MESSAGE_2:
field_1: msg_number: 18543 (0x0000486f);
field_2: event_code: 4545 (0x11c1);
field_3: msg_time: 2024-09-19 11:54:00 (1726736040 | 0x66ebe6a8);
field_4: status: 128 (0x80 | 0b10000000); test_mode: 0 (0x00); alarm_notif: 0 (0x00); alarm: 0 (0x00); mode: 0 (0x00); evacuation: 0 (0x00); energy_save: 0 (0x00); accel_calib: 1 (0x01);
field_5: modules_st: 35 (0x23 | 0b00100011); gsm_pwr: 1 (0x01); usb_connect: 1 (0x01); hd_navigation: 0 (0x00); sync_clock: 0 (0x00); second_sim: 0 (0x00); gsm_reg: 1 (0x01); gsm_roam: 0 (0x00); engine: 0 (0x00);
field_6: modules_st2: 32 (0x20 | 0b00100000); gsm_jamming: 0 (0x00); gps_jamming: 0 (0x00); coords_averaging: 0 (0x00); accel_err: 0 (0x00); bluetooth_pwr: 1 (0x01); wifi_pwr: 0 (0x00); rtc_int_generator: 0 (0x00);
field_7: gsm: 27 (0x1b);
field_8: nav_recvr_state: 1 (0x01); valid_nav: 0 (0x00); sats: 0 (0x00);
field_9: last_valid_time: 2024-06-28 17:25:30 (1719584730 | 0x667ec7da);
field_10: latitude: 0.0 (0x00000000);
field_11: longitude: 0.0 (0x00000000);
field_12: altitude: 0 (0x00000000);
field_13: speed: 0.0 (00000000);
field_14: course: 0 (0x0000);
field_15: mileage: 0.0 (00000000);
field_19: pwr_ext: 0.018000000000000002 (0x0012);
field_20: pwr_int: 2.116 (0x0844);
field_29: inputs: 0 (0x00 | 0b00000000);
field_31: outputs: 0 (0x00 | 0b00000000);
field_37: engine_hours: 162435 (0x00027a83);
field_71: hdop: 0.0 (0x00); pdop: 0.0 (0x00);
field_107: acc_x: 0.011 (0x000b); acc_y: 0.007 (0x0007); acc_z: 0.0 (0x0000);
field_123: status2: 40 (0x28 | 0b00101000); chasis_open: 0 (0x00); nav_antenna_st: 0 (0x00); ce_programm_st: 5 (0x05);
field_124: modules_st3: 4 (0x04 | 0b00000100); iridium_st: 0 (0x00); inertial_st: 0 (0x00); second_gnss_used: 1 (0x01);
field_125: connection_st: 1 (0x01 | 0b00000001); conn_type: 1 (0x01); conn_srv1: 0 (0x00); conn_srv2: 0 (0x00); conn_srv3: 0 (0x00); conn_service: 0 (0x00); conn_bluetooth: 0 (0x00);
field_139: accel_st: 5 (0x05 | 0b00000101); accel_st_sh1: 1 (0x01); accel_st_sh2: 0 (0x00); accel_st_sh3: 1 (0x01); accel_st_sh4: 0 (0x00); accel_st_wakeup: 0 (0x00); accel_st_sh5: 0 (0x00);
field_200: time_extension: 0.058 (0x0244);
field_206: diag: 54 (0x00000036 | 0b00000000000000000000000000110110); gsm_err_code: 54 (0x0036); gsm_band_type: 0 (0x00); diag_1_byte: 54 (0x36); diag_2_byte: 0 (0x00); diag_3_byte: 0 (0x00); diag_4_byte: 0 (0x00);
field_238: user_4u_1: 22 (0x00000016); user_4s_1: 22 (0x00000016); user_4f_1: 22.0 (41b00000);
field_239: user_4u_2: 3 (0x00000003); user_4s_2: 3 (0x00000003); user_4f_2: 3.0 (40400000);
После успешной обработки полученного пакета сервер обязан подтвердить его.
Устройство отправит на сервер новые данные только после получения подтверждения.
Если подтверждение не получено, то устройство будет повторять отправку последних неподтвержденных данных.
7e41028c
PACKAGE:
protocol: FLEX_3.0 (30 | 0x1e | 0b00011110)
msg_type: A (ack)
msg_count: 2 | 0x02 | 0b00000010