404e544301000000000000001300464d2a3e533a383636373935303333333233383634
PACKAGE:
protocol: NTCB
msg_type: *>S
imei: 866795033323864
*>S
If the server wants to start working with the device, it should send a response.
If the server does not respond, the device will assume that the connection was not established and will stop sending data.
404e544300000000010000000300455e2a3c53
PACKAGE:
protocol: NTCB
msg_type: *<S (ack)
At this stage, the device declares which parameters will be transmitted in telemetry.
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]
When processing the mask, the server should:
all_params_length
(this will be needed for message validation later).If the server does not confirm the mask, the device will assume that the connection was not established and will stop sending data.
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)
One packet may contain several messages. To calculate the full length of the packet, you need to "remember" the total length of the parameters all_params_length
, which was calculated when the device connected.
Packet A
has the following structure:
~
A
msg_count
messages
crc8
The size of the messages
field is calculated as 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);
After successfully processing the received packet, the server must acknowledge it.
The device will only send new data to the server after receiving an acknowledgment.
If the acknowledgment is not received, the device will continue to resend the last unacknowledged data.
7e41028c
PACKAGE:
protocol: FLEX_3.0 (30 | 0x1e | 0b00011110)
msg_type: A (ack)
msg_count: 2 | 0x02 | 0b00000010