aboutsummaryrefslogtreecommitdiff
path: root/src/main/proto/OmnicommMessage.proto
blob: a3b5b6138f6653d90fb9d50a2dd60e3c6a75c66e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
syntax = "proto2";

package org.traccar.protobuf;

message OmnicommMessage {

    repeated uint32 mID = 1 [packed=true]; // идентификатор события (возможно несколько событий в одном сообщении.)

    optional group General = 2 { // Основные параметры
        optional uint32 Time = 1;//[4] Время/дата события (в OmnicommTime)
        optional uint32 IDFAS = 2;//[4] Идентификатор бортового оборудования
        optional bytes  IDDrv = 3;//[8] ID iButton (8 байт)
        optional uint32 FLG = 4;//[1] Общие флаги состояния
            /* Битовая маска:
                 0 бит = Положение ключа зажигания
                     0 – зажигание выключено, 
                     1 – зажигание включено.
                 1 бит = Наличие связи GSM	
                     0 – Нет связи,
                     1 – Есть связь.
                 2 бит = Корректность данных GPS	
                     0 – Данные некорректны, 
                     1 – Данные корректны.
                 3 бит = Нахождение в роуминге	
                     0 – В домашней сети, 
                     1 – В роуминге.
                 4 бит = Состояние питания	
                     0 – Внешнее питание, 
                     1 – Резервное питание.
                 5 бит = Тревожная кнопка (текущее состояние кнопки)	
                     0 – Кнопка отжата, 
                     1 – Кнопка нажата.
                 6 бит = Вскрытие устройства	
                     0 – Устройство закрыто, 
                     1 – Устройство открыто.
                 7 бит = Состояние дискретного выхода	
                     0 – Выключен, 
                     1 – Включен.
                 8 бит = Кнопка голосового вызова
                     0 - Кнопка отжата
                     1 - Кнопка нажата
                 9 бит = глушение GPS
                     0 – Выключен, 
                     1 – Включен.                    
                 10 бит = глушение GSM
                     0 – Выключен, 
                     1 – Включен.
                 11 бит = неисправность аккумулятора
                     0 – Нет, 
                     1 – Да.
            */
        optional uint32 Mileage = 5;//[4] Пробег (1LSB = 0.1 метр)
        optional uint32 VImp = 6;//[2] Скорость по датчику (1LSB = 1км/ч)
        optional uint32 TImp = 7;//[2] Обороты по датчику (1LSB = 1об./мин.)
        optional uint32 Uboard = 8;//[4] Напряжение питания (1LSB = 0.1В)
        optional uint32 BatLife =9;//[4] Уровень заряда аккумулятора (1LSB = 1%)
        optional sint32 SumAcc = 10;//[4] Корень суммы квадратов ускорений осей x,y,z (1LSB = 0.01g)
        optional bytes Phone = 11;//[6] Номер вызывающего или вызываемого абонента
        optional sint32 AmtrX = 12;//[4] Ускорение по оси X
        optional sint32 AmtrY = 13;//[4] Ускорение по оси Y
        optional sint32 AmtrZ = 14;//[4] Ускорение по оси Z
		optional bytes TachoCardID = 15;//[16] ID карты тахографа (16 байт)
		optional uint32 AccelStatus = 16;//[1] Статус калибровки акселерометра: 0 - не используется, 1 - калибруется, 2 - откалиброван, 3 - Ошибка определения осей
		optional uint32 HoursKoef = 17;// Моточасы с использование коэффициента
		optional uint32 GsmSignalQuality = 18;// Уровень сигнала GSM, усл.ед.: 0 - нет сигнала, 1 - плохой, 2 - слабый, 3 - удовлетворительный, 4 - хороший, 5 - отличный
		optional uint32 WifiSignalQuality = 19;// Уровень сигнала Wi-Fi, усл.ед? 0 - нет сигнала, 1 - плохой, 2 - слабый, 3 - удовлетворительный, 4 - хороший, 5 - отличный
    }

    optional group Photo = 4 { // Описание блока передачи части изображения
        optional uint32 POSBLK=1;//[4] Позиция текущего блока (в байтах от начала фотографии)
        optional uint32 SZPHOTO=2; //[4] Размер всей фотографии (в байтах)
        optional uint32 SIZEBLK=3;//[4] Размер текущего блока фотографии (в байтах)
        optional bytes IMGDAT=4;//[2048] Буфер фотографии (данные фотографии)
        optional uint32 IDPH=5;//[4] Идентификатор фотографии
        optional uint32 IMGSTAT=6;//[1] Статус изображения, см. Таблицу "Коды состояния фотокамеры".
    }

    optional group NAV = 5 { // Навигация
        required sint32 LAT=1;//[4] Широта (1LSB = 0,0000001гр.)
        required sint32 LON=2;//[4] Долгота (1LSB = 0,0000001гр.)
        required uint32 GPSVel=3;//[2] Скорость по GPS (1LSB = 0.1км/ч)
        required uint32 GPSDir=4;//[2] Направление (1LSB = 1гр.)
        required uint32 GPSNSat=5;//[1] Количество спутников
        required sint32 GPSAlt=6;//[2] Высота над уровнем моря (1LSB = 0.1м)
		optional uint32 GPSTime = 7;//[4] Время/дата события по GPS (в OmnicommTime)
    }

    optional group UniDt = 6 { // Универсальные входы
        optional sint32 UniVal0 = 1;//[4] Данные универсального входа 1
        optional sint32 UniVal1 = 2;//[4] Данные универсального входа 2
        optional sint32 UniVal2 = 3;//[4] Данные универсального входа 3
        optional sint32 UniVal3 = 4;//[4] Данные универсального входа 4
        optional sint32 UniVal4 = 5;//[4] Данные универсального входа 5
        optional sint32 UniVal5 = 6;//[4] Данные универсального входа 6
    }

    optional group CanDt_J1939 = 7 { // Данные шины CAN (протокол J1939)
        optional uint32 SPN70 = 70;//[1] Cостояние парковочного тормоза
                /* Возможные значения
                    00 - Parking brake not set 
                    01 - Parking brake set 
                    10 - Error 
                    11 - Not available
                */
        optional uint32 SPN91 = 91;//[1] Пположение педали акселерометра (0.4%)
				/* Ошибки:
					254 = Error
					255 = Not available
				*/
		optional uint32 SPN96 = 96; // Уровень топлива 1 бак.(0.4 %) Если есть SPN38, то первый бак, если нет, общий уровень
                /* Ошибки:
                    251=Error
                    252= Not available
                */
        
        optional uint32 SPN100 = 100;//[1] Давление масла двигателя (1 LSB=4 kPa)
				/* Ошибки:
					254 = Error
					255 = Not available
				*/				
        optional uint32 SPN110 = 110;//[1] температура ОЖ двигателя. Cмещение -40 (диапазон данных от -40 до 210°C)
				/* Ошибки:
					254 = Error
					255 = Not available
				*/
        optional uint32 SPN174 = 174;//[1] температура топлива. Cмещение -40 (диапазон данных от -40 до 210°C)
				/* Ошибки:
					254=Error
					255= Not available
				*/
        optional uint32 SPN175 = 175;//[2] температура масла двигателя. Cмещение - 273 (диапазон данных от -273 до 1735 deg C)	
        optional uint32 SPN182 = 182;//[4] суточный расход топлива (0.5 L)
				/* Ошибки:
					4 261 412 864 .. 4 278 190 079 =Error
					4 278 190 080 .. 4 294 967 294 = Not available
				*/
        optional uint32 SPN184 = 184;//[2] мгновенная экономичность (1/512 km/L)
				/* Ошибки:
					65 024 .. 65 279 =Error
					65 280 .. 65 535 = Not available
				*/	
        optional uint32 SPN190 = 190;//[2] обороты двигателя (0.125 rpm)
				/* Ошибки:
					65 024 .. 65 279 =Error
					65 280 .. 65 535 = Not available
				*/
        optional uint32 SPN244 = 244;//[4] суточный пробег (0.125 km)
				/* Ошибки:
					4 261 412 864 .. 4 278 190 079 =Error
					4 278 190 080 .. 4 294 967 294 = Not available
				*/
        optional uint32 SPN245 = 245;//[4] общий пробег (0.125 km)
				/* Ошибки:
					4 261 412 864 .. 4 278 190 079 =Error
					4 278 190 080 .. 4 294 967 294 = Not available
				*/
        optional uint32 SPN247 = 247;//[4] общее время работы двигателя (0.05 hr)
				/* Ошибки:
					4 261 412 864 .. 4 278 190 079 =Error
					4 278 190 080 .. 4 294 967 294 = Not available
				*/
        optional uint32 SPN250 = 250;//[4] общий расход топлива за все время (0.5 L)
				/* Ошибки:
					4 261 412 864 .. 4 278 190 079 =Error
					4 278 190 080 .. 4 294 967 294 = Not available
				*/
        optional uint32 SPN521 = 521;//[1] положение педали рабочего тормоза (0.4 %)
				/* Ошибки:
					254=Error
					255= Not available
				*/	
        optional uint32 SPN522 = 522;//[1] положение педали сцепления (0.4 %)
				/* Ошибки:
					254=Error
					255= Not available
				*/	
        optional uint32 SPN527 = 527;//[1] состояние круиз-контроля
				/* Возможные значения:
					0 = Off/Disabled
					1 = Hold
					2 = Accelerate
					3 = Decelerate
					4 = Resume
					5 = Set
					6 = Accelerator Override
					7 = Not available
				*/
        repeated uint32 SPN582 = 582 [packed=true]; /*PGN 65258 */  //[2*8] Нагрузка на ось
        optional uint32 SPN597 = 597;//[1] состояние педали рабочего тормоза
				/* Возможные значения:
					0 = Brake pedal released
					1 = Brake pedal depressed
					2 = Error
					3 = Not Available
				*/
        optional uint32 SPN598 = 598;//[1] состояние педали сцепления
				/* Возможные значения:
					0 = Clutch pedal released
					1 = Clutch pedal depressed
					2 = Error
					3 = Not Available
				*/
        optional uint32 SPN914 = 914;//[2] пробег до следующего ТО. Cмещение -160635 km (5 km)
				/* Ошибки:
					65 024 .. 65 279 =Error
					65 280 .. 65 535 = Not available
				*/
        optional uint32 SPN916 = 916;//[1] время работы двигателя до следующего ТО. Cмещение -32127 hr (1 hr)
				/* Ошибки:
					65 024 .. 65 279 =Error
					65 280 .. 65 535 = Not available
				*/	
        repeated uint32 SPN928 = 928 [packed=true]; /*PGN 65258 */ //[1*8] индекс оси
        optional uint32 SPN1624 = 1624;//[2] мгновенная скорость (1/256 km/h) 
            // (по CAN это SPN 84, номер не менял чтобы конфликтов с предыдущими прошивками не возникло)
				/* Ошибки:
					65 024 .. 65 279 =Error
					65 280 .. 65 535 = Not available
				*/
        optional uint32 SPN1821 = 1821;//[1] состояние дверей
				/* Возможные значения:
					0 = At least 1 door is open
					1 = Closing last door
					2 =  All doors closed
					3..13 = Not defined
					14 = Error
					15 = Not available
				*/
        optional uint32 SPN1856 = 1856;//[1] состояние ремней безопасности
				/* Возможные значения:
					0 = NOT Buckled
					1 = OK - Seat Belt is buckled
					2 = Error - Switch state cannot be determined
					3 = Not Available
				*/	
    }

    optional group LLSDt = 8 { // Топливные датчики LLS/LLS-AF
        optional sint32 TLLS1 = 1; //[1] температура (1LSB = 1гр.C)
        optional uint32 CLLS1 = 2; //[2] уровень
        optional sint32 FLLS1 = 3; //[1] код состояния см. Таблицу "Коды состояния LLS".

        optional sint32 TLLS2 = 4; //[1] температура (1LSB = 1гр.C)
        optional uint32 CLLS2 = 5; //[4] уровень
        optional sint32 FLLS2 = 6; //[1] код состояния см. Таблицу "Коды состояния LLS".

        optional sint32 TLLS3 = 7; //[1] температура (1LSB = 1гр.C)
        optional uint32 CLLS3 = 8; //[4] уровень
        optional sint32 FLLS3 = 9; //[1] код состояния см. Таблицу "Коды состояния LLS".

        optional sint32 TLLS4 = 10; //[1] температура (1LSB = 1гр.C)
        optional uint32 CLLS4 = 11; //[4] уровень
        optional sint32 FLLS4 = 12; //[1] код состояния см. Таблицу "Коды состояния LLS".

        optional sint32 TLLS5 = 13; //[1] температура (1LSB = 1гр.C)
        optional uint32 CLLS5 = 14; //[4] уровень
        optional sint32 FLLS5 = 15; //[1] код состояния см. "Коды состояния LLS".

        optional sint32 TLLS6 = 16; //[1] температура (1LSB = 1гр.C)
        optional uint32 CLLS6 = 17; //[4] уровень
        optional sint32 FLLS6 = 18; //[1] код состояния см. "Коды состояния LLS".

        optional sint32 TLLS7 = 19; //[1] температура (1LSB = 1гр.C)
        optional uint32 CLLS7 = 20; //[4] уровень
        optional sint32 FLLS7 = 21; //[1] код состояния см. "Коды состояния LLS".

        optional sint32 TLLS8 = 22; //[1] температура (1LSB = 1гр.C)
        optional uint32 CLLS8 = 23; //[4] уровень
        optional sint32 FLLS8 = 24; //[1] код состояния см. "Коды состояния LLS".

        repeated uint32 LLSRefKoef= 25 [packed=true]; //[8] набор из восьми поправочных коэффициентов ДУТ (поз. 0 - ДУТ1, поз. 1 - ДУТ2, ...)
    }

    optional group Other = 9 { // прочее оборудование
        optional group OneWire = 1 {
            // Температурные датчики 1-wire Присутствуют только температуры с настроенных датчиков
            optional sint32 OneWire1 = 1; //[1] температура c датчика 1
            optional sint32 OneWire2 = 2; //[1] температура c датчика 2
            optional sint32 OneWire3 = 3; //[1] температура c датчика 3
            optional sint32 OneWire4 = 4; //[1] температура c датчика 4
            optional sint32 OneWire5 = 5; //[1] температура c датчика 5
            optional sint32 OneWire6 = 6; //[1] температура c датчика 6
            optional sint32 OneWire7 = 7; //[1] температура c датчика 7
            optional sint32 OneWire8 = 8; //[1] температура c датчика 8
        }
        optional group Pherip = 2 { // Периферия кладется в архив только при данные с только подключенных и настроенных устройств
            optional uint32 PassengerIn= 1; //[1] Количество вошедших пассажиров
            optional uint32 PassengerOut= 2; //[1] Количество вышедших пассажиров
            optional uint32 DoorMask= 3; //[1] маска дверей датчика пасажиропотока
            optional uint32 DriverStatus= 4; //[1] Статус водителя
            optional bytes TPMS = 5; //[92] Система контроля давления воздуха в шинах, всего возможно 46 датчика. Массив из 46 структур по 2 байта.
			optional bytes iQFreeze = 6; //[512] Система контроля рефрижераторами iQFreeze.json - http://wiki.omnicomm.ru/pages/viewpage.action?pageId=11567726
        }
        optional group ExCAN = 3 { // Расширенные парметры CAN
            repeated uint32 SPNid = 1; //[24] Коды SPN
            repeated uint32 SPNval = 2; //[24] Зачения SPN
            optional uint64 Adr64TEREX = 10;
            optional uint64 Adr65TEREX = 11;
            optional uint64 Adr66TEREX = 12;
            optional uint64 Adr67TEREX = 13;
            repeated uint64 Adr11TEREX = 14; //[10] Коды ошибок
            optional uint64 Adr69TEREX = 15;
		}
        optional group Taho_DDD = 4 { // Описание блока передачи части DDD-файла
            optional uint32 BLKPOS=1;// Позиция текущего блока (в байтах от начала файла)
            optional bytes FILEDATA=2;//[1024] Данные блока
            optional bytes CARDID=3;//[16] Идентификатор карты водителя
            optional uint32 STATUS_DATA=4; // параметр равен 1 если данный блок последний в файле, 2 -  если ошибка чтения данных, 0 – если обычный блок данных
        }
		optional group APC = 5 { // Данные от ДПП IRMA. 
            optional uint32 APCStatus1 = 1; //[1] Статус ДПП IRMA #1: 0 – ок, 1 – «саботаж», 2 – «дефект», 3 – «датчик не отвечает»
            optional uint32 APCStatus2 = 2; //[1] Статус ДПП IRMA #2: 0 – ок, 1 – «саботаж», 2 – «дефект», 3 – «датчик не отвечает»
            optional uint32 APCStatus3 = 3; //[1] Статус ДПП IRMA #3: 0 – ок, 1 – «саботаж», 2 – «дефект», 3 – «датчик не отвечает»
            optional uint32 APCStatus4 = 4; //[1] Статус ДПП IRMA #4: 0 – ок, 1 – «саботаж», 2 – «дефект», 3 – «датчик не отвечает»
            optional uint32 APCNumberIn1 = 5; //[2] Количество вошедших пассажиров подсчитанное на  ДПП IRMA #1
            optional uint32 APCNumberOut1 = 6; //[2] Количество вышедших пассажиров подсчитанное на  ДПП IRMA #1
            optional uint32 APCNumberIn2 = 7; //[2] Количество вошедших пассажиров подсчитанное на  ДПП IRMA #2
            optional uint32 APCNumberOut2 = 8; //[2] Количество вышедших пассажиров подсчитанное на  ДПП IRMA #2
            optional uint32 APCNumberIn3 = 9; //[2] Количество вошедших пассажиров подсчитанное на  ДПП IRMA #3
            optional uint32 APCNumberOut31 = 10; //[2] Количество вышедших пассажиров подсчитанное на  ДПП IRMA #3
            optional uint32 APCNumberIn4 = 11; //[2] Количество вошедших пассажиров подсчитанное на  ДПП IRMA #4
            optional uint32 APCNumberOut4 = 12; //[2] Количество вышедших пассажиров подсчитанное на  ДПП IRMA #4
        }
		optional group MobileEye = 6 { // Данные от MobileEye 
            optional uint32 MobileEyeStatus = 1; //[1] Статус MobileEye (битовая маска событий)
            repeated bytes CAN700 = 2; // Данные с MobileEye адресс кэн 700
            repeated bytes CAN727 = 3; // Данные с MobileEye адресс кэн 727
            repeated bytes CAN760 = 4; // Данные с MobileEye адресс кэн 760
        }
		optional group SafeDriving = 7 { // Данные о безопасном вождении 
            optional uint32 EventMask = 1; //[4] Инициатор посылки события (Битовая маска) 0 – Скорость, 1 – Обороты, 2 – Ускорение, 3 – Боковое ускорение, 4 - Ускорение торможения, 5 - Вертикальное ускорение
            optional uint32 SpeedThreshold = 2; //[4] Порог Скорости, поле присутствует если EventMask/Бит 0 = 1
            optional uint32 RPMThreshold = 3; //[4] Порог Оборотов, поле присутствует если EventMask/Бит 1 = 1
			repeated float AccelDangThs = 4 [packed=true]; //[4]
        }
		optional group GenComm= 8{ // Данные о GenComm генераторе
	            optional uint32 GEN_OILPRESS1 = 1; 
	            optional sint32 GEN_TEMP1 = 2; 
	            optional float GEN_VOLT1 = 3; 
	            optional uint32 GEN_RPM1 = 4; 
	            optional float GEN_UL1_1 = 5; 
	            optional float GEN_UL2_1 = 6; 
	            optional float GEN_UL3_1 = 7; 
	            optional float GEN_IL1_1 = 8; 
	            optional float GEN_IL2_1 = 9; 
	            optional float GEN_IL3_1 = 10; 
	            optional uint32 GEN_STATUS1 = 11; 
	            optional uint32 GEN_HOURS1 = 12; 
				repeated bytes GEN_ALARM1 = 13; //[28]

	            optional uint32 GEN_OILPRESS2 = 14; 
	            optional sint32 GEN_TEMP2 = 15; 
	            optional float GEN_VOLT2 = 16; 
	            optional uint32 GEN_RPM2 = 17; 
	            optional float GEN_UL1_2 = 18; 
	            optional float GEN_UL2_2 = 19; 
	            optional float GEN_UL3_2 = 20; 
	            optional float GEN_IL1_2 = 21; 
	            optional float GEN_IL2_2 = 22; 
	            optional float GEN_IL3_2 = 23; 
	            optional uint32 GEN_STATUS2 = 24; 
	            optional uint32 GEN_HOURS2 = 25; 
				repeated bytes GEN_ALARM2 = 26; //[28]

	            optional uint32 GEN_OILPRESS3 = 27; 
	            optional sint32 GEN_TEMP3 = 28; 
	            optional float GEN_VOLT3 = 29; 
	            optional uint32 GEN_RPM3 = 30; 
	            optional float GEN_UL1_3 = 31; 
	            optional float GEN_UL2_3 = 32; 
	            optional float GEN_UL3_3 = 33; 
	            optional float GEN_IL1_3 = 34; 
	            optional float GEN_IL2_3 = 35; 
	            optional float GEN_IL3_3 = 36; 
	            optional uint32 GEN_STATUS3 = 37; 
	            optional uint32 GEN_HOURS3 = 38; 
				repeated bytes GEN_ALARM3 = 39; //[28]
                optional float GEN_UC = 40; // величина напряжения зарядного генератора 
				optional uint32 GEN_IC = 41; // ток заряда стартерных АКБ 
                optional float GEN_FREQ = 42; // частота выдаваемого напряжения 
				optional float GEN_UL1L2 = 43; // напряжения линейные 
				optional float GEN_UL2L3 = 44; // --
				optional float GEN_UL1L3 = 45; // --
				optional uint32 POW_ACT_L1 = 46; // активная мощность 
				optional uint32 POW_ACT_L2 = 47; // --
				optional uint32 POW_ACT_L3 = 48; // --
				optional uint32 POW_FULL_L1 = 49; // полная мощность
				optional uint32 POW_FULL_L2 = 50; // --
				optional uint32 POW_FULL_L3 = 51; // --
				optional uint32 POW_REACT_L1 = 52; // реактивная мощность 
				optional uint32 POW_REACT_L2 = 53; // --
				optional uint32 POW_REACT_L3 = 54; // --
				optional float POW_KOEF = 55; // коэффициент мощности
				optional uint32 POW_GEN_TOTAL = 56; // общая выработка электроэнергии 
				optional uint32 FUEL_LEVEL = 57; // текущий объём топлива

				optional uint32 SMS_REGS_0 = 60; // состояние регистра состояния 0 для SMS-оповещений (для отладки)
				optional uint32 SMS_REGS_1 = 61; // состояние регистра состояния 1 для SMS-оповещений (для отладки)
				optional uint32 SMS_REGS_2 = 62; // состояние регистра состояния 2 для SMS-оповещений (для отладки)
				optional uint32 SMS_REGS_3 = 63; // состояние регистра состояния 3 для SMS-оповещений (для отладки)
				optional uint32 SMS_REGS_4 = 64; // состояние регистра состояния 4 для SMS-оповещений (для отладки)
        }
		optional group FuelSensorModbus= 9 { // Данные о сторонних датчиках уровня топлива
	            optional float FuelLevel = 1; 
	            optional float MedianLevel = 2; 
	            optional uint32 LevelPercent = 3; 
	            optional float FuelVolume = 4; 
	            optional sint32 FuelTemp = 5; 
	            optional float FuelWeight = 6; 
	            optional float FuelDensity = 7; 
	            optional sint32 VaporTemp = 8; 
	            optional float VaporWeight = 9; 
	            optional float LiquidWeight = 10; 
	            repeated sint32 PointTemp = 11; 
        }
		optional group WeightControl= 10 { // Данные о весовом контроле
	            repeated float AxelWeight = 1; 
	            repeated float AxelLimit = 2; 
	            optional float TotalWeight = 3; 
	            optional float TotalWeightLimit = 4; 
        }
    }
    
    optional group ICONDt = 10 { // данные ICON
        optional bytes VehicleStatus = 1; //[24] строка статуса ТС. Сейчас от ICON передаётся 20 символов+NULL. [Hex2ASCII]
        optional uint32 VehicleStatusID = 2; //[1] ID статуса ТС. [Hex2Dec]
        optional uint32 VehicleStatusGroupID = 3; //[1] ID группы статусов ТС. Резерв. [Hex2Dec]
        optional uint64 MsgID = 4; //[8] UID сообщения
        optional uint32 MsgStatus = 5; //[4] флаг статуса сообщения, см CMDPBF.proto
        optional uint32 StatDate = 6; //[4] Время/дата изменения статуса сообщения (в OmnicommTime)
        optional bytes VehicleStatusPrev = 7; //[24] строка предыдущего статуса ТС. Сейчас от ICON передаётся 20 символов+NULL. [Hex2ASCII]
        optional uint32 VehicleStatusFlags = 8; // флаг активности текущего статуса ТС (0x1 - активен, 0x0 - завершен)
    }
    optional group OBDDt_J1979 = 11 { // Данные шины CAN (протокол J1979)
        // в формулах расчёта значений OBD используются обозначения A, B, C, D
        // uint32 data = [D | C | B | A], где А - младший байт, D - старший байт
        optional uint32 SID_0x01_PID_0x0D = 1;// Скорость ТС = A (km/h) - Vehicle Speed Sensor       
        optional uint32 SID_0x01_PID_0x31 = 2;// Пробег после сброса ошибок = (256 * A + B), (km) - Distance travelled since DTCs cleared
        optional uint32 SID_0x01_PID_0x4E = 3;// Время работы двинателя после сброса ошибок = (A*256)+B (минуты) - Engine Run Time since diagnostic trouble codes cleare
        optional uint32 SID_0x01_PID_0x42 = 4;// Напряжение борта, В = ((A*256) + B)/1000 (В) - Control module voltage 
        optional uint32 SID_0x01_PID_0x0C = 5;// Обороты = (256 * A + B) / 4 (rpm) - Engine RPM
        optional uint32 SID_0x01_PID_0x2F = 6;// Объема топлива = (100 * A / 255) (%) - Fuel Level Input
        optional uint32 SID_0x01_PID_0x5E = 7;// Среднее значение мгновенного расхода = (256 * A + B) *0,05 (L/h) - Engine Fuel Rate
             // Терминал получает несколько значений мгновенного расхода по OBD, рассчитывает и отправляет среднее
        optional uint32 SID_0x01_PID_0x5C = 8;// Температура масла = (A - 40) (°C)- Engine Oil Temperature
        optional uint32 SID_0x01_PID_0x05 = 9;// Температура ОЖ = (A - 40) (°C) - Engine Coolant Temperature
        optional uint32 SID_0x01_PID_0x01 = 10;// Статус неисправности Check Engine - Monitor status since DTCs cleared
				/* Malfunction Indicator Lamp (MIL) Status:
                     Если A/бит 7 = 0, то ошибки нет
                     Если A/бит 7 = 1, то ошибка есть
				*/	
		optional bytes SID_0x09_PID_0x02 = 11;// [18] VIN ТС = ASCII null-terminated string. Идут значащие символы, потом нулевой байт. Если перый байт нулувой, то строка пустая.
		optional uint32 SID_0x01_PID_0x5E_quantity = 12; // Кол-во успешно полученных ответов при расчёте среднего значения мгновенного расхода (optional uint32 SID_0x01_PID_0x5E = 7)
    }
    optional group LOG = 16 {
        repeated string Debug = 1; //[1024] Отладочный лог
		optional uint32 LLSRefNum= 2; // признак наличия подключенных датчиков REF к терминалу – битовая маска. бит 0 соответсвует подключенному 1-ому датчику и т.д.
		repeated uint32 LLSRefLevelBef= 3 [packed=true];
		repeated uint32 LLSRefLevelAfter= 4 [packed=true];
		repeated uint32 LLSRefKoef= 5 [packed=true];
		repeated uint32 LLSRefSens= 6 [packed=true];
		repeated uint32 LLSRefTemp= 7 [packed=true];
    }
}