diff options
-rw-r--r-- | build.gradle | 19 | ||||
-rw-r--r-- | pom.xml | 30 | ||||
-rw-r--r-- | src/main/proto/OmnicommMessage.proto | 464 |
3 files changed, 508 insertions, 5 deletions
diff --git a/build.gradle b/build.gradle index 0842a6a0f..6229a96c3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,21 @@ plugins { id "java" id "checkstyle" + id "com.google.protobuf" version "0.8.10" } repositories { mavenCentral() } +ext { + guiceVersion = "4.2.2" + jettyVersion = "9.4.20.v20190813" + jerseyVersion = "2.29" + jacksonVersion = "2.9.9" // same version as jersey-media-json-jackson dependency + protobufVersion = "3.11.0" +} + sourceCompatibility = "1.8" compileJava.options.encoding = "UTF-8" @@ -15,11 +24,10 @@ checkstyle { checkstyleTest.enabled = false } -ext { - guiceVersion = "4.2.2" - jettyVersion = "9.4.20.v20190813" - jerseyVersion = "2.29" - jacksonVersion = "2.9.9" // same version as jersey-media-json-jackson dependency +protobuf { + protoc { + artifact = "com.google.protobuf:protoc:$protobufVersion" + } } dependencies { @@ -59,6 +67,7 @@ dependencies { implementation "com.fizzed:ch-smpp:6.0.0-netty4-beta-3" implementation "net.java.dev.jna:jna-platform:5.4.0" implementation "com.github.jnr:jnr-posix:3.0.50" + implementation "com.google.protobuf:protobuf-java:$protobufVersion" implementation "javax.xml.bind:jaxb-api:2.3.1" implementation "com.sun.xml.bind:jaxb-core:2.3.0.1" implementation "com.sun.xml.bind:jaxb-impl:2.3.2" @@ -15,6 +15,7 @@ <jetty.version>9.4.20.v20190813</jetty.version> <jersey.version>2.29</jersey.version> <jackson.version>2.9.9</jackson.version> <!-- same version as jersey-media-json-jackson dependency --> + <protobuf.version>3.11.0</protobuf.version> </properties> <dependencies> @@ -211,6 +212,11 @@ <version>3.0.50</version> </dependency> <dependency> + <groupId>com.google.protobuf</groupId> + <artifactId>protobuf-java</artifactId> + <version>${protobuf.version}</version> + </dependency> + <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> @@ -344,6 +350,30 @@ </dependencies> </plugin> <plugin> + <groupId>com.github.os72</groupId> + <artifactId>protoc-jar-maven-plugin</artifactId> + <version>3.8.0</version> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <protocArtifact>com.google.protobuf:protoc:${protobuf.version}</protocArtifact> + <inputDirectories> + <include>src/main/proto</include> + </inputDirectories> + <outputTargets> + <outputTarget> + <type>java</type> + </outputTarget> + </outputTargets> + </configuration> + </execution> + </executions> + </plugin> + <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> diff --git a/src/main/proto/OmnicommMessage.proto b/src/main/proto/OmnicommMessage.proto new file mode 100644 index 000000000..a3b5b6138 --- /dev/null +++ b/src/main/proto/OmnicommMessage.proto @@ -0,0 +1,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]; + } +}
\ No newline at end of file |