diff --git a/.gitignore b/.gitignore index b984020..17ca92c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ *build* *\dict -.idea \ No newline at end of file +.idea +deployment_package +tmp +deployer_config.json +deployment.tar.gz diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9ba80b5 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +compress: + tar czf deployment.tar.gz deployment_package diff --git a/cmd/deployer/main.go b/cmd/deployer/main.go new file mode 100644 index 0000000..3faed4c --- /dev/null +++ b/cmd/deployer/main.go @@ -0,0 +1,15 @@ +package main + +import ( + "fyne.io/fyne/v2/app" + "gitea.unprism.ru/KRBL/FemaDeployer/internal/ui" +) + +func main() { + // Создаем Fyne приложение с уникальным ID + myApp := app.NewWithID("ru.unprism.gitea.KRBL.FemaDeployer") + + // Создаем и показываем главное окно + mainWindow := ui.NewAppUI(myApp) + mainWindow.ShowAndRun() +} diff --git a/cmd/installer/defaultSettings.json b/cmd/installer/defaultSettings.json deleted file mode 100644 index 40a32ec..0000000 --- a/cmd/installer/defaultSettings.json +++ /dev/null @@ -1,10985 +0,0 @@ -{ - "SENSORS" : { - "LINKS": { - "*NAME" : { - "NAME" : "Линки" - }, - "TEST": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Тест линк", - "ALARM_LOWERBOUND" : 1, - "LOG_ERROR" : "Линка недоступна", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "EXTRA" : "{\"isBool\":false,\"isHide\":false}", - "IS_ALARM_ENABLED" : false - } - }, - "TRACTION_MOTOR": { - "*NAME" : { - "NAME" : "Тяговый двигатель" - }, - "107": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Разрешение заряда тяговой батареи.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "4156": { - "IS_ENABLED" : true, - "UNIT_NAME" : "A", - "NAME" : "Моментный ток тягового двигателя", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "4158": { - "IS_ENABLED" : true, - "UNIT_NAME" : "A", - "NAME" : "Задание моментного тока от педалей/EBS", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "203": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Минимальная температура ячейки, блок 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "204": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Максимальная температура ячейки, блок 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "205": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "SOC, блок 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "206": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "LIAB_ErrorCode, блок 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "209": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Минимальная температура ячейки, блок 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "210": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Максимальная температура ячейки, блок 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "211": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "SOC, блок 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "212": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "LIAB_ErrorCode, блок 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "215": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Минимальная температура ячейки, блок 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "216": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Максимальная температура ячейки, блок 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "217": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "SOC, блок 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "218": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "LIAB_ErrorCode, блок 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "221": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Минимальная температура ячейки, блок 4", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "222": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Максимальная температура ячейки, блок 4", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "223": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "SOC, блок 4", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "224": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "LIAB_ErrorCode, блок 4", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "227": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Минимальная температура ячейки, блок 5", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "228": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Максимальная температура ячейки, блок 5", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "229": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "SOC, блок 5", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "230": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "LIAB_ErrorCode, блок 5", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "233": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Минимальная температура ячейки, блок 6", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "234": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Максимальная температура ячейки, блок 6", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "235": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "SOC, блок 6", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "236": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "LIAB_ErrorCode, блок 5", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "239": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Минимальная температура ячейки, мастер-плата", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "240": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Максимальная температура ячейки, мастер-плата", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "241": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "SOC, мастер-плата", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "242": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "LIAB_ErrorCode, мастер-плата", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "CONTACT_NETWORK_CURRENT" : { - "*NAME" : { - "NAME" : "Ток контактной сети" - }, - "13173": { - "IS_ENABLED" : true, - "UNIT_NAME" : "A", - "NAME" : "Ток контактной сети", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "13172": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Напряжение контактной сети", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Высоковольтное напряжение тяговой батареи, блок 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "2": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Высоковольтное напряжение тяговой батареи, блок 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "3": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Высоковольтное напряжение тяговой батареи, блок 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "4": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Высоковольтное напряжение тяговой батареи, блок 4", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "5": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Высоковольтное напряжение тяговой батареи, блок 5", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "6": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Высоковольтное напряжение тяговой батареи, блок 6", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "LOW_VOLTAGE_VOLTAGE" : { - "*NAME" : { - "NAME" : "Низковольтное напряжение" - }, - "7": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Низковольтное напряжение", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1000": { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Низковольтное напряжение", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "SPEED_SINARA" : { - "*NAME" : { - "NAME" : "Скорость" - }, - "84": { - "IS_ENABLED" : true, - "UNIT_NAME" : "КМ/Ч", - "NAME" : "Селективный сигнал скорости транспортного средства", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "DOORS_SINARA" : { - "*NAME" : { - "NAME" : "Состояние дверей" - }, - "8": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Открыть/закрыть, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "9": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Разрешение открытия дверей от внешней пассажирской кнопки, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "10": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Разрешение открытия дверей от внутренней пассажирской кнопки, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "179": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Открыть/закрыть, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "180": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Разрешение открытия дверей от внешней пассажирской кнопки, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "181": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Разрешение открытия дверей от внутренней пассажирской кнопки, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "182": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Открыть/закрыть, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "183": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Разрешение открытия дверей от внешней пассажирской кнопки, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "184": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Разрешение открытия дверей от внутренней пассажирской кнопки, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "11": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение двери, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "185": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение водительской створки, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "186": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение двери, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "187": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение водительской створки, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "188": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение двери, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "189": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение водительской створки, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "190": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Аварийное открытие, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - },"191": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Дверь выведена из эксплуатации, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "192": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Работает противозажим, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "193": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружена критическая ошибка, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "12": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружена некритическая ошибка, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "13": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Дверь открылась без сигнала, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "14": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружено препятствие на закрытии двери, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "15": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружено препятствие на открытии двери, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "16": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"открытить дверь\" получен, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "17": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"закрыть дверь\" получен, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "18": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал разрешения для кнопок получен, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "19": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал скорости получен, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "20": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"игнорировать CAN\" получен, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "21": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D1, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "22": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D2, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "23": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D3, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "24": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D4, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "25": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D5, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "26": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D6, дверь 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "27": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Аварийное открытие, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "28": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Дверь выведена из эксплуатации, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "29": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Работает противозажим, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "30": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружена критическая ошибка, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "31": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружена некритическая ошибка, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "32": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Дверь открылась без сигнала, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "33": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружено препятствие на закрытии двери, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "34": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружено препятствие на открытии двери, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "35": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"открытить дверь\" получен, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "36": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"закрыть дверь\" получен, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "37": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал разрешения для кнопок получен, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "38": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал скорости получен, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "39": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"игнорировать CAN\" получен, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "40": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D1, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "41": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D2, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "42": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D3, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "43": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D4, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "44": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D5, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "45": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D6, дверь 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "46": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Аварийное открытие, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "47": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Дверь выведена из эксплуатации, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "48": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Работает противозажим, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "49": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружена критическая ошибка, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "50": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружена некритическая ошибка, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "51": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Дверь открылась без сигнала, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "52": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружено препятствие на закрытии двери, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "53": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Обнаружено препятствие на открытии двери, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "54": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"открытить дверь\" получен, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "55": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"закрыть дверь\" получен, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "56": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал разрешения для кнопок получен, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "57": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал скорости получен, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "58": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал \"игнорировать CAN\" получен, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "59": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D1, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "60": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D2, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "61": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D3, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "62": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D4, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "63": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D5, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "64": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг ожидания установок D6, дверь 3", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "TEMPERATURE" : { - "*NAME" : { - "NAME" : "Температура" - }, - "1002": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Температура кабины", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "85": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Температура улицы", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "90": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Температура салона", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "76": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "DAMP SKV ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "77": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "DT SAL3 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "78": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "DT SAL2 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "79": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "DT SAL1 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "80": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "DT CAB1 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "81": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "DAMP INLET SKK ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "82": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "DAMP OUTLET SKK ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "83": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "SKK ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "86": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "SKK2 EN", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "87": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "SKK1 EN", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "88": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "TRO2 EN", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "89": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "TRO1 EN", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1001": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "SKV ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "92": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "TRO5 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "93": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "TRO4 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "94": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "TRO3 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "95": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "TRO2 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "96": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "TRO1 ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "97": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "DKV ERROR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "98": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "CRIT SKV", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "99": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "CRIT SKK", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "100": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "CRIT TRO", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "101": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "IDK EN", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "PNEUMATIC_ROD_CATCHING_SYSTEM" : { - "*NAME" : { - "NAME" : "ПШУ" - }, - "65": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles signal state", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "66": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles stored position", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "67": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles Lift", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "68": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles Descent", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "69": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles Emergency Descent", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "70": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles HV Power Low", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "71": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles Power On", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "72": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles Light", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "73": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Poles State", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "74": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Left Offset", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "75": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Right Offset", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "DRIVER_CONTROLS" : { - "*NAME" : { - "NAME" : "Органы управления водителя" - }, - "102": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение IGN ключа в замке зажигания.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "103": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Аварийный выключатель.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "104": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим питания бортсети IGN", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "105": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим аварийной остановки.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "106": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения хода.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "108": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения гидростанции.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "109": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Низкий уровень жидкости гидростанции.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "110": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим отключения звуковой сигнализации.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "111": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение ACC ключа в замке зажигания.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "112": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим питания бортсети ACC.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "113": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим отключения питания бортсети.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "114": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Датчик ремня безопасности.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "115": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Датчик сидения водителя.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "116": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Звуковой сигнал.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "117": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим эвакуации.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "118": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Флаг аварийного отключения питания.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "119": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Датчик стояночного тормоза.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "120": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "АРСМАШ. Перегрев компрессора.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "121": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "АРСМАШ. Датчик засорения фильтра компрессора.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "122": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "АРСМАШ. Датчик уровня масла компрессора.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "123": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Включение питания компрессора.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "124": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Электростояночный. Удержание машины функцией Autohold.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "125": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Опция электростояночного тормоза.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "126": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Подъем солнцезащитной шторки.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "127": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Опускание солнцезащитной шторки.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "128": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Клапан регулировки рулевой колонки.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "129": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "АРСМАШ. Требование включения компрессора по давлению.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "130": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Маршрутоуказатель.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "131": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "АРСМАШ. Датчик компрессора нижнего давления.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "132": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "АРСМАШ. Датчик компрессора верхнего давления.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "133": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель USB розеток салона.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "134": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения остановочного тормоза.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "135": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Состояние открытых дверей.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "136": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Датчик усталости водителя.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "137": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал объявления остановок.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "138": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим авто книллинга.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "139": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Скорость т.с.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "140": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель разрешения заряда тягвой батареи", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "141": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель габаритных огней.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "142": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель ближнего света.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "143": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель дальнего света.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "144": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Кнопка дальнего света", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "145": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель передних противотуманных фар.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "146": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель задних противотуманных фонарей.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "147": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим габаритных огней.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "148": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим ближнего света.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "149": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим дальнего света.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "150": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим ДХО.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "151": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения передних противотуманных фар.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "152": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения задних противотуманных фонарей.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "153": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения фонарей стоп. Левый", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "154": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения фонарей стоп. Правый", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "155": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения фонарей заднего хода.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "156": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель поворота влево.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "157": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель поворота вправо.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "158": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель аварийной сигнализации.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "159": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим поворота влево.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "160": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим поворота вправо.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "161": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал включения левого указателя поворотов", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "162": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Сигнал включения правого указателя поворотов.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "163": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения освещения водителя.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "164": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения освещения салона 1.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "165": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим включения освещения салона 2 (аварийный).", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "166": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим стеклоочистителя медленно", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "167": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим стеклоочистителя быстро", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "168": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим стеклоочистителя прерывистый / авто", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "169": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим стеклоомывателя", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "170": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Установленная длительность паузы стеклоочистителя.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "171": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Требование включения света от датчика света", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "172": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим обогрева зеркал.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "173": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим обогрева стекол.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "174": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Режим подогрева дверных площадок", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "525": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Положение реверсора", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "91": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "Угол отклонения ходовой педали", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "521": { - "IS_ENABLED" : true, - "UNIT_NAME" : "%", - "NAME" : "Brake Pedal Position", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "175": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Требование остановочного тормоза", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "176": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель Hill Holder", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "177": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель ABS", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "178": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выключатель ASR", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1750": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Command signal to activate a level of the rear axle programmed", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1751": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Command signal to activate a level of the front axle programmed", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1747": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Command signal to select the kneeling functionality", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1748": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Command signal to activate the kneeling functionality on the right", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1749": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Command signal to activate the kneeling functionality on the left", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "7896": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Выбранный режим движения", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "LEAKAGE_CURRENT" : { - "*NAME" : { - "NAME" : "Ток утечки" - }, - "194": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Результат измерений тока утечки", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "195": { - "IS_ENABLED" : true, - "UNIT_NAME" : "mA", - "NAME" : "Ток утечки", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "196": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Результат измерений сопротивления основной изоляции", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "197": { - "IS_ENABLED" : true, - "UNIT_NAME" : "kOhm", - "NAME" : "Сопротивление основной изоляции", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "198": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Номер текущего канала измерений второй ступени изоляции", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - },"199": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Результат измерений сопротивления второй ступени изоляции", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "200": { - "IS_ENABLED" : true, - "UNIT_NAME" : "kOhm", - "NAME" : "Сопротивление второй ступени изоляции текущего канала", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "BRAKE_ERRORS" : { - "*NAME" : { - "NAME" : "Ошибки тормозной системы" - }, - "1439": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Красный индикатор неисправности системы EBS", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - }, - "1438": { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Желтый индикатор неисправности системы ABS/EBS", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false - } - }, - "SINARA" : { - "*NAME" : { - "NAME" : "Синара" - } - }, - "CONTROLLERS" : { - "*NAME" : { - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : false, - "UNIT_NAME" : "", - "IS_ENABLED" : false, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 0, - "NAME" : "Контроллер", - "ALARM_LOWERBOUND" : 0 - }, - "IsConnectPU008" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Наличие связи с ПУ008", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_LOWERBOUND" : 1, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания ПУ-008", - "LOG_MANUAL" : "Отключить и включить автомат цепи ПУ-008, в случае сохранения неисправности составить заявку на ремонт", - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true - }, - "IsConnectBtvc03" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания БТВЦ-03", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Отключить и включить автомат цепи БСПЦ-03, в случае сохранения неисправности составить заявку на ремонт", - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Наличие связи с БТВЦ-03" - }, - "ControllerPosition" : { - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "ALARM_LOWERBOUND" : 1, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Позиция контроллера", - "IS_ENABLED" : true, - "UNIT_NAME" : "" - }, - "IsConnectBsptM1" : { - "ALARM_LOWERBOUND" : 1, - "NAME" : "Наличие связи с БСПТ-М1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Отключить и включить автомат цепи БСПТ-М1, в случае сохранения неисправности составить заявку на ремонт", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания БСПТ-М1" - } - }, - "TractionConverter" : { - "IsConnectBtvc" : { - "NAME" : "Наличие связи с блоком БТВЦ", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 1, - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Отсутствие связи с БТВЦ", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0 - }, - "ErrorBtvc" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Срабатывание одной из защит БТВЦ-03", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "При однократном или редком (1 раз в час) Проявлении, сбросить защиту виртуальной кнопкой «сброс защиты». В случае частого появления, отключить АВДУ и питание 24В неисправного привода и следовать в парк", - "ALARM_LOWERBOUND" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Ошибки в тяговом преобразователе БТВЦ-03" - }, - "CurrentBspt" : { - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Превышено максимально допустимое значение входного тока БСПТ-М1", - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации", - "ALARM_UPPERBOUND" : 250, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Входной ток БСПТ-М1", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_LOWERBOUND" : -250 - }, - "VoltageBspt" : { - "ALARM_LOWERBOUND" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Входное напряжение БСПТ-М1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "ALARM_UPPERBOUND" : 850, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Превышение входного напряжения БСПТ-М1", - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации" - }, - "IsConnectBspt" : { - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Отсутствие связи с БСПТ", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "ALARM_LOWERBOUND" : 1, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Наличие связи с блоком БСПТ", - "UNIT_NAME" : "", - "IS_ENABLED" : true - }, - "VoltageBtvc" : { - "ALARM_LOWERBOUND" : 0, - "NAME" : "Входное напряжение БТВЦ-03", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 850, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Превышение входного напряжения БТВЦ-03" - }, - "CurrentBtvc" : { - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 250, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Превышено максимально допустимое значение входного тока БТВЦ-03", - "ALARM_LOWERBOUND" : -250, - "NAME" : "Входной ток БТВЦ-03", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "IS_ENABLED" : true, - "UNIT_NAME" : "" - }, - "ErrorBspt" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Срабатывание одной из защит БСПТ-М1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "При однократном или редком (1 раз в час) Проявлении, сбросить защиту виртуальной кнопкой «сброс защиты». В случае частого появления, отключить АВДУ и питание 24В неисправного привода и следовать в парк", - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Ошибки в тяговом преобразователе БСПТ-М1" - }, - "*NAME" : { - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "IS_ENABLED" : false, - "UNIT_NAME" : "", - "NAME" : "Тяговый преобразователь", - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "ALARM_LOWERBOUND" : 0 - } - }, - "POSITIONDOORS" : { - "IsConnectDoor2" : { - "LOG_MANUAL" : "Отключить и включить автомат цепи соответствующего блока, в случае сохранения неисправности отставить вагон.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Отсутствие связи с блоком Дверь 2", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "NAME" : "Наличие связи с блоком двери 2", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 1 - }, - "MotorFailureD2" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Отказ мотора двери 2", - "ALARM_LOWERBOUND" : 0, - "LOG_ERROR" : "Engine failure door number 2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true - }, - "IsConnectDoor1" : { - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Отсутствие связи с блоком Дверь 1", - "LOG_MANUAL" : "Отключить и включить автомат цепи соответствующего блока, в случае сохранения неисправности отставить вагон.", - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Наличие связи с блоком двери 1", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_LOWERBOUND" : 1 - }, - "*NAME" : { - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : false, - "NAME" : "Позиция дверей", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 0 - }, - "MalfunctionOfSashD3" : { - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Malfunctions of the sensors for the position of the flaps of door number 3", - "LOG_MANUAL" : "", - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Неисправности датчиков положения створок двери 3", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_LOWERBOUND" : 0 - }, - "MotorFailureD3" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Engine failure door number 3", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Отказ мотора двери 3" - }, - "MalfunctionOfSashD1" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Неисправности датчиков положения створок двери 1", - "ALARM_LOWERBOUND" : 0, - "LOG_ERROR" : "Malfunctions of the sensors for the position of the flaps of door number 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true - }, - "LockingFailureD1" : { - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Failure of the door locking device number 1", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "NAME" : "Отказ устройства запираний двери 1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 0 - }, - "IsConnectDoor3" : { - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "Отключить и включить автомат цепи соответствующего блока, в случае сохранения неисправности отставить вагон.", - "LOG_ERROR" : "Отсутствие связи с блоком Дверь 3", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "ALARM_LOWERBOUND" : 1, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Наличие связи с блоком двери 3", - "IS_ENABLED" : true, - "UNIT_NAME" : "" - }, - "MotorFailureD1" : { - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Отказ мотора двери 1", - "ALARM_LOWERBOUND" : 0, - "LOG_ERROR" : "Engine failure door number 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true - }, - "LockingFailureD3" : { - "ALARM_LOWERBOUND" : 0, - "NAME" : "Отказ устройства запираний двери 3", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Failure of the door locking device number 3" - }, - "LockingFailureD2" : { - "LOG_MANUAL" : "", - "LOG_ERROR" : "Failure of the door locking device number 2", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Отказ устройства запираний двери 2", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 0 - }, - "IsConnectDoor4" : { - "ALARM_LOWERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Наличие связи с блоком двери 4", - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "Отключить и включить автомат цепи соответствующего блока, в случае сохранения неисправности отставить вагон.", - "LOG_ERROR" : "Отсутствие связи с блоком Дверь 4", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "" - }, - "LockingFailureD4" : { - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Отказ устройства запираний двери 4", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 0, - "LOG_MANUAL" : "", - "LOG_ERROR" : "Failure of the door locking device number 4", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0 - }, - "MalfunctionOfSashD4" : { - "ALARM_LOWERBOUND" : 0, - "NAME" : "Неисправности датчиков положения створок двери 4", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Malfunctions of the sensors for the position of the flaps of door number 4" - }, - "MalfunctionOfSashD2" : { - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Неисправности датчиков положения створок двери 2", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Malfunctions of the sensors for the position of the flaps of door number 2", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "" - }, - "MotorFailureD4" : { - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Engine failure door number 4", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Отказ мотора двери 4", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10 - } - }, - "NIITM" : { - "IsConnectNiiTm" : { - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Отсутствие связи с НИИ ТМ", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Наличие связи с блоком НИИ ТМ", - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 1 - }, - "*NAME" : { - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "ALARM_LOWERBOUND" : 0, - "NAME" : "НИИ ТМ", - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : false, - "UNIT_NAME" : "" - }, - "SystemError" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Ошибки в работе оборудования", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "ALARM_LOWERBOUND" : 0, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Ошибка выявленна алгоритмами самодиагностики оборудования", - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true - } - }, - "PANTOGRAF" : { - "SwitcherUp" : { - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Концевой выключатель на подъем", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : -1, - "LOG_MANUAL" : "Необходимо проверить фактическое положение токоприёмника и произвести поднятие/опускание вручную и составить заявку на ремонт", - "LOG_ERROR" : "Неисправен концевой выключатель на подъем пантографа", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 60 - }, - "OperationUp" : { - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 60, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "ALARM_LOWERBOUND" : -1, - "NAME" : "Команда на включение подъёма", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "IS_ENABLED" : true, - "UNIT_NAME" : "" - }, - "*NAME" : { - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "UNIT_NAME" : "", - "IS_ENABLED" : false, - "NAME" : "Пантограф", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 0, - "ALARM_LOWERBOUND" : 0 - }, - "SwitcherDown" : { - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Концевой выключатель на опускание", - "ALARM_LOWERBOUND" : -1, - "LOG_ERROR" : "Неисправен концевой выключатель на подъем пантографа", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Необходимо проверить фактическое положение токоприёмника и произвести поднятие/опускание вручную и составить заявку на ремонт", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 60, - "IS_ALARM_ENABLED" : false - }, - "Pvs04" : { - "LOG_ERROR" : "Нет связи с пультом ПВС-04", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Отключить и включить автомат цепи ПУ008, в случае сохранения неисправности составить заявку на ремонт", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Наличие связи с ПВС-04 ", - "ALARM_LOWERBOUND" : 1 - }, - "OperationDown" : { - "ALARM_LOWERBOUND" : -1, - "NAME" : "Команда на включение опускание", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 60, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "" - } - }, - "POSITIONBRAKE" : { - "BrakeOnBspt" : { - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Механический тормоз включён БСПТ-М1", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "" - }, - "CorrectBrakePos4" : { - "LOG_MANUAL" : "Необходимо отключить и включить автомат цепи тормоза, в случае сохранения неисправности отставить вагон.", - "LOG_ERROR" : "Неправильное положение тормоза 4", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Правильное положение тормоза 4", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 1 - }, - "CorrectBrakePos2" : { - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Неправильное положение тормоза 2", - "LOG_MANUAL" : "Необходимо отключить и включить автомат цепи тормоза, в случае сохранения неисправности отставить вагон.", - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Правильное положение тормоза 2", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10 - }, - "CorrectBrakePos3" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Неправильное положение тормоза 3", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Необходимо отключить и включить автомат цепи тормоза, в случае сохранения неисправности отставить вагон.", - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Правильное положение тормоза 3" - }, - "IsConnectBrake1" : { - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Наличие связи с блоком тормоза 1", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Отсутствие связи с блоком Тормоз 1", - "LOG_MANUAL" : "Необходимо отключить и включить автомат цепи тормоза, в случае сохранения неисправности отставить вагон." - }, - "IsConnectBrake4" : { - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "Необходимо отключить и включить автомат цепи тормоза, в случае сохранения неисправности отставить вагон.", - "LOG_ERROR" : "Отсутствие связи с блоком Тормоз 4", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "ALARM_LOWERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Наличие связи с блоком тормоза 4", - "IS_ENABLED" : true, - "UNIT_NAME" : "" - }, - "*NAME" : { - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : false, - "NAME" : "Тормоз", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 0 - }, - "IsConnectBrake3" : { - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Наличие связи с блоком тормоза 3", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Отсутствие связи с блоком Тормоз 3", - "LOG_MANUAL" : "Необходимо отключить и включить автомат цепи тормоза, в случае сохранения неисправности отставить вагон." - }, - "IsConnectBrake2" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Наличие связи с блоком тормоза 2", - "ALARM_LOWERBOUND" : 1, - "LOG_ERROR" : "Отсутствие связи с блоком Тормоз 2", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Необходимо отключить и включить автомат цепи тормоза, в случае сохранения неисправности отставить вагон.", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true - }, - "CorrectBrakePos1" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Неправильное положение тормоза 1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Необходимо отключить и включить автомат цепи тормоза, в случае сохранения неисправности отставить вагон.", - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Правильное положение тормоза 1" - }, - "BrakeOnBtvc" : { - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Механический тормоз включён БТВЦ-03", - "ALARM_LOWERBOUND" : 1 - } - }, - "BRAKE" : { - "IsConnectBsptM1" : { - "LOG_MANUAL" : "Отключить и включить автомат цепи БСПТ-М1, в случае сохранения неисправности составить заявку на ремонт", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Обрыв жгута проводов шины CAN или отсутствие сетевого источника питания BSPT-M1", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "NAME" : "Наличие связи с БСПТ-М1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 1 - }, - "IsConnectPU008" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Обрыв жгута проводов шины CAN или отсутствие сетевого источника питания PU-008", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Отключить и включить автомат цепи ПУ-008, в случае сохранения неисправности составить заявку на ремонт", - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Наличие связи с ПУ008" - }, - "SignOfBrakeBtvc" : { - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "ALARM_LOWERBOUND" : 1, - "NAME" : "Признак тормоза от БТВЦ-03", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "UNIT_NAME" : "", - "IS_ENABLED" : true - }, - "*NAME" : { - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Признак тормоза", - "UNIT_NAME" : "", - "IS_ENABLED" : false, - "ALARM_LOWERBOUND" : 0 - }, - "BtvcInOrder" : { - "NAME" : "Исправность платы управления БТВЦ-03", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 1, - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Неисправность платы управления BTVC-03", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0 - }, - "SignOfBrakeBspt" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Признак тормоза от БСПТ-М1" - }, - "BsptInOrder" : { - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации", - "LOG_ERROR" : "Неисправность платы управления BSPT-M1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "ALARM_LOWERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Исправность платы управления БСПТ-М1", - "IS_ENABLED" : true, - "UNIT_NAME" : "" - }, - "SignOfBrakeDriver" : { - "ALARM_LOWERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Признак тормоза от контроллера водителя", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ] - }, - "IsConnectBtvc03" : { - "NAME" : "Наличие связи с БТВЦ-03", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 1, - "LOG_MANUAL" : "Отключить и включить автомат цепи БСПЦ-03, в случае сохранения неисправности составить заявку на ремонт", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Обрыв жгута проводов шины CAN или отсутствие сетевого источника питания BTVC-03", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0 - } - }, - "MOVE" : { - "BtvcInOrder" : { - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Исправность платы управления БТВЦ-03", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Неисправность платы управления BTVC-03", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации" - }, - "SignOfaLoweredRamp" : { - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Признак, что опущена аппарель", - "ALARM_LOWERBOUND" : 1 - }, - "SignOfaReverseBack" : { - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Признак реверс назад", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "" - }, - "BsptVoltageCN" : { - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Признак наличия напряжения КС БСПТ-М1", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "" - }, - "BsptInOrder" : { - "LOG_ERROR" : "Неисправность платы управления BSPT-M1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Исправность платы управления БСПТ-М1", - "ALARM_LOWERBOUND" : 1 - }, - "SignOfMoveDriver" : { - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Признак хода от контроллера водителя", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0 - }, - "IsConnectBtvc03" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Наличие связи с БТВЦ-03", - "ALARM_LOWERBOUND" : 1, - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания BTVC-03", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Отключить и включить автомат цепи БСПЦ-03, в случае сохранения неисправ-ности составить заяв-ку на ремонт", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true - }, - "BtvcVoltageCN" : { - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Признак наличия напряжения КС БТВЦ-03", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10 - }, - "SignOfMoveBtvc" : { - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Признак хода от БТВЦ-03", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "" - }, - "IsConnectBsptM1" : { - "NAME" : "Наличие связи с БСПТ-М1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 1, - "LOG_MANUAL" : "Отключить и включить автомат цепи БСПТ-М1, в случае сохранения неисправности составить заявку на ремонт", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания BSPT-M1", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0 - }, - "SignOfaReverseForward" : { - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "ALARM_LOWERBOUND" : 1, - "NAME" : "Признак реверс вперёд", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "" - }, - "SignOfMoveBspt" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Признак хода от БСПТ-М1" - }, - "IsConnectPU008" : { - "LOG_MANUAL" : "Отключить и включить автомат цепи ПУ-008, в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания PU-008", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Наличие связи с ПУ008", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 1 - }, - "SignOfBlockingMove" : { - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Блокировка хода", - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 1, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1 - }, - "*NAME" : { - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : false, - "UNIT_NAME" : "", - "NAME" : "Признак хода", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 0 - } - }, - "MEDIA" : { - "*NAME" : { - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : false, - "UNIT_NAME" : "", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 0, - "NAME" : "Медиацентр", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "" - }, - "GPS_LONG" : { - "ALARM_LOWERBOUND" : 2, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Координата долготы", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "ALARM_UPPERBOUND" : 9, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Данных о долготе нахождения транспортного средства нет.", - "LOG_MANUAL" : "" - }, - "GPS_SPEED" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 9, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "Данные о скорости автомобиля по GPS отсутствуют.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 2, - "UNIT_NAME" : "км/ч", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Скорость ТС по GPS" - }, - "IS_CONNECT" : { - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Работа медиакомплекса", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Отсутствие связи с Медиакомплексом.", - "LOG_MANUAL" : "" - }, - "CONTENT" : { - "LOG_MANUAL" : "", - "LOG_ERROR" : "В медиа-комплексе нет контента.", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Занятая память медиаданными", - "UNIT_NAME" : "мб", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 0 - }, - "ROUTE_INFO" : { - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 9, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "ALARM_LOWERBOUND" : 2, - "NAME" : "Маршрут", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true - }, - "STORAGE" : { - "ALARM_LOWERBOUND" : 0, - "NAME" : "Флаг ошибки чтения плейлиста.", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Ошибка считывания данных с карты памяти." - }, - "GPS_LAT" : { - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 9, - "LOG_MANUAL" : "", - "LOG_ERROR" : "Данных о широте нахождения транспортного средства нет.", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "ALARM_LOWERBOUND" : 2, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Координата широты", - "UNIT_NAME" : "", - "IS_ENABLED" : true - } - }, - "ACB" : { - "*NAME" : { - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 0, - "NAME" : "АКБ", - "IS_ENABLED" : false, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 0, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0 - }, - "VoltageOfACB1" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "NAME" : "Напряжение АКб 1 вагон", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "ALARM_LOWERBOUND" : 21, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Недопустимое напряжение батареи", - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон от эксплуатации", - "ALARM_UPPERBOUND" : 32, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true - }, - "ErrorLkBkv" : { - "ALARM_LOWERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Флаг ошибки ЛК БКВ", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "" - }, - "CurrentOfACB1" : { - "LOG_ERROR" : "Избыточный ток батареи", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон от эксплуатации", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 250, - "EXTRA" : "{\"isBool\":false,\"isHide\":false}", - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "А", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Ток АКБ 1 вагон", - "ALARM_LOWERBOUND" : -250 - }, - "ChargeOfACB1" : { - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Ошибка ППН (преобразователь 550-24)", - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности составить заявку на ремонт", - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "EXTRA" : "{\"isBool\":false,\"isHide\":false}", - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Ошибка ППН (преобразователь 550-24)", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "ALARM_LOWERBOUND" : 0 - } - }, - "BTAB" : { - "VoltageOfACB1U1" : { - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "В", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Вагон 1 напряжение U1", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 250, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Недопустимое напряжение тяговой АКБ", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон" - }, - "IsConnect" : { - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания БТАБ", - "LOG_MANUAL" : "Отключить и включить автомат цепи БТАБ, в случае сохранения неисправности составить заявку на ремонт", - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Наличие связи с блоком ", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_LOWERBOUND" : 1 - }, - "VoltageOfACB1U5" : { - "LOG_ERROR" : "Недопустимое напряжение тяговой АКБ", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 250, - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "В", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Вагон 1 напряжение U5", - "ALARM_LOWERBOUND" : 0 - }, - "VoltageOfACB1U3" : { - "LOG_ERROR" : "Недопустимое напряжение тяговой АКБ", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 250, - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "В", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Вагон 1 напряжение U3", - "ALARM_LOWERBOUND" : 0 - }, - "VoltageOfACB1U6" : { - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 250, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Недопустимое напряжение тяговой АКБ", - "ALARM_LOWERBOUND" : 0, - "NAME" : "Вагон 1 напряжение U6", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "UNIT_NAME" : "В", - "IS_ENABLED" : true - }, - "*NAME" : { - "IS_ENABLED" : false, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Блок тяговых аккумуляторных батарей", - "ALARM_LOWERBOUND" : 0, - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : false - }, - "VoltageOfACB1U4" : { - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Недопустимое напряжение тяговой АКБ", - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон", - "ALARM_UPPERBOUND" : 250, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "В", - "IS_ENABLED" : true, - "NAME" : "Вагон 1 напряжение U4", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_LOWERBOUND" : 0 - }, - "CurrentOfACB1" : { - "ALARM_LOWERBOUND" : -250, - "NAME" : "Вагон 1 Ток АКБ", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "IS_ENABLED" : true, - "UNIT_NAME" : "А", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 250, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Превышение тока тяговой АКБ" - }, - "VoltageOfACB1U2" : { - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 250, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Отключить и включить высоковольтный автомат преобразователя напряжения, в случае сохранения неисправности отставить вагон", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Недопустимое напряжение тяговой АКБ", - "ALARM_LOWERBOUND" : 0, - "NAME" : "Вагон 1 напряжение U2", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "UNIT_NAME" : "В", - "IS_ENABLED" : true - } - }, - "MILEAGE" : { - "VehicleMileage1" : { - "ALARM_LOWERBOUND" : 2, - "IS_ENABLED" : true, - "UNIT_NAME" : "км", - "NAME" : "Пробег БСПТ 1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "ALARM_UPPERBOUND" : 9, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "" - }, - "*NAME" : { - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "ALARM_LOWERBOUND" : 0, - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Пробег", - "UNIT_NAME" : "", - "IS_ENABLED" : false - }, - "VehicleMileage2" : { - "UNIT_NAME" : "км", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Пробег БСПТ 2", - "ALARM_LOWERBOUND" : 2, - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 9, - "IS_ALARM_ENABLED" : false - } - }, - "E-PKV" : { - "IsConnectEpkv" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Отсутствие связи с ЛК-ВИЗ", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Отключить и включить автомат цепи ЛК-ВИЗ, в случае сохранения неисправности отставить вагон.", - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Наличие связи с блоком ЛК-ВИЗ" - } - }, - "BZK" : { - "IncorrectStatusCabinHeating2" : { - "NAME" : "Неправильное состояние обогрева кабины (2 ступень)", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 0, - "LOG_MANUAL" : "Необходимо включить/выключить соответствующий контактор или группу контакторов на ЛК ВИЗ. При сохранении неправильного состояния отставить вагон.", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Неправильное состояние высоковольтных контакторов: Cabin heating (2 stage)", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0 - }, - "IncorrectStatusCabinHeating1" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Неправильное состояние высоковольтных контакторов: Cabin heating (1 stage)", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Необходимо включить/выключить соответствующий контактор или группу контакторов на ЛК ВИЗ. При сохранении неправильного состояния отставить вагон.", - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Неправильное состояние обогрева кабины (1 ступень)" - }, - "IsConnectBzk" : { - "LOG_MANUAL" : "Отключить и включить автомат цепи БКЗ, в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания БКЗ", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Наличие связи с блоком", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 1 - }, - "IncorrectStatusAVDU2" : { - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Неправильное состояние АВДУ2", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_LOWERBOUND" : 0, - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Неправильное состояние AVDU2", - "LOG_MANUAL" : "Необходимо включить/выключить соответствующий АВДУ на ЛК ВИЗ. При сохранении неправильного состояния отставить вагон", - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true - }, - "IncorrectStatusAVDU1" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Неправильное состояние АВДУ-1", - "ALARM_LOWERBOUND" : 0, - "LOG_ERROR" : "Неправильное состояние AVDU1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Необходимо включить/выключить соответствующий АВДУ на ЛК ВИЗ. При сохранении неправильного состояния отставить вагон", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "EXTRA" : "{\"isBool\":false,\"isHide\":false}", - "IS_ALARM_ENABLED" : true - }, - "*NAME" : { - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "ALARM_LOWERBOUND" : 0, - "NAME" : "БЗК", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 0, - "IS_ENABLED" : false, - "UNIT_NAME" : "" - }, - "IncorrectStatusInteriorHeating2" : { - "LOG_MANUAL" : "Необходимо включить/выключить соответствующий контактор или группу контакторов на ЛК ВИЗ. При сохранении неправильного состояния отставить вагон.", - "LOG_ERROR" : "Неправильное состояние высоковольтных контакторов: Interior heating (2 stage)", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Неправильное состояние обогрева салона (2 ступень)", - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 0 - }, - "IncorrectStatusInteriorHeating1" : { - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Неправильное состояние обогрева салона (1 ступень)", - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 0, - "LOG_MANUAL" : "Необходимо включить/выключить соответствующий контактор или группу контакторов на ЛК ВИЗ. При сохранении неправильного состояния отставить вагон.", - "LOG_ERROR" : "Неправильное состояние высоковольтных контакторов: Interior heating (1 stage)", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0 - }, - "IncorrectStatusInteriorHeating3" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Неправильное состояние высоковольтных контакторов: Interior heating (3 stage)", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Необходимо включить/выключить соответствующий контактор или группу контакторов на ЛК ВИЗ. При сохранении неправильного состояния отставить вагон.", - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Неправильное состояние обогрева салона (3 ступень)" - }, - "IncorrectStatusQF" : { - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "LOG_MANUAL" : "Необходимо включить/выключить соответствующий автоматический выключатель на ЛК ВИЗ. При сохранении неправильного состояния отставить вагон", - "LOG_ERROR" : "Неправильное состояние автоматических выключателей QF1-QF4", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "ALARM_LOWERBOUND" : 0, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Неправильное состояние автоматических выключателей QF1-QF4", - "IS_ENABLED" : true, - "UNIT_NAME" : "" - } - }, - "LKVIZ" : { - "StateMicroclimate" : { - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Состояние системы микроклимата", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10 - }, - "*NAME" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : false, - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "NAME" : "ЛК ВИЗ" - }, - "IsConnectLkViz" : { - "ALARM_LOWERBOUND" : 1, - "NAME" : "Наличие связи с блоком ЛК-ВИЗ", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Отключить и включить автомат цепи ЛК-ВИЗ, в случае сохранения неисправности отставить вагон.", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Отсутствие связи с ЛК-ВИЗ" - } - }, - "REVERSE" : { - "IsConnectBsptM1" : { - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "Отключить и включить автомат цепи БСПТ-М1, в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания BSPT-M1", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "ALARM_LOWERBOUND" : 1, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Соединение с БСПТ-М1", - "UNIT_NAME" : "", - "IS_ENABLED" : true - }, - "OrderForward" : { - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "ALARM_LOWERBOUND" : 1, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Команда вперед", - "UNIT_NAME" : "", - "IS_ENABLED" : true - }, - "BackBsptM1" : { - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Реверс назад БСПТ-М1", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "" - }, - "IsConnectPU008" : { - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания PU-008", - "LOG_MANUAL" : "Отключить и включить автомат цепи ПУ-008, в случае сохранения неисправности составить заявку на ремонт", - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Соединение с ПУ-008", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_LOWERBOUND" : 1 - }, - "BackBtvc03" : { - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Реверс назад БТВЦ-03", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "ALARM_LOWERBOUND" : 1 - }, - "*NAME" : { - "ALARM_LOWERBOUND" : 0, - "IS_ENABLED" : false, - "UNIT_NAME" : "", - "NAME" : "Реверс", - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "" - }, - "ForwardBtvc03" : { - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Реверс вперед БТВЦ-03", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : false, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "", - "LOG_MANUAL" : "" - }, - "ForwardBsptM1" : { - "ALARM_LOWERBOUND" : 1, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Реверс вперед БСПТ-М1", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "" - }, - "BtvcInOrder" : { - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Исправность платы управления БТВЦ-03", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Неисправность платы управления БТВЦ-03", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации" - }, - "OrderBack" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Команда назад" - }, - "BsptInOrder" : { - "NAME" : "Исправность платы управления БСПТ-М1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 1, - "LOG_MANUAL" : "Отключить и включить вагон, в случае сохранения неисправности отставить вагон от эксплуатации", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Неисправность платы управления БСПТ-М1", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0 - }, - "IsConnectBtvc03" : { - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Обрыв жгута шины CAN или отсутствие н/в питания BTVC-03", - "LOG_MANUAL" : "Отключить и включить автомат цепи БТВЦ, в случае сохранения неисправности составить заявку на ремонт", - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Соединение с БТВЦ-03", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0 - } - }, - "COGNITIVE" : { - "*NAME" : { - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "NAME" : "Когнитив", - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : false, - "ALARM_LOWERBOUND" : 0 - }, - "SystemError" : { - "LOG_ERROR" : "Ошибка выявленна алгоритмами самодиагностики оборудования", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Ошибки в работе оборудования", - "ALARM_LOWERBOUND" : 0 - }, - "IsConnectCognitive" : { - "ALARM_LOWERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Наличие связи с блоком Когнитив", - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Отсутствие связи с Когнитив", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ] - } - }, - "SPEED" : { - "*NAME" : { - "ALARM_LOWERBOUND" : 0, - "NAME" : "Скорость", - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : false, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "" - }, - "VehicleSpeed2" : { - "ALARM_LOWERBOUND" : -1, - "NAME" : "Скорость БСПТ 2", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "UNIT_NAME" : "км/ч", - "IS_ENABLED" : true, - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 60, - "HUGE_ALARM_COOLDOWN" : 600, - "LOG_MANUAL" : "Нужно сбавить скорость", - "LOG_HUGE_ERROR" : "Повторное привышение скорости", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Превышение скорости" - }, - "VehicleSpeed1" : { - "HUGE_ALARM_COOLDOWN" : 600, - "ALARM_UPPERBOUND" : 60, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Превышение скорости", - "LOG_HUGE_ERROR" : "Повторное привышение скорости", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Нужно сбавить скорость", - "ALARM_LOWERBOUND" : -1, - "IS_ENABLED" : true, - "UNIT_NAME" : "км/ч", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Скорость БСПТ 1" - } - }, - "Zus" : { - "*NAME" : { - "NAME" : "Зарядное устройство ионисторов", - "ALARM_COOLDOWN" : 0, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : false, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 0, - "LOG_MANUAL" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "", - "IS_ALARM_ENABLED" : false, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0 - }, - "ProtectionOfStepDownTransZus2" : { - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Ошибка защиты транзисторов понизителя ЗУС-2", - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "ALARM_LOWERBOUND" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "NAME" : "Защита транзисторов понизителя ЗУС-2", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0 - }, - "ProtectionOfStepUpTransZus1" : { - "LOG_ERROR" : "Ошибка защиты транзисторов повысителя ЗУС-1", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Защита транзисторов повысителя ЗУС-1", - "ALARM_LOWERBOUND" : 0 - }, - "IsConnectZus1" : { - "ALARM_LOWERBOUND" : 1, - "NAME" : "Наличие связи с блоком ЗУС-1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Отсутствие связи с ЗУС-1" - }, - "ErrorTempZus1" : { - "ALARM_LOWERBOUND" : 0, - "NAME" : "Температура превысила максимально допустимую ЗУС-1", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Температура превысила максимально допустимую ЗУС-1" - }, - "ProtectionOfStepDownTransZus1" : { - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Ошибка защиты транзисторов понизителя ЗУС-1", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "ALARM_LOWERBOUND" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Защита транзисторов понизителя ЗУС-1", - "IS_ENABLED" : true, - "UNIT_NAME" : "" - }, - "ErrorTempZus2" : { - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Температура превысила максимально допустимую ЗУС-2", - "ALARM_LOWERBOUND" : 0, - "LOG_ERROR" : "Температура превысила максимально допустимую ЗУС-2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true - }, - "ProtectionOfStepUpTransZus2" : { - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Ошибка защиты транзисторов повысителя ЗУС-2", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Защита транзисторов повысителя ЗУС-2", - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_LOWERBOUND" : 0 - }, - "HighVoltageOutputFilterZus1" : { - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Напряжение на выходном фильтре выше допустимого ЗУС-1", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "Напряжение на выходном фильтре выше допустимого ЗУС-1", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 0 - }, - "ChargeModeZus2" : { - "ALARM_LOWERBOUND" : 1, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "ЗУС-1 работает в режиме заряда", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "IS_ALARM_ENABLED" : false, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "LOG_MANUAL" : "", - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ] - }, - "IsConnectZus2" : { - "ALARM_LOWERBOUND" : 1, - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "NAME" : "Наличие связи с блоком ЗУС-2", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "ALARM_UPPERBOUND" : 1, - "HUGE_ALARM_COOLDOWN" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_ERROR" : "Отсутствие связи с ЗУС-2", - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт" - }, - "ChargeModeZus1" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 1, - "IS_ALARM_ENABLED" : false, - "LOG_ERROR" : "", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_MANUAL" : "", - "ALARM_LOWERBOUND" : 1, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "NAME" : "ЗУС-1 работает в режиме заряда" - }, - "HighVoltageOutputFilterZus2" : { - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0, - "IS_ALARM_ENABLED" : true, - "LOG_ERROR" : "Напряжение на выходном фильтре выше допустимого ЗУС-2", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "ALARM_LOWERBOUND" : 0, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Напряжение на выходном фильтре выше допустимого ЗУС-2" - }, - "HighVoltageInputFilterZus2" : { - "ALARM_LOWERBOUND" : 0, - "NAME" : "Напряжение на входном фильтре выше допустимого ЗУС-2", - "ALARM_SLIPPAGE" : 0, - "ALARM_COOLDOWN" : 10, - "UNIT_NAME" : "", - "IS_ENABLED" : true, - "IS_ALARM_ENABLED" : true, - "ALARM_UPPERBOUND" : 0, - "HUGE_ALARM_COOLDOWN" : 0, - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "LOG_HUGE_ERROR" : "", - "LOG_ERROR" : "Напряжение на входном фильтре выше допустимого ЗУС-2" - }, - "HighVoltageInputFilterZus1" : { - "ALARM_COOLDOWN" : 10, - "ALARM_SLIPPAGE" : 0, - "NAME" : "Напряжение на входном фильтре выше допустимого ЗУС-1", - "IS_ENABLED" : true, - "UNIT_NAME" : "", - "ALARM_LOWERBOUND" : 0, - "LOG_MANUAL" : "Необходимо выключить/включить соответствующий и в случае сохранения неисправности составить заявку на ремонт", - "LOG_ERROR" : "Напряжение на входном фильтре выше допустимого ЗУС-1", - "LOG_HUGE_ERROR" : "", - "ARGUS_CAMERAS" : [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ], - "IS_ALARM_ENABLED" : true, - "HUGE_ALARM_COOLDOWN" : 0, - "ALARM_UPPERBOUND" : 0 - } - } - }, - "HOSTS" : [ - { - "DOMAIN" : "", - "PORT" : 0 - } - ], - "SYSTEM" : { - "GROUP" : "", - "MANUFACTURER" : "test", - "TP" : "", - "GOS_NUMBER" : "", - "VIN" : "", - "OPERATOR" : "", - "REG_NUMBER" : "", - "LAST_SERVICE" : 0 - }, - "STORAGE" : { - "STORAGE_SIZE": 3072, - "MAX_VOLUME": 70 - } - } \ No newline at end of file diff --git a/cmd/installer/main.go b/cmd/installer/main.go deleted file mode 100644 index 5b85771..0000000 --- a/cmd/installer/main.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -import ( - _ "embed" - "fyne.io/fyne/v2/app" - - "gitea.unprism.ru/KRBL/FemaInstaller/internal/installer" - "gitea.unprism.ru/KRBL/FemaInstaller/internal/ui" -) - -//go:embed defaultSettings.json -var defaultSettings string - -func main() { - // Create application - myApp := app.New() - - // Create installer - femaInstaller := installer.NewInstaller(defaultSettings) - - // Create and show main window - mainWindow := ui.NewMainWindow(myApp, femaInstaller.Install) - mainWindow.ShowAndRun() -} diff --git a/cmd/updater/main.go b/cmd/updater/main.go deleted file mode 100644 index 444de97..0000000 --- a/cmd/updater/main.go +++ /dev/null @@ -1,33 +0,0 @@ -package main - -import ( - _ "embed" - "fyne.io/fyne/v2/app" - "log" - - "gitea.unprism.ru/KRBL/FemaInstaller/internal/ui" - "gitea.unprism.ru/KRBL/FemaInstaller/internal/updater" - "gitea.unprism.ru/KRBL/FemaInstaller/pkg/config" -) - -//go:embed build -var binaryData []byte - -func main() { - // Load configuration - configPath := updater.GetConfigFilePath() - cfg, err := config.LoadUpdaterConfig(configPath) - if err != nil { - log.Fatalf("Ошибка загрузки конфигурации: %v", err) - } - - // Create application - myApp := app.New() - - // Create updater - femaUpdater := updater.NewUpdater(cfg, binaryData) - - // Create and show updater window - updaterWindow := ui.NewUpdaterWindow(myApp, cfg, femaUpdater) - updaterWindow.ShowAndRun() -} diff --git a/cmd/updater/updater_config.json b/cmd/updater/updater_config.json deleted file mode 100644 index 30422a6..0000000 --- a/cmd/updater/updater_config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ip": "62.217.183.220", - "port": "10000", - "login": "root", - "password": "orangepi", - "downloadUrl": "https://s3.ru1.storage.beget.cloud/e4b29bca179c-sparkguard/build" -} diff --git a/go.mod b/go.mod index 6c6ac38..fc37c8f 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,12 @@ -module gitea.unprism.ru/KRBL/FemaInstaller +module gitea.unprism.ru/KRBL/FemaDeployer -go 1.24 +go 1.24.5 require ( - fyne.io/fyne/v2 v2.6.0 + fyne.io/fyne/v2 v2.6.1 + gitea.unprism.ru/KRBL/FemaInstaller v0.0.0-20250506071504-26ac96bdda1b github.com/pkg/sftp v1.13.9 - golang.org/x/crypto v0.37.0 + golang.org/x/crypto v0.40.0 ) require ( @@ -14,7 +15,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fredbi/uri v1.1.0 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fyne-io/gl-js v0.1.0 // indirect + github.com/fyne-io/gl-js v0.2.0 // indirect github.com/fyne-io/glfw-js v0.2.0 // indirect github.com/fyne-io/image v0.1.1 // indirect github.com/fyne-io/oksvg v0.1.0 // indirect @@ -25,21 +26,21 @@ require ( github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/hack-pad/go-indexeddb v0.3.2 // indirect github.com/hack-pad/safejs v0.1.1 // indirect - github.com/jeandeaual/go-locale v0.0.0-20250421151639-a9d6ed1b3d45 // indirect + github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade // indirect github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect github.com/nicksnyder/go-i18n/v2 v2.6.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rymdport/portal v0.4.1 // indirect + github.com/rymdport/portal v0.4.2 // indirect github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect github.com/stretchr/testify v1.10.0 // indirect - github.com/yuin/goldmark v1.7.10 // indirect - golang.org/x/image v0.26.0 // indirect - golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect - golang.org/x/text v0.24.0 // indirect + github.com/yuin/goldmark v1.7.12 // indirect + golang.org/x/image v0.29.0 // indirect + golang.org/x/net v0.42.0 // indirect + golang.org/x/sys v0.34.0 // indirect + golang.org/x/text v0.27.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 69a3cc8..9df7efa 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,9 @@ -fyne.io/fyne/v2 v2.6.0 h1:Rywo9yKYN4qvNuvkRuLF+zxhJYWbIFM+m4N4KV4p1pQ= -fyne.io/fyne/v2 v2.6.0/go.mod h1:YZt7SksjvrSNJCwbWFV32WON3mE1Sr7L41D29qMZ/lU= +fyne.io/fyne/v2 v2.6.1 h1:kjPJD4/rBS9m2nHJp+npPSuaK79yj6ObMTuzR6VQ1Is= +fyne.io/fyne/v2 v2.6.1/go.mod h1:YZt7SksjvrSNJCwbWFV32WON3mE1Sr7L41D29qMZ/lU= fyne.io/systray v1.11.0 h1:D9HISlxSkx+jHSniMBR6fCFOUjk1x/OOOJLa9lJYAKg= fyne.io/systray v1.11.0/go.mod h1:RVwqP9nYMo7h5zViCBHri2FgjXF7H2cub7MAq4NSoLs= +gitea.unprism.ru/KRBL/FemaInstaller v0.0.0-20250506071504-26ac96bdda1b h1:DD6K0lsf2EE/shAfLHyC1CPzXQixcMGes05HXA2mSYA= +gitea.unprism.ru/KRBL/FemaInstaller v0.0.0-20250506071504-26ac96bdda1b/go.mod h1:GGSc0PWEso9vvK2bmAnYDYIbRcWhSXOFYFte5/ptIyo= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -16,6 +18,8 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fyne-io/gl-js v0.1.0 h1:8luJzNs0ntEAJo+8x8kfUOXujUlP8gB3QMOxO2mUdpM= github.com/fyne-io/gl-js v0.1.0/go.mod h1:ZcepK8vmOYLu96JoxbCKJy2ybr+g1pTnaBDdl7c3ajI= +github.com/fyne-io/gl-js v0.2.0 h1:+EXMLVEa18EfkXBVKhifYB6OGs3HwKO3lUElA0LlAjs= +github.com/fyne-io/gl-js v0.2.0/go.mod h1:ZcepK8vmOYLu96JoxbCKJy2ybr+g1pTnaBDdl7c3ajI= github.com/fyne-io/glfw-js v0.2.0 h1:8GUZtN2aCoTPNqgRDxK5+kn9OURINhBEBc7M4O1KrmM= github.com/fyne-io/glfw-js v0.2.0/go.mod h1:Ri6te7rdZtBgBpxLW19uBpp3Dl6K9K/bRaYdJ22G8Jk= github.com/fyne-io/image v0.1.1 h1:WH0z4H7qfvNUw5l4p3bC1q70sa5+YWVt6HCj7y4VNyA= @@ -41,8 +45,8 @@ github.com/hack-pad/go-indexeddb v0.3.2 h1:DTqeJJYc1usa45Q5r52t01KhvlSN02+Oq+tQb github.com/hack-pad/go-indexeddb v0.3.2/go.mod h1:QvfTevpDVlkfomY498LhstjwbPW6QC4VC/lxYb0Kom0= github.com/hack-pad/safejs v0.1.1 h1:d5qPO0iQ7h2oVtpzGnLExE+Wn9AtytxIfltcS2b9KD8= github.com/hack-pad/safejs v0.1.1/go.mod h1:HdS+bKF1NrE72VoXZeWzxFOVQVUSqZJAG0xNCnb+Tio= -github.com/jeandeaual/go-locale v0.0.0-20250421151639-a9d6ed1b3d45 h1:vFdvrlsVU+p/KFBWTq0lTG4fvWvG88sawGlCzM+RUEU= -github.com/jeandeaual/go-locale v0.0.0-20250421151639-a9d6ed1b3d45/go.mod h1:ZDXo8KHryOWSIqnsb/CiDq7hQUYryCgdVnxbj8tDG7o= +github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade h1:FmusiCI1wHw+XQbvL9M+1r/C3SPqKrmBaIOYwVfQoDE= +github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade/go.mod h1:ZDXo8KHryOWSIqnsb/CiDq7hQUYryCgdVnxbj8tDG7o= github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M= github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= @@ -63,6 +67,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rymdport/portal v0.4.1 h1:2dnZhjf5uEaeDjeF/yBIeeRo6pNI2QAKm7kq1w/kbnA= github.com/rymdport/portal v0.4.1/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4= +github.com/rymdport/portal v0.4.2 h1:7jKRSemwlTyVHHrTGgQg7gmNPJs88xkbKcIL3NlcmSU= +github.com/rymdport/portal v0.4.2/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4= github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c h1:km8GpoQut05eY3GiYWEedbTT0qnSxrCjsVbb7yKY1KE= github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c/go.mod h1:cNQ3dwVJtS5Hmnjxy6AgTPd0Inb3pW05ftPSX7NZO7Q= github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef h1:Ch6Q+AZUxDBCVqdkI8FSpFyZDtCVBc2VmejdNrm5rRQ= @@ -74,18 +80,22 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark v1.7.10 h1:S+LrtBjRmqMac2UdtB6yyCEJm+UILZ2fefI4p7o0QpI= -github.com/yuin/goldmark v1.7.10/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= +github.com/yuin/goldmark v1.7.12 h1:YwGP/rrea2/CnCtUHgjuolG/PnMxdQtPMO5PvaE2/nY= +github.com/yuin/goldmark v1.7.12/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= -golang.org/x/image v0.26.0 h1:4XjIFEZWQmCZi6Wv8BoxsDhRU3RVnLX04dToTDAEPlY= -golang.org/x/image v0.26.0/go.mod h1:lcxbMFAovzpnJxzXS3nyL83K27tmqtKzIJpctK8YO5c= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/image v0.28.0 h1:gdem5JW1OLS4FbkWgLO+7ZeFzYtL3xClb97GaUzYMFE= +golang.org/x/image v0.28.0/go.mod h1:GUJYXtnGKEUgggyzh+Vxt+AviiCcyiwpsl8iQ8MvwGY= +golang.org/x/image v0.29.0 h1:HcdsyR4Gsuys/Axh0rDEmlBmB68rW1U9BUdB3UVHsas= +golang.org/x/image v0.29.0/go.mod h1:RVJROnf3SLK8d26OW91j4FrIHGbsJ8QnbEocVTOWQDA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -99,8 +109,10 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -119,8 +131,10 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -130,8 +144,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= -golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -141,8 +155,10 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff --git a/internal/deployer/deployer.go b/internal/deployer/deployer.go new file mode 100644 index 0000000..f57d7bd --- /dev/null +++ b/internal/deployer/deployer.go @@ -0,0 +1,207 @@ +package deployer + +import ( + "fmt" + "path/filepath" + "strings" + "time" + + "gitea.unprism.ru/KRBL/FemaDeployer/internal/ssh" + "gitea.unprism.ru/KRBL/FemaDeployer/pkg/config" + "gitea.unprism.ru/KRBL/FemaDeployer/pkg/fileutils" + gossh "golang.org/x/crypto/ssh" +) + +// ... структура ServiceStatus и LogFunc без изменений ... + +type ServiceStatus struct { + Name string + Version string + Status string + Raw string +} + +type LogFunc func(message string) + +// ... структура Deployer и функция NewDeployer без изменений ... + +type Deployer struct { + ConnConfig *config.ConnectionConfig + Log LogFunc +} + +func NewDeployer(cfg *config.ConnectionConfig, logFunc LogFunc) *Deployer { + return &Deployer{ + ConnConfig: cfg, + Log: logFunc, + } +} + +// ... функция GetServicesStatus без изменений ... +func (d *Deployer) GetServicesStatus(components []config.Component) ([]ServiceStatus, error) { + d.Log("Подключение для проверки статуса...") + client, err := ssh.CreateSSHClient(ssh.NewClientConfig(d.ConnConfig.IP, d.ConnConfig.Port, d.ConnConfig.Login, d.ConnConfig.Password)) + if err != nil { + return nil, fmt.Errorf("ошибка SSH: %w", err) + } + defer client.Close() + + var statuses []ServiceStatus + for _, comp := range components { + d.Log(fmt.Sprintf("Проверка статуса для %s...", comp.Name)) + status := ServiceStatus{Name: comp.Name, Version: comp.Version} + + cmd := fmt.Sprintf("systemctl status %s.service", comp.Name) + + output, err := ssh.ExecuteCommandWithOutput(client, cmd) + + status.Raw = output + if err != nil { + if strings.Contains(status.Raw, "Loaded: not-found") { + status.Status = "Не найден" + } else if strings.Contains(status.Raw, "inactive (dead)") { + status.Status = "Не активен" + } else { + status.Status = "Ошибка" + } + } else { + status.Status = "Активен" + } + + statuses = append(statuses, status) + } + d.Log("Проверка статусов завершена.") + return statuses, nil +} + +func (d *Deployer) FullDeploy() error { + client, err := d.connect() + if err != nil { + return err + } + defer client.Close() + + if err := d.prepareRemotePackage(client); err != nil { + return err + } + + d.Log("Запуск скрипта полной установки...") + installScriptPath := "/tmp/fema_deployment/deployment_package/scripts/install.sh" + + // ИСПОЛЬЗУЕМ ExecuteCommandWithOutput для отладки + output, err := ssh.ExecuteCommandWithOutput(client, "sudo "+installScriptPath) + if err != nil { + d.Log("!!! ОШИБКА ВЫПОЛНЕНИЯ СКРИПТА !!!") + d.Log("ВЫВОД СКРИПТА:\n" + output) + return fmt.Errorf("ошибка выполнения install.sh: %w", err) + } + + d.Log("ВЫВОД СКРИПТА:\n" + output) + d.Log("Полная установка успешно завершена!") + return nil +} + +func (d *Deployer) SelectiveUpdate(components []string) error { + if len(components) == 0 { + return fmt.Errorf("не выбраны компоненты для обновления") + } + + client, err := d.connect() + if err != nil { + return err + } + defer client.Close() + + if err := d.prepareRemotePackage(client); err != nil { + return err + } + + d.Log(fmt.Sprintf("Запуск скрипта выборочного обновления для: %s", strings.Join(components, ", "))) + updateScriptPath := "/tmp/fema_deployment/deployment_package/scripts/update.sh" + cmd := fmt.Sprintf("sudo %s %s", updateScriptPath, strings.Join(components, " ")) + + // ИСПОЛЬЗУЕМ ExecuteCommandWithOutput для отладки + output, err := ssh.ExecuteCommandWithOutput(client, cmd) + if err != nil { + d.Log("!!! ОШИБКА ВЫПОЛНЕНИЯ СКРИПТА !!!") + d.Log("ВЫВОД СКРИПТА:\n" + output) + return fmt.Errorf("ошибка выполнения update.sh: %w", err) + } + + d.Log("ВЫВОД СКРИПТА:\n" + output) + d.Log("Выборочное обновление успешно завершено!") + return nil +} + +// --- НОВАЯ ВСПОМОГАТЕЛЬНАЯ ФУНКЦИЯ --- +// prepareRemotePackage загружает, распаковывает и подготавливает пакет на удаленной машине +func (d *Deployer) prepareRemotePackage(client *gossh.Client) error { + remotePath := "/tmp/" + filepath.Base(d.ConnConfig.DeploymentPackagePath) + if err := d.uploadPackage(remotePath); err != nil { + return err + } + + d.Log("Распаковка архива на устройстве...") + unpackDir := "/tmp/fema_deployment" + unpackCmds := []string{ + fmt.Sprintf("rm -rf %s", unpackDir), + fmt.Sprintf("mkdir -p %s", unpackDir), + fmt.Sprintf("tar -xzf %s -C %s", remotePath, unpackDir), + } + for _, cmd := range unpackCmds { + if err := ssh.ExecuteCommand(client, cmd); err != nil { + return err + } + } + + // ГАРАНТИРУЕМ, ЧТО СКРИПТЫ МОЖНО ЗАПУСКАТЬ + d.Log("Установка прав на исполнение для скриптов...") + scriptsPath := filepath.Join(unpackDir, "deployment_package", "scripts") + installScriptPath := filepath.Join(scriptsPath, "install.sh") + updateScriptPath := filepath.Join(scriptsPath, "update.sh") + chmodCmd := fmt.Sprintf("chmod +x %s %s", installScriptPath, updateScriptPath) + if err := ssh.ExecuteCommand(client, chmodCmd); err != nil { + return fmt.Errorf("не удалось установить права на скрипты: %w", err) + } + + if err := ssh.ExecuteCommand(client, "cd "+scriptsPath); err != nil { + return fmt.Errorf("не удалось перейти в директорию с скриптами: %w", err) + } + + return nil +} + +// ... connect и uploadPackage без изменений ... +func (d *Deployer) connect() (*gossh.Client, error) { + d.Log("Подключение к устройству...") + clientConfig := ssh.NewClientConfig(d.ConnConfig.IP, d.ConnConfig.Port, d.ConnConfig.Login, d.ConnConfig.Password) + client, err := ssh.CreateSSHClient(clientConfig) + if err != nil { + d.Log(fmt.Sprintf("Ошибка подключения: %v", err)) + return nil, fmt.Errorf("ошибка подключения SSH: %w", err) + } + d.Log("Подключение успешно.") + return client, nil +} + +func (d *Deployer) uploadPackage(remotePath string) error { + d.Log("Загрузка пакета развертывания...") + sftpConfig := ssh.NewClientConfig(d.ConnConfig.IP, d.ConnConfig.Port, d.ConnConfig.Login, d.ConnConfig.Password) + sftpClient, err := ssh.CreateSFTPClient(sftpConfig) + if err != nil { + d.Log(fmt.Sprintf("Ошибка SFTP: %v", err)) + return fmt.Errorf("ошибка подключения SFTP: %w", err) + } + defer sftpClient.Close() + + progressCallback := func(percentage float64, etr time.Duration) { + d.Log(fmt.Sprintf("Загрузка: %.2f%% (осталось ~%v)", percentage, etr.Round(time.Second))) + } + + if err := fileutils.UploadFileWithProgress(sftpClient, d.ConnConfig.DeploymentPackagePath, remotePath, progressCallback); err != nil { + d.Log(fmt.Sprintf("Ошибка загрузки файла: %v", err)) + return fmt.Errorf("ошибка загрузки файла: %w", err) + } + d.Log("Пакет успешно загружен.") + return nil +} diff --git a/internal/deployer/package.go b/internal/deployer/package.go new file mode 100644 index 0000000..1521bef --- /dev/null +++ b/internal/deployer/package.go @@ -0,0 +1,69 @@ +package deployer + +import ( + "archive/tar" + "compress/gzip" + "encoding/json" + "fmt" + "io" + "os" + "path/filepath" + + "gitea.unprism.ru/KRBL/FemaDeployer/pkg/config" +) + +// DeploymentPackage представляет собой загруженный пакет +type DeploymentPackage struct { + Path string + Manifest *config.Manifest +} + +// LoadDeploymentPackage загружает и валидирует пакет развертывания +func LoadDeploymentPackage(path string) (*DeploymentPackage, error) { + file, err := os.Open(path) + if err != nil { + return nil, fmt.Errorf("не удалось открыть файл пакета: %w", err) + } + defer file.Close() + + gzr, err := gzip.NewReader(file) + if err != nil { + return nil, fmt.Errorf("не удалось создать gzip reader: %w", err) + } + defer gzr.Close() + + tr := tar.NewReader(gzr) + + var manifest *config.Manifest + + for { + header, err := tr.Next() + if err == io.EOF { + break // Конец архива + } + if err != nil { + return nil, fmt.Errorf("ошибка чтения tar-архива: %w", err) + } + + // Ищем manifest.json в корне архива + if header.Typeflag == tar.TypeReg && (filepath.Clean(header.Name) == "manifest.json" || filepath.Clean(header.Name) == "deployment_package/manifest.json") { + manifestData, err := io.ReadAll(tr) + if err != nil { + return nil, fmt.Errorf("не удалось прочитать manifest.json: %w", err) + } + if err := json.Unmarshal(manifestData, &manifest); err != nil { + return nil, fmt.Errorf("ошибка парсинга manifest.json: %w", err) + } + break // Манифест найден, выходим из цикла + } + } + + if manifest == nil { + return nil, fmt.Errorf("файл manifest.json не найден в архиве") + } + + return &DeploymentPackage{ + Path: path, + Manifest: manifest, + }, nil +} diff --git a/internal/installer/installer.go b/internal/installer/installer.go deleted file mode 100644 index be1c542..0000000 --- a/internal/installer/installer.go +++ /dev/null @@ -1,96 +0,0 @@ -package installer - -import ( - "fmt" - "os" - - "gitea.unprism.ru/KRBL/FemaInstaller/internal/ssh" - "gitea.unprism.ru/KRBL/FemaInstaller/pkg/config" - "gitea.unprism.ru/KRBL/FemaInstaller/pkg/fileutils" -) - -// Installer handles the installation process -type Installer struct { - DefaultSettings string -} - -// NewInstaller creates a new installer with the provided default settings -func NewInstaller(defaultSettings string) *Installer { - return &Installer{ - DefaultSettings: defaultSettings, - } -} - -// Install performs the installation process -func (i *Installer) Install(sshConfig *config.SSHConfig) error { - // Validate serial number - if len([]rune(sshConfig.Serial)) != 16 { - return fmt.Errorf("serial number must be 16 characters") - } - - // Update settings with user configuration - updatedSettings, err := config.UpdateSettingsJSON(i.DefaultSettings, sshConfig) - if err != nil { - return fmt.Errorf("failed to update settings: %w", err) - } - - // Save updated settings to file - err = config.SaveSettingsJSON(updatedSettings, "settings.json") - if err != nil { - return fmt.Errorf("failed to save settings: %w", err) - } - - // Create SSH client configuration - clientConfig := ssh.NewClientConfig( - sshConfig.IP, - sshConfig.Port, - sshConfig.Login, - sshConfig.Password, - ) - - // Connect to SSH server - sshClient, err := ssh.CreateSSHClient(clientConfig) - if err != nil { - return fmt.Errorf("SSH connection failed: %w", err) - } - defer sshClient.Close() - - // Create SFTP client - sftpClient, err := ssh.CreateSFTPClient(clientConfig) - if err != nil { - return fmt.Errorf("SFTP connection failed: %w", err) - } - defer sftpClient.Close() - - // Upload archive - remotePath := "/root/dict.tar" - if err = fileutils.UploadFile(sftpClient, sshConfig.ArchivePath, remotePath); err != nil { - return fmt.Errorf("file upload failed: %w", err) - } - - // Upload settings - settingsPath := "/root/settings.json" - if err = fileutils.UploadFile(sftpClient, "settings.json", settingsPath); err != nil { - return fmt.Errorf("settings upload failed: %w", err) - } - - // Execute installation commands - commands := []string{ - "tar -xf /root/dict.tar -C /root/", - "mkdir -p /root/fema/storage", - "mv -f ~/settings.json /root/fema/storage", - "chmod +x /root/dict/*", - fmt.Sprintf("sudo /root/dict/install.sh -s %s", sshConfig.Serial), - } - - for _, cmd := range commands { - if err := ssh.ExecuteCommand(sshClient, cmd); err != nil { - return fmt.Errorf("command execution failed: %w", err) - } - } - - // Clean up temporary files - os.Remove("settings.json") - - return nil -} diff --git a/internal/ssh/client.go b/internal/ssh/client.go index f8a4eb7..e5f727c 100644 --- a/internal/ssh/client.go +++ b/internal/ssh/client.go @@ -1,6 +1,7 @@ package ssh import ( + "bytes" "fmt" "time" @@ -73,7 +74,7 @@ func CreateSFTPClient(config *ClientConfig) (*sftp.Client, error) { return sftpClient, nil } -// ExecuteCommand executes a command on the remote server +// ExecuteCommand executes a command on the remote server without returning output func ExecuteCommand(client *ssh.Client, command string) error { session, err := client.NewSession() if err != nil { @@ -87,3 +88,19 @@ func ExecuteCommand(client *ssh.Client, command string) error { return nil } + +// ExecuteCommandWithOutput executes a command and returns its combined stdout/stderr +func ExecuteCommandWithOutput(client *ssh.Client, command string) (string, error) { + session, err := client.NewSession() + if err != nil { + return "", fmt.Errorf("session creation failed: %w", err) + } + defer session.Close() + + var stdoutBuf bytes.Buffer + session.Stdout = &stdoutBuf + session.Stderr = &stdoutBuf // Combine stderr and stdout + + err = session.Run(command) + return stdoutBuf.String(), err +} diff --git a/internal/ui/file_selector.go b/internal/ui/file_selector.go deleted file mode 100644 index b56df73..0000000 --- a/internal/ui/file_selector.go +++ /dev/null @@ -1,49 +0,0 @@ -package ui - -import ( - "path/filepath" - - "fyne.io/fyne/v2" - "fyne.io/fyne/v2/container" - "fyne.io/fyne/v2/dialog" - "fyne.io/fyne/v2/widget" -) - -// CustomFileSelector displays a custom file selection dialog -func CustomFileSelector(window fyne.Window, setText func(string)) { - // Get list of files in current directory - files, _ := filepath.Glob("*") - - // Create list widget with files - fileList := widget.NewList( - func() int { - return len(files) - }, - func() fyne.CanvasObject { - return widget.NewLabel("File") - }, - func(id widget.ListItemID, obj fyne.CanvasObject) { - obj.(*widget.Label).SetText(files[id]) - }, - ) - - // Set selection handler - fileList.OnSelected = func(id widget.ListItemID) { - setText(files[id]) // Set the selected path in the text field - } - - // Create dialog title - title := widget.NewLabel("Files in current directory:") - title.Alignment = fyne.TextAlignCenter - - // Create layout with title and file list - content := container.NewBorder( - title, nil, nil, nil, // Title at the top - container.NewMax(fileList), // List takes maximum space - ) - - // Create and show dialog - fileDialog := dialog.NewCustom("Select a file", "Close", content, window) - fileDialog.Resize(fyne.NewSize(400, 500)) // Set dialog size - fileDialog.Show() -} \ No newline at end of file diff --git a/internal/ui/main_window.go b/internal/ui/main_window.go index d76a724..2fdfb55 100644 --- a/internal/ui/main_window.go +++ b/internal/ui/main_window.go @@ -1,165 +1,378 @@ package ui import ( - "encoding/json" - "os" - "sync" + "fmt" + "path/filepath" + "strings" + "time" "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/data/binding" // <-- ИМПОРТИРУЕМ BINDING "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/widget" - - "gitea.unprism.ru/KRBL/FemaInstaller/pkg/config" + "gitea.unprism.ru/KRBL/FemaDeployer/internal/deployer" + "gitea.unprism.ru/KRBL/FemaDeployer/pkg/config" ) -var mu = sync.Mutex{} +const configFileName = "deployer_config.json" -// MainWindow represents the main application window -type MainWindow struct { - Window fyne.Window - IPEntry *widget.Entry - PortEntry *widget.Entry - LoginEntry *widget.Entry - PasswordEntry *widget.Entry - SerialEntry *widget.Entry - TailNumberEntry *widget.Entry - DefaultHostEntry *widget.Entry - ArchivePathEntry *widget.Entry - StatusLabel *widget.Label - InstallButton *widget.Button +// AppUI представляет главный UI приложения +type AppUI struct { + app fyne.App + window fyne.Window + + // Общие данные + connConfig *config.ConnectionConfig + deployer *deployer.Deployer + manifest *config.Manifest + statuses []deployer.ServiceStatus // Статусы пока оставляем как slice, они обновляются редко + + // Виджеты + ipEntry *widget.Entry + portEntry *widget.Entry + loginEntry *widget.Entry + passwordEntry *widget.Entry + packagePathLabel *widget.Label + statusList *widget.List + componentList *widget.List + latestLogLabel *widget.Label // Метка для отображения последнего лога + logData binding.StringList // Хранилище всех логов + + // Состояние для выбора компонентов + selectedComponents map[string]bool } -func loadConfig() *config.SSHConfig { - fileName := "config.json" - if _, err := os.Stat(fileName); os.IsNotExist(err) { - return nil +// NewAppUI создает новый UI +func NewAppUI(app fyne.App) *AppUI { + w := app.NewWindow("Fema Deployer") + ui := &AppUI{ + app: app, + window: w, + selectedComponents: make(map[string]bool), + logData: binding.NewStringList(), // <-- ИНИЦИАЛИЗИРУЕМ BINDING } - data, err := os.ReadFile(fileName) - if err != nil { - return nil - } + // Загружаем конфиг + ui.connConfig, _ = config.Load(configFileName) - var cfg config.SSHConfig - err = json.Unmarshal(data, &cfg) - if err != nil { - return nil - } + // Инициализируем Deployer с функцией логирования + ui.deployer = deployer.NewDeployer(ui.connConfig, ui.addLog) - return &cfg -} + // Больше не нужен таймер для прокрутки логов, так как мы показываем только последний лог -// NewMainWindow creates a new main window for the application -func NewMainWindow(app fyne.App, installHandler func(*config.SSHConfig) error) *MainWindow { - window := app.NewWindow("Fema Installer") - - // Create form fields - mainWindow := &MainWindow{ - Window: window, - IPEntry: widget.NewEntry(), - PortEntry: widget.NewEntry(), - LoginEntry: widget.NewEntry(), - PasswordEntry: widget.NewPasswordEntry(), - SerialEntry: widget.NewEntry(), - TailNumberEntry: widget.NewEntry(), - DefaultHostEntry: widget.NewEntry(), - ArchivePathEntry: widget.NewEntry(), - StatusLabel: widget.NewLabel(""), - } - - cfg := loadConfig() - - if cfg != nil { - mainWindow.IPEntry.SetText(cfg.IP) - mainWindow.PortEntry.SetText(cfg.Port) - mainWindow.LoginEntry.SetText(cfg.Login) - mainWindow.PasswordEntry.SetText(cfg.Password) - mainWindow.SerialEntry.SetText(cfg.Serial) - mainWindow.TailNumberEntry.SetText(cfg.TailNumber) - mainWindow.DefaultHostEntry.SetText(cfg.DefaultHost) - mainWindow.ArchivePathEntry.SetText(cfg.ArchivePath) - } - - // Disable archive path entry (will be set by file selector) - mainWindow.ArchivePathEntry.Disable() - - // Create archive selection button - selectArchiveBtn := widget.NewButton("Select Archive", func() { - CustomFileSelector(window, func(path string) { - mainWindow.ArchivePathEntry.SetText(path) - }) - }) - - // Create install button - mainWindow.InstallButton = widget.NewButton("Install", func() { - config := &config.SSHConfig{ - IP: mainWindow.IPEntry.Text, - Port: mainWindow.PortEntry.Text, - Login: mainWindow.LoginEntry.Text, - Password: mainWindow.PasswordEntry.Text, - Serial: mainWindow.SerialEntry.Text, - TailNumber: mainWindow.TailNumberEntry.Text, - DefaultHost: mainWindow.DefaultHostEntry.Text, - ArchivePath: mainWindow.ArchivePathEntry.Text, - } - - mainWindow.StatusLabel.SetText("Starting installation...") - go func() { - // Validate serial number - if len([]rune(config.Serial)) != 16 { - mainWindow.StatusLabel.SetText("Serial number must be 16 characters") - dialog.ShowInformation("Error", "Serial number must be 16 characters", window) - return - } - mu.Lock() - jsonData, _ := json.MarshalIndent(config, "", " ") - - // Записываем JSON в файл - fileName := "config.json" - os.WriteFile(fileName, jsonData, 0644) - mu.Unlock() - // Perform installation - err := installHandler(config) - if err != nil { - dialog.ShowError(err, window) - mainWindow.StatusLabel.SetText("Installation failed") - } else { - mainWindow.StatusLabel.SetText("Installation completed successfully!") - dialog.ShowInformation("Success", "Installation completed successfully!", window) - } - }() - }) - - // Create form layout - form := container.NewVBox( - widget.NewForm( - widget.NewFormItem("IP", mainWindow.IPEntry), - widget.NewFormItem("Port", mainWindow.PortEntry), - widget.NewFormItem("Login", mainWindow.LoginEntry), - widget.NewFormItem("Password", mainWindow.PasswordEntry), - widget.NewFormItem("Serial Number", mainWindow.SerialEntry), - widget.NewFormItem("Tail Number", mainWindow.TailNumberEntry), - widget.NewFormItem("Default Server", mainWindow.DefaultHostEntry), - widget.NewFormItem("Archive", container.NewHBox(mainWindow.ArchivePathEntry, selectArchiveBtn)), - ), - mainWindow.InstallButton, - mainWindow.StatusLabel, + // Создаем вкладки + tabs := container.NewAppTabs( + container.NewTabItem("Статус", ui.createStatusTab()), + container.NewTabItem("Развертывание", ui.createDeployTab()), ) - // Set window content and size - window.SetContent(form) - window.Resize(fyne.NewSize(400, 300)) + // Создаем лог-панель + logPanel := ui.createLogPanel() - return mainWindow + // Собираем главный контейнер + mainContent := container.NewBorder(tabs, logPanel, nil, nil, nil) + + w.SetContent(mainContent) + w.Resize(fyne.NewSize(800, 600)) + return ui } -// Show displays the main window -func (w *MainWindow) Show() { - w.Window.Show() +func (ui *AppUI) createStatusTab() fyne.CanvasObject { + // ... код полей для подключения без изменений ... + ui.ipEntry = widget.NewEntry() + ui.ipEntry.SetText(ui.connConfig.IP) + ui.portEntry = widget.NewEntry() + ui.portEntry.SetText(ui.connConfig.Port) + ui.loginEntry = widget.NewEntry() + ui.loginEntry.SetText(ui.connConfig.Login) + ui.passwordEntry = widget.NewPasswordEntry() + ui.passwordEntry.SetText(ui.connConfig.Password) + + connectForm := widget.NewForm( + widget.NewFormItem("IP", ui.ipEntry), + widget.NewFormItem("Port", ui.portEntry), + widget.NewFormItem("Login", ui.loginEntry), + widget.NewFormItem("Password", ui.passwordEntry), + ) + + // Список статусов + ui.statusList = widget.NewList( + func() int { + return len(ui.statuses) + }, + func() fyne.CanvasObject { + return container.NewGridWithColumns(3, widget.NewLabel(""), widget.NewLabel(""), widget.NewLabel("")) + }, + func(id widget.ListItemID, obj fyne.CanvasObject) { + if id >= len(ui.statuses) { + return + } + s := ui.statuses[id] + c := obj.(*fyne.Container) + c.Objects[0].(*widget.Label).SetText(s.Name) + c.Objects[1].(*widget.Label).SetText(s.Version) + c.Objects[2].(*widget.Label).SetText(s.Status) + }, + ) + + // Кнопка обновления статуса + refreshBtn := widget.NewButton("Проверить статус", ui.onRefreshStatus) + + return container.NewBorder( + container.NewVBox(connectForm, refreshBtn), + nil, nil, nil, + container.NewMax(ui.statusList), + ) } -// ShowAndRun displays the main window and starts the application -func (w *MainWindow) ShowAndRun() { - w.Window.ShowAndRun() +func (ui *AppUI) createDeployTab() fyne.CanvasObject { + ui.packagePathLabel = widget.NewLabel("Пакет развертывания не выбран") + if ui.connConfig.DeploymentPackagePath != "" { + ui.packagePathLabel.SetText(filepath.Base(ui.connConfig.DeploymentPackagePath)) + go ui.loadManifest() // Загружаем манифест при старте, если путь уже есть + } + + selectPackageBtn := widget.NewButton("Выбрать пакет (.tar.gz)", func() { + dialog.ShowFileOpen(func(reader fyne.URIReadCloser, err error) { + if err != nil || reader == nil { + return + } + defer reader.Close() + + path := reader.URI().Path() + if path == "" { + return + } + + // Эти операции быстрые, их оставляем в основном потоке + ui.connConfig.DeploymentPackagePath = path + ui.packagePathLabel.SetText(filepath.Base(path)) + + // А вот долгую операцию запускаем в отдельной горутине + go ui.loadManifest() + + }, ui.window) + }) + + // ... остальной код функции createDeployTab без изменений ... + ui.componentList = widget.NewList( + func() int { + if ui.manifest == nil { + return 0 + } + return len(ui.manifest.Components) + }, + func() fyne.CanvasObject { + return container.NewHBox(widget.NewCheck("", func(b bool) {}), widget.NewLabel("")) + }, + func(id widget.ListItemID, obj fyne.CanvasObject) { + comp := ui.manifest.Components[id] + c := obj.(*fyne.Container) + check := c.Objects[0].(*widget.Check) + label := c.Objects[1].(*widget.Label) + label.SetText(fmt.Sprintf("%s (v%s)", comp.Name, comp.Version)) + check.SetText("") + check.Checked = ui.selectedComponents[comp.Name] + check.OnChanged = func(b bool) { + ui.selectedComponents[comp.Name] = b + } + }, + ) + + fullInstallBtn := widget.NewButton("Полная установка", ui.onFullDeploy) + selectiveUpdateBtn := widget.NewButton("Обновить выбранное", ui.onSelectiveUpdate) + + return container.NewVBox( + container.NewHBox(selectPackageBtn, ui.packagePathLabel), + widget.NewSeparator(), + container.NewMax(ui.componentList), + widget.NewSeparator(), + container.NewGridWithColumns(2, fullInstallBtn, selectiveUpdateBtn), + ) +} + +func (ui *AppUI) createLogPanel() fyne.CanvasObject { + // Создаем метку для отображения последнего лога + ui.latestLogLabel = widget.NewLabel("Готов к работе") + + // Кнопка для просмотра всех логов + viewLogsBtn := widget.NewButton("Просмотр всех логов", func() { + ui.showLogsWindow() + }) + + // Размещаем метку и кнопку в контейнере + return container.NewBorder(nil, nil, nil, viewLogsBtn, ui.latestLogLabel) +} + +// showLogsWindow открывает новое окно со всеми логами +func (ui *AppUI) showLogsWindow() { + logWindow := ui.app.NewWindow("Журнал операций") + + // Создаем многострочное текстовое поле для отображения всех логов + logEntry := widget.NewEntry() + logEntry.MultiLine = true + logEntry.Wrapping = fyne.TextWrapWord + logEntry.Disable() // Делаем поле только для чтения, но с возможностью копирования + + // Получаем все логи и объединяем их в одну строку + count := ui.logData.Length() + var allLogs strings.Builder + for i := 0; i < count; i++ { + item, err := ui.logData.GetItem(i) + if err != nil { + continue + } + s, err := item.(binding.String).Get() + if err != nil { + continue + } + allLogs.WriteString(s) + allLogs.WriteString("\n") + } + + // Устанавливаем текст в поле + logEntry.SetText(allLogs.String()) + + // Кнопка закрытия + closeBtn := widget.NewButton("Закрыть", func() { + logWindow.Close() + }) + + // Размещаем текстовое поле и кнопку в контейнере + content := container.NewBorder(nil, closeBtn, nil, nil, container.NewScroll(logEntry)) + + logWindow.SetContent(content) + logWindow.Resize(fyne.NewSize(600, 400)) + logWindow.Show() +} + +// --- Обработчики событий --- + +func (ui *AppUI) onRefreshStatus() { + ui.updateAndSaveConfig() + if ui.manifest == nil { + ui.addLog("Ошибка: сначала выберите пакет развертывания на вкладке 'Развертывание'.") + dialog.ShowInformation("Ошибка", "Сначала выберите пакет развертывания", ui.window) + return + } + + go func() { + statuses, err := ui.deployer.GetServicesStatus(ui.manifest.Components) + if err != nil { + ui.addLog(fmt.Sprintf("Ошибка проверки статуса: %v", err)) + return + } + + // Безопасно обновляем данные и виджет + ui.statuses = statuses + ui.statusList.Refresh() // Fyne спроектирован так, что Refresh можно вызывать из других горутин + }() +} + +// ... функции onFullDeploy и onSelectiveUpdate без изменений ... +func (ui *AppUI) onFullDeploy() { + ui.updateAndSaveConfig() + if ui.connConfig.DeploymentPackagePath == "" { + dialog.ShowInformation("Ошибка", "Пакет развертывания не выбран", ui.window) + return + } + + dialog.ShowConfirm("Подтверждение", "Это сотрет предыдущие установки и выполнит установку с нуля. Продолжить?", func(b bool) { + if !b { + return + } + go func() { + err := ui.deployer.FullDeploy() + if err != nil { + ui.addLog(fmt.Sprintf("Ошибка полной установки: %v", err)) + } + }() + }, ui.window) +} + +func (ui *AppUI) onSelectiveUpdate() { + ui.updateAndSaveConfig() + var toUpdate []string + for name, selected := range ui.selectedComponents { + if selected { + toUpdate = append(toUpdate, name) + } + } + if len(toUpdate) == 0 { + dialog.ShowInformation("Информация", "Не выбраны компоненты для обновления", ui.window) + return + } + + go func() { + err := ui.deployer.SelectiveUpdate(toUpdate) + if err != nil { + ui.addLog(fmt.Sprintf("Ошибка выборочного обновления: %v", err)) + } + }() +} + +// --- Вспомогательные функции --- + +func (ui *AppUI) updateAndSaveConfig() { + // Мьютекс здесь не нужен, т.к. доступ к виджетам идет из основного потока + ui.connConfig.IP = ui.ipEntry.Text + ui.connConfig.Port = ui.portEntry.Text + ui.connConfig.Login = ui.loginEntry.Text + ui.connConfig.Password = ui.passwordEntry.Text + // Путь к пакету уже обновлен, сохраняем все вместе + ui.connConfig.Save(configFileName) +} + +func (ui *AppUI) loadManifest() { + ui.addLog("Загрузка манифеста...") + loadedPackage, err := deployer.LoadDeploymentPackage(ui.connConfig.DeploymentPackagePath) + if err != nil { + ui.addLog(fmt.Sprintf("Ошибка загрузки манифеста: %v", err)) + // Можно показать диалог ошибки, но делать это нужно в основном потоке. + // Для этого можно использовать канал или просто положиться на лог. + return + } + ui.manifest = loadedPackage.Manifest + ui.addLog("Манифест успешно загружен. Компоненты:") + for _, c := range ui.manifest.Components { + ui.addLog(fmt.Sprintf("- %s (v%s)", c.Name, c.Version)) + } + + ui.componentList.Refresh() + + // Сразу после успешной загрузки манифеста запускаем проверку статусов. + // Нет необходимости делать это через ui.onRefreshStatus, можно напрямую. + go func() { + statuses, err := ui.deployer.GetServicesStatus(ui.manifest.Components) + if err != nil { + ui.addLog(fmt.Sprintf("Ошибка первоначальной проверки статуса: %v", err)) + return + } + ui.statuses = statuses + ui.statusList.Refresh() + }() +} + +func (ui *AppUI) addLog(message string) { + // Форматируем сообщение с временной меткой + logLine := fmt.Sprintf("%s: %s", time.Now().Format("15:04:05"), message) + + // Добавляем в историю логов (потокобезопасно через binding) + ui.logData.Append(logLine) + + // Обновляем метку с последним логом + // Fyne поддерживает обновление виджетов из любого потока + if ui.latestLogLabel != nil { + fyne.Do(func() { + if !strings.Contains(ui.latestLogLabel.Text, "\n") { + ui.latestLogLabel.SetText(logLine) + } + }) + } +} + +// ShowAndRun показывает окно и запускает приложение +func (ui *AppUI) ShowAndRun() { + ui.window.ShowAndRun() } diff --git a/internal/ui/updater_window.go b/internal/ui/updater_window.go deleted file mode 100644 index 2c6cb6a..0000000 --- a/internal/ui/updater_window.go +++ /dev/null @@ -1,175 +0,0 @@ -package ui - -import ( - "fmt" - "time" - - "fyne.io/fyne/v2" - "fyne.io/fyne/v2/container" - "fyne.io/fyne/v2/widget" - - "gitea.unprism.ru/KRBL/FemaInstaller/internal/updater" - "gitea.unprism.ru/KRBL/FemaInstaller/pkg/config" -) - -// UpdaterWindow represents the main window for the updater application -type UpdaterWindow struct { - Window fyne.Window - ConfigDisplay *widget.Label - UpdateButton *widget.Button - StatusLabel *widget.Label - ProgressBar *widget.ProgressBar - StageLabel *widget.Label - TimeRemainingLabel *widget.Label - UpdateMethodRadio *widget.RadioGroup - Updater *updater.Updater -} - -// NewUpdaterWindow creates a new window for the updater application -func NewUpdaterWindow(app fyne.App, config *config.UpdaterConfig, femaUpdater *updater.Updater) *UpdaterWindow { - window := app.NewWindow("Обновление ПО Фема") - - // Create update method radio - updateMethodRadio := widget.NewRadioGroup( - []string{"Использовать встроенную версию", "Загрузить с сервера по URL"}, - func(selected string) { - if selected == "Использовать встроенную версию" { - femaUpdater.SetUpdateMethod(updater.UpdateMethodEmbedded) - } else { - femaUpdater.SetUpdateMethod(updater.UpdateMethodDirectDownload) - } - }, - ) - // Default to embedded method - updateMethodRadio.SetSelected("Использовать встроенную версию") - - // Create updater window - updaterWindow := &UpdaterWindow{ - Window: window, - ConfigDisplay: widget.NewLabel(config.String()), - StatusLabel: widget.NewLabel(""), - ProgressBar: widget.NewProgressBar(), - StageLabel: widget.NewLabel(""), - TimeRemainingLabel: widget.NewLabel(""), - UpdateMethodRadio: updateMethodRadio, - Updater: femaUpdater, - } - - // Hide progress elements initially - updaterWindow.ProgressBar.Hide() - updaterWindow.StageLabel.Hide() - updaterWindow.TimeRemainingLabel.Hide() - - // Create update button - updaterWindow.UpdateButton = widget.NewButton("Обновить ПО", func() { - updaterWindow.StatusLabel.SetText("Начало обновления...") - updaterWindow.UpdateButton.Disable() - updaterWindow.UpdateMethodRadio.Disable() - - // Show progress elements - updaterWindow.ProgressBar.Show() - updaterWindow.StageLabel.Show() - updaterWindow.TimeRemainingLabel.Show() - - // Reset progress - updaterWindow.ProgressBar.SetValue(0) - updaterWindow.StageLabel.SetText("Подготовка...") - updaterWindow.TimeRemainingLabel.SetText("") - - go func() { - // Create progress callback - progressCallback := func(progress updater.ProgressInfo) { - // Update UI from the main thread - window.Canvas().Refresh(updaterWindow.ProgressBar) - - updaterWindow.ProgressBar.SetValue(progress.Percentage / 100) - updaterWindow.StageLabel.SetText(progress.Stage) - - // Format time remaining - if progress.EstimatedTimeRemaining > 0 { - minutes := int(progress.EstimatedTimeRemaining.Minutes()) - seconds := int(progress.EstimatedTimeRemaining.Seconds()) % 60 - - if minutes > 0 { - updaterWindow.TimeRemainingLabel.SetText( - fmt.Sprintf("Осталось примерно: %d мин %d сек", minutes, seconds)) - } else { - updaterWindow.TimeRemainingLabel.SetText( - fmt.Sprintf("Осталось примерно: %d сек", seconds)) - } - } else { - updaterWindow.TimeRemainingLabel.SetText("") - } - } - - err := femaUpdater.Update(progressCallback) - if err != nil { - updaterWindow.StatusLabel.SetText("Ошибка обновления: " + err.Error()) - } else { - updaterWindow.StatusLabel.SetText("Обновление успешно завершено!") - } - - // Wait a moment to show 100% completion - time.Sleep(500 * time.Millisecond) - - // Hide progress elements after completion - updaterWindow.ProgressBar.Hide() - updaterWindow.StageLabel.Hide() - updaterWindow.TimeRemainingLabel.Hide() - - updaterWindow.UpdateButton.Enable() - updaterWindow.UpdateMethodRadio.Enable() - }() - }) - - // Create title - title := widget.NewLabel("Программа обновления ПО Фема") - title.Alignment = fyne.TextAlignCenter - title.TextStyle = fyne.TextStyle{Bold: true} - - // Create config section title - configTitle := widget.NewLabel("Текущая конфигурация:") - configTitle.TextStyle = fyne.TextStyle{Bold: true} - - // Create progress section - progressSection := container.NewVBox( - updaterWindow.StageLabel, - updaterWindow.ProgressBar, - updaterWindow.TimeRemainingLabel, - ) - - // Create update method section title - updateMethodTitle := widget.NewLabel("Метод обновления:") - updateMethodTitle.TextStyle = fyne.TextStyle{Bold: true} - - // Create layout - content := container.NewVBox( - title, - widget.NewSeparator(), - configTitle, - updaterWindow.ConfigDisplay, - widget.NewSeparator(), - updateMethodTitle, - updaterWindow.UpdateMethodRadio, - widget.NewSeparator(), - updaterWindow.UpdateButton, - updaterWindow.StatusLabel, - progressSection, - ) - - // Set window content and size - window.SetContent(content) - window.Resize(fyne.NewSize(500, 400)) - - return updaterWindow -} - -// Show displays the updater window -func (w *UpdaterWindow) Show() { - w.Window.Show() -} - -// ShowAndRun displays the updater window and starts the application -func (w *UpdaterWindow) ShowAndRun() { - w.Window.ShowAndRun() -} diff --git a/internal/updater/updater.go b/internal/updater/updater.go deleted file mode 100644 index 74cbc8e..0000000 --- a/internal/updater/updater.go +++ /dev/null @@ -1,229 +0,0 @@ -package updater - -import ( - "fmt" - "os" - "path/filepath" - "time" - - "gitea.unprism.ru/KRBL/FemaInstaller/internal/ssh" - "gitea.unprism.ru/KRBL/FemaInstaller/pkg/config" - "gitea.unprism.ru/KRBL/FemaInstaller/pkg/fileutils" - gossh "golang.org/x/crypto/ssh" -) - -// ProgressInfo contains information about the update progress -type ProgressInfo struct { - Stage string - Percentage float64 - EstimatedTimeRemaining time.Duration -} - -// ProgressCallback is a function that reports update progress -type ProgressCallback func(progress ProgressInfo) - -// UpdateMethod defines the method used for updating -type UpdateMethod int - -const ( - // UpdateMethodEmbedded uses the binary embedded in the program - UpdateMethodEmbedded UpdateMethod = iota - // UpdateMethodDirectDownload uses wget to download directly on the device - UpdateMethodDirectDownload -) - -// Updater handles the software update process -type Updater struct { - Config *config.UpdaterConfig - BinaryData []byte - UpdateMethod UpdateMethod -} - -// NewUpdater creates a new updater with the provided configuration and binary data -func NewUpdater(config *config.UpdaterConfig, binaryData []byte) *Updater { - return &Updater{ - Config: config, - BinaryData: binaryData, - UpdateMethod: UpdateMethodEmbedded, // Default to embedded method - } -} - -// SetUpdateMethod sets the update method to use -func (u *Updater) SetUpdateMethod(method UpdateMethod) { - u.UpdateMethod = method -} - -// Update performs the software update process -func (u *Updater) Update(progressCallback ProgressCallback) error { - // If no callback is provided, use a no-op callback - if progressCallback == nil { - progressCallback = func(progress ProgressInfo) {} - } - - // Report initial progress - progressCallback(ProgressInfo{ - Stage: "Подготовка", - Percentage: 0, - EstimatedTimeRemaining: 0, - }) - - // Create SSH client configuration - clientConfig := ssh.NewClientConfig( - u.Config.IP, - u.Config.Port, - u.Config.Login, - u.Config.Password, - ) - - // Connect to SSH server - progressCallback(ProgressInfo{ - Stage: "Подключение к серверу", - Percentage: 10, - EstimatedTimeRemaining: 0, - }) - - sshClient, err := ssh.CreateSSHClient(clientConfig) - if err != nil { - return fmt.Errorf("ошибка подключения SSH: %w", err) - } - defer sshClient.Close() - - // Choose update method - switch u.UpdateMethod { - case UpdateMethodEmbedded: - return u.updateWithEmbeddedBinary(sshClient, clientConfig, progressCallback) - case UpdateMethodDirectDownload: - return u.updateWithDirectDownload(sshClient, progressCallback) - default: - return fmt.Errorf("неизвестный метод обновления") - } -} - -// updateWithEmbeddedBinary updates using the binary embedded in the program -func (u *Updater) updateWithEmbeddedBinary(sshClient *gossh.Client, clientConfig *ssh.ClientConfig, progressCallback ProgressCallback) error { - // Save binary to temporary file - tempFile := "update_binary" - if err := os.WriteFile(tempFile, u.BinaryData, 0644); err != nil { - return fmt.Errorf("не удалось сохранить временный файл: %w", err) - } - defer os.Remove(tempFile) // Clean up temporary file - - progressCallback(ProgressInfo{ - Stage: "Создание SFTP-соединения", - Percentage: 20, - EstimatedTimeRemaining: 0, - }) - - // Create SFTP client - sftpClient, err := ssh.CreateSFTPClient(clientConfig) - if err != nil { - return fmt.Errorf("ошибка подключения SFTP: %w", err) - } - defer sftpClient.Close() - - progressCallback(ProgressInfo{ - Stage: "Загрузка файла", - Percentage: 30, - EstimatedTimeRemaining: 0, - }) - - // Upload binary with progress reporting - remotePath := "/root/fema/build.new" - - // Create a file upload progress callback - uploadProgressCallback := func(percentage float64, estimatedTimeRemaining time.Duration) { - // Map the upload progress (0-100%) to the overall progress (30-80%) - overallPercentage := 30 + (percentage * 0.5) - - progressCallback(ProgressInfo{ - Stage: "Загрузка файла", - Percentage: overallPercentage, - EstimatedTimeRemaining: estimatedTimeRemaining, - }) - } - - if err = fileutils.UploadFileWithProgress(sftpClient, tempFile, remotePath, uploadProgressCallback); err != nil { - return fmt.Errorf("ошибка загрузки файла: %w", err) - } - - return u.finalizeUpdate(sshClient, progressCallback) -} - -// updateWithDirectDownload updates by downloading directly on the device using wget -func (u *Updater) updateWithDirectDownload(sshClient *gossh.Client, progressCallback ProgressCallback) error { - if u.Config.DownloadURL == "" { - return fmt.Errorf("URL загрузки не указан в конфигурации") - } - - progressCallback(ProgressInfo{ - Stage: "Загрузка файла на устройство", - Percentage: 30, - EstimatedTimeRemaining: 0, - }) - - // Download file directly on the device using wget - downloadCmd := fmt.Sprintf("wget -O /root/fema/build.new %s", u.Config.DownloadURL) - - if err := ssh.ExecuteCommand(sshClient, downloadCmd); err != nil { - return fmt.Errorf("ошибка загрузки файла на устройство: %w", err) - } - - progressCallback(ProgressInfo{ - Stage: "Загрузка файла на устройство", - Percentage: 80, - EstimatedTimeRemaining: 0, - }) - - return u.finalizeUpdate(sshClient, progressCallback) -} - -// finalizeUpdate applies the update by moving files and restarting the service -func (u *Updater) finalizeUpdate(sshClient *gossh.Client, progressCallback ProgressCallback) error { - progressCallback(ProgressInfo{ - Stage: "Применение обновления", - Percentage: 80, - EstimatedTimeRemaining: 0, - }) - - // Execute update commands - commands := []string{ - "mv -f /root/fema/build.new /root/fema/build", - "chmod +x /root/fema/build", - "systemctl restart fema.service", - } - - for i, cmd := range commands { - // Calculate progress for each command (80-100%) - cmdProgress := 80 + float64(i+1)*20/float64(len(commands)) - - progressCallback(ProgressInfo{ - Stage: "Применение обновления", - Percentage: cmdProgress, - EstimatedTimeRemaining: 0, - }) - - if err := ssh.ExecuteCommand(sshClient, cmd); err != nil { - return fmt.Errorf("ошибка выполнения команды '%s': %w", cmd, err) - } - } - - // Report completion - progressCallback(ProgressInfo{ - Stage: "Завершено", - Percentage: 100, - EstimatedTimeRemaining: 0, - }) - - return nil -} - -// GetConfigFilePath returns the path to the configuration file -func GetConfigFilePath() string { - // Get executable directory - execDir, err := filepath.Abs(filepath.Dir(os.Args[0])) - if err != nil { - execDir = "." - } - - return filepath.Join(execDir, "updater_config.json") -} diff --git a/pkg/config/config.go b/pkg/config/config.go index e2f645f..1d606a5 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,61 +1,43 @@ package config import ( - "fmt" + "encoding/json" "os" - "strings" ) -// Config represents the application configuration -type Config struct { - DefaultSettings string +// ConnectionConfig содержит параметры для подключения и развертывания +type ConnectionConfig struct { + IP string `json:"ip"` + Port string `json:"port"` + Login string `json:"login"` + Password string `json:"password"` + DeploymentPackagePath string `json:"deployment_package_path"` } -// SSHConfig holds SSH connection and installation parameters -type SSHConfig struct { - IP string - Port string - Login string - Password string - Serial string - TailNumber string - DefaultHost string - ArchivePath string -} - -// NewSSHConfig creates a new SSH configuration with the provided parameters -func NewSSHConfig(ip, port, login, password, serial, tailNumber, defaultHost, archivePath string) *SSHConfig { - return &SSHConfig{ - IP: ip, - Port: port, - Login: login, - Password: password, - Serial: serial, - TailNumber: tailNumber, - DefaultHost: defaultHost, - ArchivePath: archivePath, +// Save сохраняет конфигурацию в файл +func (c *ConnectionConfig) Save(filePath string) error { + data, err := json.MarshalIndent(c, "", " ") + if err != nil { + return err } + return os.WriteFile(filePath, data, 0644) } -// UpdateSettingsJSON updates the default settings JSON with user-provided values -func UpdateSettingsJSON(defaultSettings string, config *SSHConfig) (string, error) { - // Replace registration number - updated := strings.Replace(defaultSettings, `"REG_NUMBER" : "",`, fmt.Sprintf(`"REG_NUMBER" : "%s",`, config.TailNumber), 1) - - // Split the default host into domain and port - hostParts := strings.Split(config.DefaultHost, ":") - if len(hostParts) != 2 { - return "", fmt.Errorf("invalid default host format, expected domain:port") +// Load загружает конфигурацию из файла +func Load(filePath string) (*ConnectionConfig, error) { + if _, err := os.Stat(filePath); os.IsNotExist(err) { + // Возвращаем пустую конфигурацию, если файл не найден + return &ConnectionConfig{Port: "22", Login: "root"}, nil } - // Replace domain and port - updated = strings.Replace(updated, `"DOMAIN" : "",`, fmt.Sprintf(`"DOMAIN" : "%s",`, hostParts[0]), 1) - updated = strings.Replace(updated, `"PORT" : 0`, fmt.Sprintf(`"PORT" : %s`, hostParts[1]), 1) + data, err := os.ReadFile(filePath) + if err != nil { + return nil, err + } - return updated, nil -} - -// SaveSettingsJSON saves the updated settings JSON to a file -func SaveSettingsJSON(content string, filePath string) error { - return os.WriteFile(filePath, []byte(content), 0644) + var cfg ConnectionConfig + if err := json.Unmarshal(data, &cfg); err != nil { + return nil, err + } + return &cfg, nil } diff --git a/pkg/config/manifest.go b/pkg/config/manifest.go new file mode 100644 index 0000000..c514953 --- /dev/null +++ b/pkg/config/manifest.go @@ -0,0 +1,15 @@ +package config + +// Component описывает один компонент в пакете развертывания +type Component struct { + Name string `json:"name"` + Version string `json:"version"` + Type string `json:"type"` // e.g., "infrastructure", "service" +} + +// Manifest описывает содержимое пакета развертывания +type Manifest struct { + PackageVersion string `json:"package_version"` + ReleaseDate string `json:"release_date"` + Components []Component `json:"components"` +} diff --git a/pkg/config/updater_config.go b/pkg/config/updater_config.go deleted file mode 100644 index 521982f..0000000 --- a/pkg/config/updater_config.go +++ /dev/null @@ -1,75 +0,0 @@ -package config - -import ( - "encoding/json" - "fmt" - "os" -) - -// UpdaterConfig holds the configuration for the updater application -type UpdaterConfig struct { - IP string `json:"ip"` - Port string `json:"port"` - Login string `json:"login"` - Password string `json:"password"` - DownloadURL string `json:"downloadUrl"` -} - -// NewUpdaterConfig creates a new updater configuration with default values -func NewUpdaterConfig() *UpdaterConfig { - return &UpdaterConfig{ - IP: "127.0.0.1", - Port: "22", - Login: "root", - Password: "", - DownloadURL: "http://example.com/fema/build", - } -} - -// LoadUpdaterConfig loads the updater configuration from a file -func LoadUpdaterConfig(filePath string) (*UpdaterConfig, error) { - // Check if file exists - if _, err := os.Stat(filePath); os.IsNotExist(err) { - // Create default config if file doesn't exist - config := NewUpdaterConfig() - if err := SaveUpdaterConfig(config, filePath); err != nil { - return nil, fmt.Errorf("не удалось создать конфигурационный файл: %w", err) - } - return config, nil - } - - // Read file - data, err := os.ReadFile(filePath) - if err != nil { - return nil, fmt.Errorf("не удалось прочитать конфигурационный файл: %w", err) - } - - // Parse JSON - var config UpdaterConfig - if err := json.Unmarshal(data, &config); err != nil { - return nil, fmt.Errorf("не удалось разобрать конфигурационный файл: %w", err) - } - - return &config, nil -} - -// SaveUpdaterConfig saves the updater configuration to a file -func SaveUpdaterConfig(config *UpdaterConfig, filePath string) error { - // Marshal JSON - data, err := json.MarshalIndent(config, "", " ") - if err != nil { - return fmt.Errorf("не удалось сериализовать конфигурацию: %w", err) - } - - // Write file - if err := os.WriteFile(filePath, data, 0644); err != nil { - return fmt.Errorf("не удалось записать конфигурационный файл: %w", err) - } - - return nil -} - -// String returns a string representation of the updater configuration -func (c *UpdaterConfig) String() string { - return fmt.Sprintf("IP: %s\nПорт: %s\nЛогин: %s\nПароль: %s\nURL загрузки: %s", c.IP, c.Port, c.Login, c.Password, c.DownloadURL) -}