Документ содержит описание запросов и порядок взаимодействия для компонента SCADA-системы REST API сервера.
В документе присутствует разделение запросов между проектам версий 1 и 2. В новом дистрибутиве можно создавать проекты версии-2, для которых были добавлены новые запросы, и они не поддерживаются в проектах версии-1, такие запросы имеют соответсвующую пометку. Дистрибутив текущей версии ПО доступен на сайте smart-grid.ru. В нем могут работать проекты версии 1 и версии 2. Старые версии дистрибутива (архивные) не поддерживают проект версии-2, только проект версии-1. Для перехода с проекта версии-1 на проект версии-2 необходимо его сконвертировать - перевести на возможность работы с новым программным обеспечением. Отличие между проектами версии 1 и 2 заключается в самой структуре проекта.
только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2только для проектов версии 2запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
запросы в разделе только для проектов версии 2
Сервер REST API работает по открытому и защищенному протоколу SSL/TLS. Настройка портов производится в конфигурационном файле, также необходимо указать путь до сертификата при использовании HTTPs и часовой пояс в переменной UTC. В переменной Threads задается количество потоков REST сервера, по умолчанию значение равно 10.
[Server]
Port=8849
UTC=3
Threads=10
[DispatcherFields]
FieldsUSPD=F435, F407
FieldsTU=F431, F429
FieldsPotr=
[HTTPs]
Port=8848
Path=C:\ENTEK\cert\server.pem
;Password=
Для расширения лога необходимо произвести запуск с ключом -dl.
Запрашиваемый ресурс API задается одним или несколькими уровнями URL, следующими после неизменяемой части начала запроса /entek/api/…. Ресурс допускает использование пробелов и символов кириллицы. Некоторые ресурсы API допускают или требуют применение параметров запроса (следующих после символа '?' значений или пар имя=значение, разделенных символом '&').
Общий вид запроса: https://<IP-адресилидомен>:<порт>/entek/api/<запрашиваемыйресурс>[?<параметрзапроса1>&<параметрзапроса_2>&...]
Режим аутентификации запросов Basic (см. раздел 4. Авторизация и поддержание сессии).
Также доступна HTML страница для диагностики работы сервера (https://<IP-адресилидомен>:<порт>/entek/api/start).
Запрошенный ресурс API возвращает данные в формате JSON. О наличии в ответе данных запрошенного ресурса свидетельствует статус HTTP ответа 200 (ОК). Отсутствие данных при корректном запросе и штатном функционировании сервера обозначается статусом 404 (Not Found). При ошибке авторизации возвращается ошибка 401 (Unauthorized).
запрос: entek/api/login
Запрос содержит параметры Basic-аутентификации - имя и пароль пользователя проекта (например, 'admin' и '123'). В случае успеха ответ содержит токен ("token") - идентификатор для пользователя сессии. Также в ответе присутствует стартовая мнемохсема startMnemoGuid и навигационная мнемосхема naviMnemoGuid, если она присутствует в визуализации. После трех неудачных попыток авторизации с частотой менее 15 секунд, ip-адрес клиента блокируется на 5 минут и ответ содержит 403 код.
Пример ответа:
{
"token": "e5111278-e1ce-4a68-80e5-7154b86e79b1",
"name": "admin",
"group": "",
"fullname": "Admin Adminov",
"result": "true",
"startMnemoGuid": "21D1D68D-86F4-4F69-B254-543D215FF6C4",
"naviMnemoGuid": "C7C1699C-2F7B-41DE-A875-B5B382E3007B"
}
Последующие запросы ресурсов API должны содержать заголовок Pragma с параметром
dssession=token
Например,
Pragma=dssession=e5111278-e1ce-4a68-80e5-7154b86e79b1
В каждом ответе на запрос заголовок Pragma передает параметр dssessionexpires со значением времени (в миллисекундах), оставшегося до окончания сессии. В случае, если следующий запрос в рамках данный сессии подается по истечении этого времени, ответ имеет статус HTTP 401 (Unauthorized), что означает необходимость повторной авторизации пользователя. Время жизни неактивной сессии 5 минут, после чего она закрывается. Информация о текущих сессиях доступна на веб-страницы диагностики, а также отображается в логе сервера.
Для поддержания сессии может использоваться следующий запрос: entek/api/ping
Ответ содержит текущее время сервера:
{ "ping": "2020-09-24T14:27:21.465+03:00" }
Для закрытия сессии служит запрос: entek/api/logout
Ответ содержит сообщение об успешном закрытии сессии:
{ "session": "terminated e5111278-e1ce-4a68-80e5-7154b86e79b1" }
или о неудаче:
{ "session": "not terminated" }
запрос: entek/api/info
Проверка доступности API содержит в ответе информация о сервере в формате JSON. Запрос не требует аутентификации.
Пример ответа:
{
"info": {
"project": "WEB SCADA",
"authentication": "Basic",
"system": "SCADA ENTEK (tm)",
"company": "Энергоресурс, Энтелс 2020-2021гг.",
"version": "1/win32",
"date": "2024-01-19T08:51:24.364"
}
}
запрос: entek/api/system_load
Запрос для получения состояния оборудования, на котором запущен Rest-сервер.
Пример ответа:
{
"start_time": "14:46:40 2025-03-24",
"cpu_load": 2.09,
"mem_load": 41.51,
"net_rx": 24,
"net_tx": 0
}
Ответы выдаются в формате JSON. Пустые поля в значении параметра (value) содержат null. Выдаваемые поля настраиваются в конфигурационном файле и указываются в виде кода соответствующего системному названию поля. Если поле является ссылкой на другой журнал, то для получения значения перед кодом необходимо поставить символ S, в остальных случаях ставится F.
Пример настройки полей в конфигурационном файле:
[DispatcherFields]
FieldsUSPD=F435, S407
FieldsTU=F431, F429
FieldsPotr=...
запрос: entek/api/docs/objects/ascue_set
Запрос списка объектов и их точек учета. Ответ содержит в себе информацию о названии объекта, серийный номер точки учета, идентификаторы в базе данных объекта и каждой точки учета, настройки аскуэ.
Есть возможность запроса с применением фильтров, которые описываются в теле запроса в формате JSON. Значение переменной field является кодом столбца, который можно посмотреть в настройках таблицы в модуле Справочники (Если поле не является ссылкой, то перед кодом добавляется заглавная F, иначе - S). Все фильтры объединяются через логическое И. Если field или value отсутствуют или переданы с пустым значением, то фильтр не применяется. Если объекты не найдены, ответ будет содержать пустой массив objects.
При необходимости можно добавить дополнительную информацию об объекте из других колонок или из других журналов. Для этого в запрос добавляется переменная add_info, в которой содержится массив, описывающий путь до дополнительной информации. В структуре можно указать информацию о полях журнала объекты или передать информацию о связи с другим журналом. При добавлении информации из журнала объекты в структуре достаточно указать переменную fields, которая является массивом состоящем из кода параметра в базе данных и названием поля для ответа в JSON. Для добавления информации из другого связанного журнала в структуре надо указать код журнала в переменной doc, в переменной link указать связанные поля в виде <поле из журнала справочники>-<связанное поле из дополнительного журнала>, а также в переменной fields указать необходимы столбцы из дополнительного журнала.
Пример части запроса с указанием дополнительной информации:
"add_info": [
{
"doc": "51",
"fields": [
"F464-res",
"F465-hierarchy",
"F466-mrid"
],
"link": "F467-ID"
}
]
Пример фильтра, передаваемого в теле запроса:
{
"filters": [
{
"field": "F406",
"value": "ТП"
},
{
"field": "F412",
"value": "Ивановский"
}
]
}
Пример ответа:
{
"objects": [
{
"id": 27722,
"name": "Меркурий 204",
"ascue": {
"uspd_type": "7",
"psw": "",
"ip1": "10.30.30.34",
"port1": "4002",
"ip2": "",
"port2": "30292",
"link_type": "2",
"timeout": "3000"
},
"tus": [
{
"id": 27723,
"serial": "",
"tu_id": "",
"ascue": {
"tu_type": "94",
"use_sn": "True",
"res_type": "1",
"addr": "80",
"psw1": "111111",
"psw2": "2222222222222222"
}
}
]
}
]
}
запрос: entek/api/ascue/save
Запрос для сохранения данных по точкам учета. Показания передаются в теле запроса, поддержан вариант передачи одной записи или массива с несколькими. Тело запроса состоит из следующих переменных:
*Показания, которые сохраняются таким способом не отображаются в модуле Энергоанализ. Для просмотра и мониторинга есть html формы, стартовая страница находится по запросу entek/api/ascue_html*
Чтобы задать глубину хранения данных в конфигурационном файле Rest-сервера необходимо указать количество дней в переменной savePeriod в секции ASCUE (по умолчанию глубина хранения 7 дней).
Пример настройки глубины хранения
[ASCUE]
savePeriod=5
Пример запроса с массивом:
[
{
"id": 72924,
"serial": "23232003105",
"polling_time": 15.0,
"timestamp": "2024-08-26T10:55:17",
"data": [
{
"id": 10,
"v": 122.0
}
]
},
{
"id": 72924,
"serial": "2323200ac3105",
"polling_time": 15.0,
"timestamp": "2024-08-27T11:00:17",
"data": [
{
"id": 10,
"v": 122.0
},
{
"id": 75,
"v": 1.0
}
]
}
]
запрос: entek/api/docs/meters/serialno/<номер>
номер - серийный номер счетчика. Поля, являющиеся ссылкой на запись другого журнала, содержат в себе идентификатор этой записи в БД.
Пример ответа:
{
"TU": {
"id": "27393",
"fields": [
{
"fieldName": "F303",
"value": "25626254",
"userName": "№ сч."
},
{
"fieldName": "F438",
"value": "null",
"userName": "Ктт"
},
{
"fieldName": "F439",
"value": "null",
"userName": "Ктн"
},
{
"fieldName": "F345",
"value": "M233-25626254",
"userName": "Назначение/место установки"
},
{
"fieldName": "F408",
"value": "27391",
"userName": "Объект"
},
{
"fieldName": "F429",
"value": "2022-12-20T00:00:00",
"userName": "Дата наладки"
},
{
"fieldName": "F431",
"value": "Нет",
"userName": "Замечания"
},
{
"fieldName": "F452",
"value": "27397",
"userName": "Потребитель"
}
]
}
}
запрос: entek/api/docs/meters/id/<идентификатор>
<идентификатор> - идентификатор счетчика в БД.
Пример ответа: идентичен пункту "Поиск счетчиков по серийному номеру"
запрос: entek/api/docs/meters/<идентификатор>/object
идентификатор - идентификатор счетчика в БД.
Пример ответа:
{
"Object": [
{
"fieldName": "F406",
"value": "Контроллер Офис",
"userName": "Объект"
},
{
"fieldName": "F407",
"value": "Группа 1",
"userName": "Группа"
},
{
"fieldName": "F435",
"value": "Киевское шоссе",
"userName": "Адрес"
}
]
}
запрос: entek/api/docs/meters/<идентификатор>/consumer
идентификатор - идентификатор счетчика в БД.
Пример ответа:
{
"Consumer": [
{
"fieldName": "F446",
"value": "ООО \"Энтелс\"",
"userName": "Потребитель"
},
{
"fieldName": "F447",
"value": "111111111",
"userName": "Договор"
},
{
"fieldName": "F448",
"value": "222222222",
"userName": "ИНН"
}
]
}
запрос: entek/api/docs/objects/<идентификатор>/meters
идентификатор - идентификатор объекта в БД.
Пример ответа:
{
"TUs": [
{
"id": "27392",
"fields": [
{
"fieldName": "F303",
"value": "40737447",
"userName": "№ сч."
},
{
"fieldName": "F438",
"value": "10",
"userName": "Ктт"
},
{
"fieldName": "F439",
"value": "10",
"userName": "Ктн"
},
{
"fieldName": "F345",
"value": "M233-40737447",
"userName": "Назначение/место установки"
},
{
"fieldName": "F408",
"value": "27391",
"userName": "Объект"
},
{
"fieldName": "F429",
"value": "2022-12-20T00:00:00",
"userName": "Дата наладки"
},
{
"fieldName": "F431",
"value": "null",
"userName": "Замечания"
},
{
"fieldName": "F452",
"value": "27396",
"userName": "Потребитель"
}
]
}
]
}
запрос: entek/api/docs/consumers/<идентификатор>/meters
идентификатор - идентификатор потребителя в БД.
Пример ответа: идентичен пункту "Счетчики, принадлежащие объекту"
запрос: entek/api/docs/meters/all
Ответ содержит список всех счетчиков с их идентификатором и серийным номером.
Пример ответа:
{
"TUs": [
{
"id": "27392",
"fields": [
{
"fieldName": "F303",
"value": "40737447",
"userName": "№ сч."
}
]
},
{
"id": "27393",
"fields": [
{
"fieldName": "F303",
"value": "25626254",
"userName": "№ сч."
}
]
},
{
"id": "27394",
"fields": [
{
"fieldName": "F303",
"value": "44622236",
"userName": "№ сч."
}
]
},
{
"id": "27395",
"fields": [
{
"fieldName": "F303",
"value": "12279137487044",
"userName": "№ сч."
}
]
}
]
}
запрос: /entek/api/docs/form_edit/<идентификатор журнала>
Запрос на получение настройки формы редактирования журнала. Тип ответа файл с названием formFile (без расширения), в теле содержание файла в base64.
запрос: /entek/api/docs/update_form_edit/<идентификатор журнала>
Запрос на обновление настройки формы редактирования журнала. В теле запроса передается форма редактирования в base64.
запрос: /entek/api/docs/doc_record/<идентификатор журнала>
Get запрос записи журнала с применением фильтра для записей и идентификатором журнала. В качестве фильтра необходимо использовать поле с уникальными значениями. Фильтры задаются в параметрах запроса в переменных field и value. Фильтрация осуществляется по полному совпадению со значением фильтра. Ответ содержит переменные record с массивом полей, состоящих из идентификатора поля, его значения, уровня доступа(1 - только чтение, 2 - запись и чтение) и если поле привязано к справочникам, то в переменной preset передается массив допустимых значений, files с массивом файлов, если есть доступ на их чтение или запись и двумя дополнительными параметрами, infoCode и infoString с результатом запроса. Если infoCode = 0, то запрос прошел успешно и информация найдена, infoString не будет, иначе infoString содержит строку с ошибкой.
Также возможно запросить только определенные поля записи. Для этого в параметрах запроса указывается переменная needed_fields, в которой перечисляются через символ ';' идентификаторы необходимых полей. При таком запросе будут переданы запрашиваемые поля и идентификатор записи журнала. Чтобы ответ включал файлы, необходимо в параметре запроса также указать значение files.
Если запись имеет поле, которое ссылается на другие журналы, то в структуре этого поля, идентификатор которого начинается на F, передается переменная ref_to_doc с номером журнала (целое число), а поля с таким же идентификатором, но которое начинается с S передается массив links со значениями полей, на которые ссылается запись.
Пример фильтра
?field=id&value=457&needed_fields=f1;f4;files
Пример ответа
{
"record": [
{
"id": "ID",
"value": "29954",
"access": 0,
"width": 100
},
{
"id": "F463",
"value": "Подстанция 35 кВ ПС-1",
"access": 2,
"width": 100
},
{
"id": "F464",
"value": "ПС",
"access": 2,
"presets": [
"ТП",
"РП",
"КТП",
"МТП",
"ПС",
"БТП",
"БКТП",
"КТБП",
"КТПМ",
"ГКТП",
"КТПН",
"КТПП",
"МКТП",
"МТП",
"ПТП",
"СКТП"
]
},
{
"id": "F476",
"value": null,
"access": 2,
"width": 100
},
{
"id": "F477",
"value": "30089,30090,30091",
"access": 2,
"width": 100,
"ref_to_doc": 50
},
{
"id": "S477",
"value": "test1 (...)",
"access": 2,
"width": 100,
"links": ["test1", "test 2", "test3"]
},
{
"id": "F482",
"value": "SevEnergo.PS1",
"access": 2,
"width": 100
},
{
"id": "F485",
"value": "299001, Севастополь г, Брестская ул, дом № 1",
"access": 2,
"width": 100
},
{
"id": "F522",
"value": "16000+16000+15000",
"access": 2,
"width": 100
},
{
"id": "F523",
"value": null,
"access": 2,
"width": 100
},
{
"id": "F524",
"value": "1936",
"access": 2,
"width": 100
}
],
"files": [
{
"name": "7za.exe",
"id": 15,
"add_user": "ADMIN",
"file_size": 847872,
"add_timestamp": "2025-05-20T14:04:47",
"file_timestamp": "2025-05-20T14:04:47"
}
],
"infoCode": 0
}
запрос: /entek/api/docs/edit_record/<идентификатор журнала>
Запрос редактирования записи журнала. Идентификатор журнала передается в самом запросе, а информация о записи передается в теле запроса в формате json. Json структура состоит из параметра id, в котором передается информация об идентификаторе записи, и параметра fields, в котором передается массив изменяемых полей. Структура поля состоит из переменной field с кодом поля, которое передается строкой, dataType типом данных (соответствует типу данных, который указан в форме редактирования) и самого значение (все значения передается в формате строки, а время передается в формате ISO8601).
Ответ имеет формат json и содержит в себе параметры infoCode и infoString с результатом запроса. Если infoCode = 0, то запрос прошел успешно и информация найдена, параметра infoString в таком случае не будет не будет, иначе infoString содержит строку с ошибкой.
Пример запроса
{
"id": 115484,
"fields": [
{
"field": "F302",
"dataType": 37,
"value": "new value"
}
]
}
запрос: /entek/api/docs/create_record
Запрос создания записи журнала. В теле запроса в формате json передаются поля новой записи и идентификатор целевого журнала. Json структура состоит из параметра id, в котором передается идентификатор журнала, и параметра fields, в котором передается массив полей. Структура поля состоит из переменной field с кодом поля, которое передается строкой, dataType типом данных (соответствует типу данных, который указан в форме редактирования) и самого значение (все значения передается в формате строки, а время передается в формате ISO8601).
Ответ имеет формат json и содержит в себе параметры infoCode и infoString с результатом запроса, а также id новой записи. Если infoCode = 0, то запрос прошел успешно и информация найдена, параметра infoString в таком случае не будет не будет, иначе infoString содержит строку с ошибкой.
Пример запроса
{
"id": 51,
"fields": [
{
"field": "F302",
"dataType": 37,
"value": "new value"
}
]
}
Пример ответа
{
"id": 51,
"infoCode": 0
}
запрос: /entek/api/docs/delete_record
Запрос удаления записи журнала. Для его выполнения необходимо передать в параметрах запроса идентификатор журнала doc и идентификатор записи rec.
Ответ имеет формат json и содержит в себе параметры infoCode и infoString с результатом запроса. Если infoCode = 0, то запрос прошел успешно и информация найдена, параметра infoString в таком случае не будет не будет, иначе infoString содержит строку с ошибкой.
запрос: /entek/api/docs/upload_file/<идентификатор записи журнала>
PUT запрос с хедером Pragma и типом multipart/form-data, формат файла должен быть в бинарном виде. Ключ name в каждой части multipart/form-data в хедере Content-Disposition может быть произвольным, для сохранения названия файла используется ключ filename. Можно передавать несколько файлов.
Ответ имеет формат json и содержит в себе параметры infoCode и infoString с результатом запроса. Если infoCode = 0, то запрос прошел успешно и файл загружен, параметра infoString в таком случае не будет не будет, иначе infoString содержит строку с ошибкой. Также в ответе передается массив files c идентификаторами созданных файлов и их именами.
Пример HTTP запроса:
GET /entek/api/docs/upload_file/58 HTTP/1.1
Host: localhost:8848
Pragma: dssession=512d332b-a1e8-4843-8c95-39513ac86755
Content-Length: 384
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file1"; filename="file_1.cpp"
Content-Type: <Content-Type header here>
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file2"; filename="file_2.hpp"
Content-Type: <Content-Type header here>
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Пример ответа:
{
"files": [
{
"name": "polling_meter_spodes.cpp",
"id": 37,
"add_user": "ADMIN",
"file_size": 26121,
"add_timestamp": "2025-06-11T11:27:39",
"file_timestamp": "2025-06-11T11:27:39"
},
{
"name": "polling_meter_spodes.hpp",
"id": 38,
"add_user": "ADMIN",
"file_size": 1627,
"add_timestamp": "2025-06-11T11:27:39",
"file_timestamp": "2025-06-11T11:27:39"
}
],
"infoCode": 0
}
запрос: /entek/api/docs/delete_file/<идентификатор файла>
В запросе передается идентификатор файла. Ответ имеет формат json и содержит в себе параметры infoCode и infoString с результатом запроса. Если infoCode = 0, то запрос прошел успешно и файл удален, параметра infoString в таком случае не будет не будет, иначе infoString содержит строку с ошибкой.
Запрос соответствует описанию в разделе Скачать документ прикрепленный к записи журнала
запрос: /entek/api/docs/record_external_links
Запрос для получения внешних ссылок на запись журнала. В запросе должны передавать параметры запроса field, в котором указывается поле внешних текущего журнала, и record - идентификатор записи журнала. Ответ содержит массив записей в переменной records, описание полей переменной description, идентификатор журнала полученных записей doc_id, а каждая строка из журнала содержит массив структур полей fields и идентификатор записи rec_id.
Пример запроса:
entek/api/docs/record_external_links?field=503&record=29954
Пример ответа:
{
"doc_id": 51,
"records": [
{
"fields": [
{
"id": "ID",
"value": "30092"
},
{
"id": "F493",
"value": "29954"
},
{
"id": "S493",
"value": "Подстанция 35 кВ ПС-1"
},
{
"id": "F486",
"value": "2025-08-04T00:00:00"
},
{
"id": "F504",
"value": "Гл.рубильник 0,4 кВТ-2"
},
{
"id": "F505",
"value": "1.000000"
},
{
"id": "F508",
"value": "2.000000"
},
{
"id": "F507",
"value": "3.000000"
}
],
"rec_id": 30092
}
],
"description": [
{
"id": 493,
"name": "Объект",
"data_type": 102
},
{
"id": 486,
"name": "Дата замера",
"data_type": 12
},
{
"id": 505,
"name": "U, кВ",
"data_type": 10
},
{
"id": 508,
"name": "I руб, А",
"data_type": 10
},
{
"id": 507,
"name": "P руб, кВт",
"data_type": 10
},
{
"id": 504,
"name": "Присоединение",
"data_type": 37
}
],
"infoCode": 0
}
запрос: /entek/api/docs/find_journal_record/<идентификатор записи>
В запросе передается идентификатор записи журнала. Ответ имеет формат json и содержит в себе параметры journal_id c идентификатором журнала, journal_name с названием журнала, infoCode и infoString с результатом запроса. Если infoCode = 0, то запрос прошел успешно и журнал найден, параметра infoString в таком случае не будет не будет, иначе infoString содержит строку с ошибкой.
Пример ответа:
{
"journal_id": 1,
"journal_name": "Объекты",
"infoCode": 0
}
запрос: /entek/api/docs/doc_info/<идентификатор журнала>
В запросе передается идентификатор журнала. Ответ имеет формат json и содержит в переменной fields массив с информацией о полях, прав доступа к ним, перечень возможных значений presets (если настроено) и о ссылках полей на другие журналы. Если поле является ссылкой на запись из другого журнала, то в структуре поля в link указывается журнал to_doc и поле to_field, на которое ссылается поле, если поле является ссылкой записи из другого журнала, то эти данные хранятся в структуре external_link. Также ответ содержит infoCode и infoString с результатом запроса. Если infoCode = 0, то запрос прошел успешно и информация найдена, параметра infoString в таком случае не будет не будет, иначе infoString содержит строку с ошибкой.
Пример ответа:
{
"fields": [
{
"id": 503,
"name": "Замер нагрузок",
"type": 103,
"access": 2,
"external_link": {
"to_field": 493,
"to_doc": 51
},
"width": 100
},
{
"id": 409,
"name": "Точки учета",
"type": 103,
"access": 2,
"external_link": {
"to_field": 408,
"to_doc": 40
},
"width": 100
},
{
"id": 465,
"name": "ПС",
"type": 37,
"access": 2,
"width": 100
},
{
"id": 466,
"name": "Фидер",
"type": 37,
"access": 2,
"width": 100
},
{
"id": 515,
"name": "Работы",
"type": 103,
"access": 2,
"external_link": {
"to_field": 509,
"to_doc": 52
},
"width": 100
},
{
"id": 463,
"name": "Объект",
"type": 37,
"access": 2,
"width": 100
},
{
"id": 464,
"name": "Тип объекта",
"type": 37,
"access": 2,
"presets": [
"ТП",
"РП",
"КТП",
"МТП",
"ПС",
"БТП",
"БКТП",
"КТБП",
"КТПМ",
"ГКТП",
"КТПН",
"КТПП",
"МКТП",
"МТП",
"ПТП",
"СКТП"
],
"width": 100
},
{
"id": 473,
"name": "Наличие УСПД",
"type": 37,
"access": 2,
"presets": ["Есть", "Отсутствет"],
"width": 100
},
{
"id": 477,
"name": "Потребители",
"type": 102,
"access": 2,
"link": {
"to_field": 446,
"to_doc": 50
},
"width": 100
},
{
"id": 527,
"name": "Примечания",
"type": 38,
"access": 2,
"width": 100
}
],
"infoCode": 0
}
запрос: /entek/api/docs/records
Запрос записей журнала локально доступен без авторизации. В теле запроса обязательно передается идентификатор журнала doc_id и при необходимости массив идентификаторов фильтров filters, массив идентификаторов полей fields, если поля не передать, то вернутся все поля записи. В ответ возвращается массив записей журнала в переменной records.
Пример запроса:
{
"doc_id": 49,
"filters": [113],
"fields": ["F406", "F407"]
}
Пример ответа:
{
"records": [
{
"id": 27391,
"F406": "Объект 1",
"F407": "Общая группа"
}
],
"infoCode": 0
}
запрос entek/api/docs/doc_list
Запрос списка журналов возрващает перечень всех журналов в справочниках. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"docs": [
{
"id": 40,
"name": "Точки учета",
"time_create": "2005-04-11T10:30:14",
"number": 2
},
{
"id": 49,
"name": "Объекты",
"time_create": "2007-03-03T21:09:58",
"number": 0
},
{
"id": 50,
"name": "Потребители",
"time_create": "2010-08-26T08:28:13",
"number": 1
},
{
"id": 51,
"name": "Замер нагрузок",
"time_create": "2025-06-23T11:45:16",
"number": 3
},
{
"id": 52,
"name": "Работы",
"time_create": "2025-06-23T13:50:12",
"number": 4
}
],
"infoCode": 0
}
запрос entek/api/docs/create_journal
Запрос только для проектов версии 2
Запрос создания нового журнала, создается новый журнал в таблице журналов и новая таблица самого журнала, в ответе содержится идентификатор нового журнала. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"name": "Объекты",
"number": 1
}
Пример ответа:
{
"id": 49,
"infoCode": 0
}
запрос entek/api/docs/edit_journal
Запрос только для проектов версии 2
Запрос для изменения информации о журнале, его порядкового номера и имени, можно передать как одну запись, так и массив записей. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса обновления одной записи:
{
"id": 49,
"name": "Объекты",
"number": 1
}
Пример запроса обновления массива:
[
{
"id": 53,
"name": "test update",
"number": 5
},
{
"id": 52,
"name": "Работы",
"number": 4
}
]
Пример ответа:
{
"infoCode": 0
}
запрос entek/api/docs/delete_journal/<идентификатор журнала>
Запрос только для проектов версии 2
Запрос для удаления журнала, удаляется журнал из таблицы со списком журналов и отдельная таблица самого журнала. В строке запроса передается идентификатор журанала. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"infoCode": 0
}
запрос entek/api/docs/doc_field/create
Запрос только для проектов версии 2
Запрос для создания поля журнала, в теле запроса передается идентификатор журнала, название поля, его тип, если поле является ссылкой на другой журнал, то также передается идентификатор поля, на которое идет ссылка. В ответе возвращается идентификатор поля. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"name": "test link",
"data_type": 102,
"doc_id": 55,
"id_ref_doc_field": 514
}
Пример ответа:
{
"id": 532,
"infoCode": 0
}
запрос entek/api/docs/doc_field/update
Запрос только для проектов версии 2
Запрос редактирования поля предназначен только для изменения названия поля. В запросе передается идентификатор поля и его новое название. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
{
"id": 532,
"name": "test link updated"
}
Пример ответа:
{
"infoCode": 0
}
запрос entek/api/docs/doc_field/delete/<идентификатор поля>
Запрос только для проектов версии 2
Запрос для удаления поля журнала, в строке запроса передается идентификатор поля. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"infoCode": 0
}
запрос: /entek/api/docs/user_settings/get
Запрос только для проектов версии 2
Запрос для получения пользовательских настроек полей журнала с возможностью фильтрации по пользователю и роли. Запрос поддерживает следующие параметры:
Ответ содержит массив пользовательских настроек в переменной user_settings. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
/entek/api/docs/user_settings?doc=51&user=1
Пример ответа:
{
"user_settings": [
{
"field_id": 493,
"user_id": 1,
"role_id": null,
"data_type": 102,
"data_xml": "<field><access>2</access><width>150</width></field>"
},
{
"field_id": 504,
"user_id": 1,
"role_id": null,
"data_type": 37,
"data_xml": "<field><access>2</access><width>150</width></field>"
}
],
"infoCode": 0
}
запрос: /entek/api/docs/user_setting/create$ или /entek/api/docs/user_setting/update$
Запрос только для проектов версии 2
Запрос для создания новой пользовательской настройки или обновления существующей. Eсли запись уже существует, она обновляется, иначе создается новая. В теле запроса передается структура со следующими параметрами:
обязательно надо передать либо role_id, либо user_id
При успешном запросе ответ содержит параметр infoCode равный 0, иначе infoCode равен 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"doc_id": 51,
"field_id": 493,
"user_id": 1,
"data_type": 102,
"data_xml": "<field><access>2</access><width>150</width></field>"
}
Пример ответа:
{
"infoCode": 0
}
запрос: /entek/api/docs/user_setting/delete
Запрос только для проектов версии 2
Запрос для удаления пользовательских настроек полей журнала. В теле запроса передается JSON структура со следующими параметрами:
обязательно надо передать либо role_id, либо user_id
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"doc_id": 51,
"field_id": 493,
"user_id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: /entek/api/docs/user_setting/update_width
Запрос только для проектов версии 2
Запрос для обновления ширины столбца в пользовательских настройках поля журнала. Метод автоматически обновляет или создает XML структуру с информацией о ширине столбца. В теле запроса передается структура со следующими параметрами:
Если запись уже существует, то обновляется ширина в существующих XML. Если записи не существует, создается новая запись с указанной шириной. При успешном запросе ответ содержит параметр infoCode равный 0, иначе infoCode равен 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"doc_id": 51,
"field_id": 493,
"user_id": 1,
"width": 200
}
Пример ответа:
{
"infoCode": 0
}
запрос: /entek/api/docs/doc_filter/get
Запрос только для проектов версии 2
Запрос на получение списка фильтров для указанного журнала. Фильтр передается в параметре запроса doc с идентификатором журнала. Ответ содержит массив фильтров с информацией о каждом фильтре.
Параметры запроса:
При успешном запросе ответ содержит параметр infoCode равный 0, иначе infoCode равен 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
GET /entek/api/docs/doc_filter/get?doc=51
Пример ответа:
{
"filters": [
{
"id": 1,
"id_doc_field": 493,
"number": 1,
"filter_type": 0,
"filter_active": 1,
"name": "Фильтр",
"filter_xml": "<FILTER_XML Beg=\"ИКЗ\"/>"
},
{
"id": 2,
"id_doc_field": 494,
"number": 2,
"filter_type": 1,
"filter_active": 0,
"name": "Фильтр 2",
"filter_xml": "<FILTER_XML Beg=\"ИКЗ\"/>"
}
],
"infoCode": 0
}
запрос: /entek/api/docs/doc_filter/create
Запрос только для проектов версии 2
Запрос на создание нового фильтра для журнала. В теле запроса передается структура со следующими параметрами:
При успешном запросе ответ содержит параметр id с идентификатором созданного фильтра и infoCode равный 0, иначе infoCode равен 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"doc_id": 51,
"id_doc_field": 493,
"number": 1,
"filter_type": 0,
"filter_active": 1,
"name": "Фильтр",
"filter_xml": "<FILTER_XML Beg=\"ИКЗ\"/>"
}
Пример ответа:
{
"id": 1,
"infoCode": 0
}
запрос: /entek/api/docs/doc_filter/update
Запрос только для проектов версии 2
Запрос на обновление существующего фильтра. В теле запроса передается структура со следующими параметрами:
При успешном запросе ответ содержит параметр infoCode равный 0, иначе infoCode равен 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1,
"number": 2,
"filter_type": 0,
"filter_active": 0,
"name": "Фильтр",
"filter_xml": "<FILTER_XML Beg=\"ИКЗ\"/>"
}
Пример ответа:
{
"infoCode": 0
}
запрос: /entek/api/docs/doc_filter/delete
Запрос только для проектов версии 2
Запрос на удаление фильтра. В теле запроса передается структура со следующим параметром:
При успешном запросе ответ содержит параметр infoCode равный 0, иначе infoCode равен 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/mnemos/ltools_dialogs
Запрос возвращает ответ в формате json, в котором содержатся названия классов и guid шаблонной мнемосхемы из файла KVision/Extensions/lTools.xml.
Пример ответа:
[
{
"class_name": "TRosseti_breaker",
"mnemo_templ_id": "{F6D19E3A-6CCB-43D2-ACF9-25AE3E4F5171}"
},
{
"class_name": "TGroundDisconnector",
"mnemo_templ_id": "{EB8838CE-91C8-4CC2-94A0-C08C8C74FA70}"
}
]
запрос: entek/api/mnemos/<мнемосхема>
мнемосхема - может принимать следующие значения:
Пример ответа:
{
"schemes": [
{
"id": 25,
"name": "START",
"guid": "{21D1D68D-86F4-4F69-B254-543D215FF6C4}"
}
]
}
запрос: entek/api/mnemos/<мнемосхема>/scheme?<параметр>=<значение_1>,...
мнемосхема - может принимать следующие значения:
Пример ответа:
{
"mnemo": {
"id": 25,
"name": "START",
"guid": "{21D1D68D-86F4-4F69-B254-543D215FF6C4}",
"settings": {
"ID": "{21D1D68D-86F4-4F69-B254-543D215FF6C4}",
"Name": "START",
"Comments": "",
"BkColor": "#000000",
"Width": 1300,
"Height": 700
},
"Controls": [
{
"ClassName": "TBBRotateLabel",
"ID": "{6CB72DEA-AF09-4595-8FC3-C8DD621AA8D8}",
"Idx": 0,
"Left": 20,
"Top": 104,
"Width": 208,
"Height": 22,
"Obj": {
"Text": "Элементы мнемосхем",
"Font": {
"Name": "Arial",
"Size": 14,
"Color": "#FFFFFF",
"Bold": true
}
}
}
]
}
}
запрос: /entek/api/mnemos/highlight_elements
Запрос предназначен для подсветки элементов подстанции на мнемосхеме, который должен содержать тело для дальнейшей передачи в EVP. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
При выполнение запроса к топологии модуля Vision в запросе необходимо указать topology в query-параметрах запроса. В таком случае необходимо тело запроса в формате json с параметрами:
Для отключения подсветки достаточно передать mnemo_topic_id и действие на отключение.
Пример запроса:
{
"mnemo_topic_id": "74CF2F8B-365F-4A3B-A8C5-23F62B691823",
"topology_id": "A28A91EE-ECDF-43FB-972E-F3E87E853C29",
"action": 1,
"type": 1
}
Пример ответа:
{
"infoCode": 1,
"infoString": "Подсветка элементов подстанции не разрешена"
}
запрос: entek/api/mnemos/topology/<идентификатор мнемосхемы>
Запрос предназначен для получения файла описывающего топологию мнемосхемы. Идентификатор мнемосхемы передается последним параметром в url запроса. При успешно найденном файле, его содержимое передается в теле запроса в формате text/xml; charset=Windows-1251. Если файл не найден, пустой или его не получилось открыть, то придет ответ с кодом 404.
запрос: entek/api/dialogs/<диалог>
диалог - может принимать следующие значения:
Пример ответа:
{
"dialogs": [
{
"id": 51,
"name": "Основной сервер ССПИ",
"guid": "{45218BF4-B89E-4DCE-A790-8DE6E08728AD}"
}
]
}
запрос: entek/api/ dialogs/<мнемосхема>/scheme?< диалог>=<значение_1>,...
диалог - GUID или Id идентификатор диалога.
Параметры запроса:
| имя параметра | описание |
|---|---|
| include | включает в ответ только указанные разделы мнемосхемы |
| exclude | исключает из ответа указанные разделы мнемосхемы |
параметры include и exclude не могут присутствовать в запросе одновременно
Допустимые значения параметров запроса: name, guid, settings, controls (через ',' или ';').
Пример ответа:
{
"dialog": [
{
"id": 51,
"name": "Основной сервер ССПИ",
"guid": "{45218BF4-B89E-4DCE-A790-8DE6E08728AD}",
"settings": {
"ID": "{45218BF4-B89E-4DCE-A790-8DE6E08728AD}",
"Name": "Основной сервер ССПИ",
"Comments": "",
"BkColor": "#D5D6D1",
"Width": 720,
"Height": 670
},
"Controls": [
{
"ClassName": "TRemShapes",
"ID": "{05D9B156-73EC-464A-9545-F76106CCF0C2}",
"Idx": -1,
"Left": 353,
"Top": 56,
"Width": 300,
"Height": 50,
"Obj": {
"Shape": "jstRectangle",
"Border": {
"Style": "psSolid",
"Color": "#000000",
"Width": 1
},
"Brush": {
"Style": "bsSolid",
"Color": "#FFFFFF"
},
"UseGradient": false
}
}
]
}
]
}
запрос: entek/api/meters/<идентификатор>/readings?<параметр>=<значение_1>,...
идентификатор - идентификатор потребителя в БД.
| имя параметра | описание | допустимые значения |
|---|---|---|
| date | дата-время показаний | запрос возвращает ближайшие показания к началу заданного интервала от указанного даты-времени до текущего времени. |
| since | дата-время начала поиска показаний | запрос возвращает ближайшие показания к концу заданного интервала от указанного даты-времени до текущего времени. |
| include | включает в ответ только указанные значения | 'active', 'reactive' - активная и/или реактивная энергия для электроэнергии и их аналоги для неэлектрических ресурсов, 'direct', 'reverse' - прямое и обратное направление учета (через ',' или ';'). По умолчанию используется параметр &include=active;direct;reverse |
| exclude | исключает из ответа указанные поля | аналогично параметру include |
| tarifs | номера тарифов счетчика | номера тарифов: целые числа 0..8 (0 - круглосуточный) через ','. По умолчанию используется параметр &tarifs=0 |
Пример ответа:
{
"readings": {
"active": {
"direct": {
"tarif0": {
"value": "14805.400085",
"units": "кВтч",
"timestamp": "2022-12-20T00:00:17.0Z"
}
},
"reverse": {
"tarif0": {
"value": "61.799997",
"units": "кВтч",
"timestamp": "2022-12-20T00:00:17.0Z"
}
}
},
"reactive": {
"direct": {
"tarif0": {
"value": "369.000006",
"units": "кВАрч",
"timestamp": "2022-12-20T00:00:17.0Z"
}
},
"reverse": {
"tarif0": {
"value": "43323.599243",
"units": "кВАрч",
"timestamp": "2022-12-20T00:00:17.0Z"
}
}
}
}
}
запрос: entek/api/meters/<идентификатор>/graph/hourly?<параметр>=<значение_1>,...
идентификатор - идентификатор потребителя в БД.
| имя параметра | описание | допустимые значения |
|---|---|---|
| since | дата-время начала графика | формат даты ISO8601 (пример: 2014-12-01T00:00:00.000Z) |
| till | дата-время конца графика | аналогично параметру since |
| include | включает в ответ только указанные значения | 'active', 'reactive' - активная и/или реактивная энергия для электроэнергии и их аналоги для неэлектрических ресурсов, 'direct', 'reverse' - прямое и обратное направление учета (через ',' или ';'). По умолчанию используется параметр &include=active;direct;reverse |
"active+":"3296.2148",
"active-":"0.0000",
"reactive+":"188.0654",
"reactive-":"0.0000"
Пример ответа:
{
"graph": [
{
"from": "2022-12-18T10:00:00.000Z",
"to": "2022-12-18T11:00:00.000Z",
"active+": "2.800000",
"active-": "0.000000",
"reactive+": "0.200000",
"reactive-": "0.500000"
},
{
"from": "2022-12-18T11:00:00.000Z",
"to": "2022-12-18T12:00:00.000Z",
"active+": "2.800000",
"active-": "0.000000",
"reactive+": "0.200000",
"reactive-": "0.500000"
},
{
"from": "2022-12-18T12:00:00.000Z",
"to": "2022-12-18T13:00:00.000Z",
"active+": "2.800000",
"active-": "0.000000",
"reactive+": "0.100000",
"reactive-": "0.400000"
},
{
"from": "2022-12-18T13:00:00.000Z",
"to": "2022-12-18T14:00:00.000Z",
"active+": "2.800000",
"active-": "0.000000",
"reactive+": "0.100000",
"reactive-": "0.400000"
}
],
"legend": {
"active": {
"units": "кВтч",
"title": "электроэнергия активная"
},
"reactive": {
"units": "кВАрч",
"title": "электроэнергия реактивная"
}
}
}
запрос: entek/api/meters/<идентификатор>/graph/half-hourly?<параметр>=<значение_1>,...
Набор параметров и формат ответа аналогичны запросу "График профиля мощности 1 час"
запрос применим только к счетчикам электроэнергии
запрос: entek/api/meters/<идентификатор>/graph/daily?<параметр>=<значение_1>,...
Набор параметров и формат ответа аналогичны запросу "График профиля мощности 1 час"
запрос: entek/api/meters/<идентификатор>/graph/monthly?<параметр>=<значение_1>,...
Набор параметров и формат ответа аналогичны запросу "График профиля мощности 1 час"
запрос: entek/api/meters/<идентификатор>/values?<параметр>=<значение_1>,...
| имя параметра | описание | допустимые значения |
|---|---|---|
| since | дата-время начала поиска значений | запрос возвращает последние (текущие) значения мгновенных параметров после указанного даты-времени |
| include | включает в ответ только указанные значения | список мгновенных параметров (перечисляется через ',' или ';'): P, Pa, Pb, Pc, Q, Qa, Qb, Qc, S, Sa, Sb, Sc - мощности активная, реактивная и полная (линейный и фазные); Ua, Ub, Uc, Ia, Ib, Ic - фазные напряжения и токи; CosFi, CosFia, CosFib, CosFic - коэффициенты мощности (линейный и фазные); F - частота; dT - расхождение часов счетчика и сервера;по умолчанию используется полный набор параметров, применимый к типу ресурса данного счетчика |
Пример ответа:
{
"values": {
"P": {
"title": "Мощность активная суммарная",
"units": "кВт",
"value": "29.080000",
"timestamp": "2022-12-20T00:04:14.0Z"
},
"Pa": {
"title": "Мощность активная, фаза A",
"units": "кВт",
"value": "29.080000",
"timestamp": "2022-12-20T00:04:14.0Z"
},
"Pb": {
"title": "Мощность активная, фаза B",
"units": "кВт",
"value": "0.000000",
"timestamp": "2022-12-20T00:04:14.0Z"
},
"Pc": {
"title": "Мощность активная, фаза C",
"units": "кВт",
"value": "0.000000",
"timestamp": "2022-12-20T00:04:14.0Z"
}
}
}
запрос: entek/api/meters/<идентификатор>/value/<измерение>?<параметр>=<значение>,...
идентификатор - идентификатор потребителя в БД. измерение - один из мгновенных параметров:
| имя параметра | описание | допустимые значения |
|---|---|---|
| since | дата-время начала графика | формат даты ISO8601 (пример: 2014-12-01T00:00:00.000Z) |
| till | дата-время конца графика | аналогично параметру since |
Пример ответа:
{
"data": [
{
"value": "238.039993",
"timestamp": "2022-12-20T00:01:56.0Z"
}
],
"legend": {
"units": "В",
"title": "Фазное напряжение, фаза A"
}
}
запрос: entek/api/meters/<идентификатор>/reading/<измерение>?<параметр>=<значение>,…
идентификатор - идентификатор потребителя в БД.
измерение - один из мгновенных параметров:
| имя параметра | описание | допустимые значения |
|---|---|---|
| since | дата-время начала графика | формат даты ISO8601 (пример: 2014-12-01T00:00:00.000Z) |
| till | дата-время конца графика | аналогично параметру since |
Пример ответа:
{
"data": [
{
"value": "14805.400085",
"timestamp": "2022-12-20T00:00:17.0Z"
}
],
"legend": {
"units": "кВтч",
"title": "Энергия активная прямая со сброса (показания)"
}
}
запрос: entek/api/meters/check_activity
Запрос предназначен для проверки собираемости данных с приборов учета. В параметрах запроса необходимо указать: meterId - идентификатор точки точки учета из базы данных; period - глубина запроса в сутках от текущих (целое число). Последнему элементу массива в ответе соответствуют текущие сутки.
Пример ответа:
{
"link_days": [1, 1, 0, 0]
}
запрос: /entek/api/stations
Ответ содержит в себе список всех баз данных станций.
Пример ответа:
{
"stations": [
{
"name": "WEB SCADA SRV",
"id": 1,
"dbs": [
{
"dbname": "Новая БД 1",
"fileName": "/home/db/kdb.fdb",
"serverName": "localhost"
},
{
"dbname": "Новая БД 2",
"fileName": "/home/db/kdb2.fdb",
"serverName": "localhost"
}
]
}
]
}
запрос: entek/api/saving-params/<идентификатор>
идентификатор - id станции в проекте, содержится в ответе на запрос "Запрос станций".
Пример ответа:
{
"params": [
{
"dbname": "Новая БД 1",
"paramCode": "EnLogic.St1.T222.Grp0.Id271",
"paramId": 1
},
{
"dbname": "Новая БД 1",
"paramCode": "EnLogic.St1.T222.Grp0.Id272",
"paramId": 2
}
]
}
запрос: entek/api/signal/<канал>?<параметр>=<значение_1>,...
канал - код запрашиваемого параметра, содержится в ответе на запрос "Запрос станций". Формат кода: EnLogic.St<номер станции>.T<тип параметра>.Grp<номер группы>.Id<номер параметра>. Для запроса нескольких параметров формат запроса будет без номера параметра: EnLogic.St<номер станции>.T<тип параметра>.Grp<номер группы>. Вместо этого необходимые идентификаторы передаются в параметрах запроса в переменной ids разделенные ';' (ids=1;2;3.). При этом не будет использовано прореживание точек. Также для множественного запроса можно использовать запроса entek/api/signal/many, но при этом необходимо передать в теле запроса перечень необходимых каналов.
| имя параметра | описание | допустимые значения |
|---|---|---|
| date | дата-время начал запрашиваемых данных | дата-время в формате ISO8601. Если присутствует только параметр date, запрашиваются данные с указанного момента времени до конца суток. Если присутствует только параметр till, запрашиваются данные с начала суток до указанного момента времени. Если отсутствуют оба параметра, выполняется запрос с параметром till, равным текущему моменту времени. Допускается указание только времени (начиная с 'T'), в этом случае дата считается равной текущей (если дата отсутствует в обоих параметрах) либо равной дате, указанной явно в одном из параметров |
| till | дата-время конца запрашиваемых данных | аналогично параметру date |
| point | количество требуемых записей | При передачи параметра запрашиваемый интервал разбивается на малые и на каждом производится поиск максимального и минимального значения. Если параметр не передавать, то будет возвращено количество записей ограниченное лимитом |
| utс | сдвиг времени относительно нулевого меридиана | вещественное число в диапазоне -12...+12, определяет часовой пояс времени, указанного в параметрах date и till; если utc равен 0, в запросе и ответе сервера используется единое время UTC; если параметр utc отсутствует, в запросе и ответе используется часовой пояс, указанный в конфигурационном файле. |
| ids | идентификаторы параметров | целое положительное число, перечисляются через ';' |
Пример тела запроса с несколькими параметрами:
{
"channels": [
"EnLogic.St0.T222.Grp0.Id27",
"EnLogic.St0.T222.Grp0.Id28",
"EnLogic.St0.T222.Grp0.Id29"
]
}
Пример ответа с одним параметром:
{
"data": [
{
"v": 7054.796875,
"t": "2023-01-09T08:28:58.990Z",
"q": 255
},
{
"v": 7054.796875,
"t": "2023-01-09T08:28:59.0Z"
},
{
"v": 7126.419434,
"t": "2023-01-09T08:29:09.0Z"
},
{
"v": 7271.118652,
"t": "2023-01-09T08:29:20.0Z"
}
]
}
Пример ответа с несколькими параметрами:
{
"params": [
{
"channel": "EnLogic.St0.T222.Grp0.Id61",
"data": [
{
"t": "2024-10-11T08:39:58.9",
"v": 0.519001
},
{
"t": "2024-10-11T08:39:59.0",
"v": 3.563999
},
{
"t": "2024-10-11T08:40:00.0",
"v": 6.575998
}
]
},
{
"channel": "EnLogic.St0.T222.Grp0.Id63",
"data": [
{
"q": 255,
"t": "2024-10-11T08:39:15.990",
"v": 0
},
{
"q": 43,
"t": "2024-10-11T08:39:46.12",
"v": 0
},
{
"t": "2024-10-11T08:39:47.0",
"v": 0.5015
}
]
}
]
}
q это quality — признак качества, может принимать следующие значения:
Если значение q < 5, то оно достоверное, если q >=5 — такое значение недостоверное.
запрос: /entek/api/signal_export
Запрос для получения истории параметра в формате html или csv. В запросе необходимо передать параметры запроса:
| имя параметра | описание | допустимые значения |
|---|---|---|
| date | дата-время начал запрашиваемых данных | дата-время в формате ISO8601. Если присутствует только параметр date, запрашиваются данные с указанного момента времени до конца суток. Если присутствует только параметр till, запрашиваются данные с начала суток до указанного момента времени. Если отсутствуют оба параметра, выполняется запрос с параметром till, равным текущему моменту времени. Допускается указание только времени (начиная с 'T'), в этом случае дата считается равной текущей (если дата отсутствует в обоих параметрах) либо равной дате, указанной явно в одном из параметров |
| till | дата-время конца запрашиваемых данных | аналогично параметру date |
| utс | сдвиг времени относительно нулевого меридиана | вещественное число в диапазоне -12...+12, определяет часовой пояс времени, указанного в параметрах date и till; если utc равен 0, в запросе и ответе сервера используется единое время UTC; если параметр utc отсутствует, в запросе и ответе используется часовой пояс, указанный в конфигурационном файле. |
| type | тип экспорта | Допустимые значения: html и csv |
Запрашиваемые параметры описываются в теле запроса в формате json. Перечень параметров передается в массивом в переменной channels, каждый элемент массива состоит из структуры с переменной channel, в которой указывается канал параметра, и cipher, в которой указывается название параметра для отображения в отчете.
Пример тела запроса:
{
"channels": [
{
"channel": "EnLogic.St0.T222.Grp0.Id27",
"cipher": "Мощность"
}
]
}
При типе экспорта csv приходит ответ, который содержит заголовки Content-Type: text/csv и Content-Disposition: attachment; filename="data.csv, а в теле предается содержание файла в кодировке UTF-8. При экспорте html тело страницы передается в кодировке WIN-1251.
запрос: /entek/api/events/config
GET запрос для получения содержания файла KEvents.json из проекта.
запрос: /entek/api/events/popup_list_config
GET запрос для получения настроек всплывающего списка событий из проекта, которые хранятся в файле Settings.xml. Тело ответа передается в формате xml и содержит целиком ноду EvsListPopup. Если нода не найдена или пустая, то тело ответа имеет вид <EvsListPopup />.
запрос: /entek/api/events/groups
GET запрос, в ответе на который передается список всех категорий и групп событий.
Пример ответа:
{
"categories": [
{
"name": "Сервер",
"BkColor": "#050000",
"Font": {
"Italic": false,
"Bold": false,
"Underline": false,
"Color": "#080000"
},
"groups": [
{
"name": "STARTSTOPGROUP",
"descrp": "СДД - запуск/останов",
"BkColor": "#ff8080",
"Font": {
"Italic": false,
"Bold": false,
"Underline": false,
"Color": "#080000"
}
},
{
"name": "DASERVERGROUP",
"descrp": "СДД - лог работы",
"BkColor": "#050000",
"Font": {
"Italic": false,
"Bold": false,
"Underline": false,
"Color": "#080000"
}
},
{
"name": "ENLOGICMNGR-IEC",
"descrp": "Библиотека EnLogicMngr - ПУ МЭК",
"BkColor": "#050000",
"Font": {
"Italic": false,
"Bold": true,
"Underline": false,
"Color": "#000080"
}
}
]
}
]
}
запрос: entek/api/events/<идентификатор>?<параметр>=<значение_1>,...
GET запрос для получения событий по названию группы событий. В качестве идентификатора в строке запроса передается название группы событий, которое содержится в ответе на запрос всех групп событий. Также в запросе передаются query-параметры:
| имя параметра | описание |
|---|---|
| date | время начала интервала запрашиваемых данных |
| till | время окончания интервала запрашиваемых данных |
Пример ответа:
{
"events": [
{
"groupId": 3,
"clientId": "10.0.2.15",
"eventTimestamp": "2022-12-21T11:11:46.778Z",
"eventText": "Запуск модуля настройки баз данных технологических параметров",
"number": 710,
"userName": "admin",
"eventType": 0
},
{
"groupId": 3,
"clientId": "10.0.2.15",
"eventTimestamp": "2022-12-21T11:11:52.213Z",
"eventText": "Закрытие модуля настройки баз данных технологических параметров",
"number": 711,
"userName": "admin",
"eventType": 0
}
]
}
запрос: /entek/api/events_filtered
Запрос для получения событий по фильтрам, которые передаются в теле запроса в формате JSON. Тело запроса может содержать следующие параметры:
| параметр | назначение | приоритет |
|---|---|---|
| db_guids | guid БД, из которой будут запрашиваться события | при отсутствии параметра или указании неверного guid данные берутся из БД назначенной по умолчанию |
| groups | массив с названиями групп событий | обязательно задать |
| client_ids | массив айпи адресов | необязательный |
| station_id | номер станции | необязательный параметр |
| controllers | массив целочисленных идентификаторов контроллеров | необязательный параметр |
| channels | массив каналов указанных строками (["EnLogic.St1.T222.Grp0.Id0", "EnLogic.St1.T222.Grp0.Id1"]) |
необязательный параметр |
| time_begin | время начала запрашиваемого интервала | при отсутствии интервала задать last_evt_count |
| time_end | время окончания запрашиваемого интервала | при отсутствии интервала задать last_evt_count |
| last_evt_count | количество последних событий | необязательный параметр |
| sort_mode_asc | логический параметр использования сортировки | необязательный параметр |
| actual_alarms | логический параметр передачи актуальных алармов | необязательный параметр |
| filters | массив идентификаторов пользовательских фильтров из БД параметров | необязательный параметр |
| columns | список названий стандартных полей, которые должны содержаться в ответе | При отсутствии параметра предаются все допустимые параметры |
| attr_columns | идентификаторы аттрибутов из БД параметров | необязательный параметр |
| evt_types | массив целочисленных идентификаторов типов событий | необязательный параметр |
Допустимые значения для параметра columns и их соответствие полям БД:
group_name -> from GROUP_ID JOIN GROUP_LIST.GROUP_NAME
client_id -> CLIENT_ID
event_time -> EVENT_DATE_UTC + EVENT_TIME_UTC
event_text -> EVENT_TEXT
event_number -> NUMBER
event_type -> EVENT_TYPE
comment -> COMMNENTS
user -> USER_NAME
station_id -> STATIONID
group_id -> GROUPID
passp_type -> PASSPTYPE
passp_id -> PASSPID
passp_time -> PASSPTIME
passp_val -> ALARM_VAL
alarm_priority -> ALARM_PRIORITY
alarm_ack -> ALARM_ACK
alarm_ack_user -> ALARM_ACK_USER
alarm_ack_time -> ALARM_ACK_TIME
alarm_end_time -> ALARM_END_TIME
alarm_set_val -> ALARM_SETTINGS_VALUE
passp_cipher -> DB Params или из xml конфигурации
passp_name -> DB Params или из xml конфигурации
object_name -> DB Params или из xml конфигурации
Запрос выдает ограниченное количество событий (по умолчнанию 1000 событий). Для получения следующего пакета событий используется Запрос следующего пакета событий. После получения всех событий рекомендуется выполнить запрос Остановка запроса пакетов событий. Каждый пакет имеет флаг got_all_data, который равняется true при получении последних данных.
Ответ содержит параметр events, в котором передается массив с событиями. Также может содержаться параметр params, в котором передается массив с описанием параметров, заданными полями passpcipher, passp_name, object_name и значения переданных атрибутов, название переменных атрибутов имеет форму **"attr<идентификатор атрибута>"**.
Примеры тела запроса:
{
"db_guids": ["1111"],
"groups": ["ALARMSMEDIUMHIGH", "DASERVERGROUP"],
"station_id": 0,
"controllers": [0],
"time_begin": "2023-12-29T00:00:00.000Z",
"time_end": "2023-12-29T17:00:00.000Z"
}
{
"db_guids": ["1111"],
"groups": ["ALARMSMEDIUMHIGH", "DASERVERGROUP"],
"station_id": 0,
"controllers": [0],
"last_evt_count": 10,
"columns": ["group_name", "event_time", "event_text"]
}
Пример ответов:
{
"events": [
{
"group_name": "DASERVERGROUP",
"client_id": "127.0.1.1",
"event_time": "2024-01-09T06:01:32",
"event_text": "StopMessagesAntraks",
"event_number": "701",
"event_type": "0",
"station_id": "0",
"passp_type": "222",
"group_id": "0",
"passp_id": "0"
},
{
"group_name": "DASERVERGROUP",
"client_id": "127.0.1.1",
"event_time": "2024-01-09T06:01:32",
"event_text": "RTP - SUCCESSFULLY call STOPPROCESS",
"event_number": "696",
"event_type": "0",
"station_id": "0",
"passp_type": "222",
"group_id": "0",
"passp_id": "0"
}
]
}
{
"events": [
{
"event_time": "2023-12-29T11:50:58",
"event_text": "Переключение аларм выше среднего - Отключено",
"passp_time": "2023-12-29T11:50:58"
},
{
"event_time": "2023-12-29T11:50:50",
"event_text": "Переключение аларм выше среднего - Включено",
"passp_time": "2023-12-29T11:50:50"
}
],
"params": [
{
"station_id": 0,
"group_id": 0,
"passp_id": 4,
"passp_type": 2,
"passp_cipher": "ТС аларм выше среднего",
"object_name": "Генератор демо-данных",
"passp_name": "Генератор демо-данных.Задача 1.Для тестирования алармов.ТС аларм выше среднего",
"attr_1": "Тестовое значение"
}
]
}
запрос: /entek/api/get_next_events GET запрос требующий авторизацию. Предназначен для получения следующего пакета событий. Если запрос не выполнялся более 30 секунд, то необходимо повторно выполнить Запрос событий с применением фильтров. Успешный ответ аналогичен Запрос событий с применением фильтров, а также содержит в себе параметр infoCode (при 0 запрос выполнен успешно, при 1 были ошибки) и infoString (содержится в ответе, если infoCode не равен 0).
запрос: /entek/api/stop_get_events
GET запрос требующий авторизацию. Предназначен для прекращения получения пакетов событий. Ответ содержит в себе параметр infoCode (при 0 запрос выполнен успешно, при 1 были ошибки) и infoString (содержится в ответе, если infoCode не равен 0).
Пример ответа:
{
"infoCode": 1,
"infoString": "Сессия событий не найдена"
}
запрос: /entek/api/events_delete
Запрос для удаления событий. В теле запроса может содержаться несколько переменных:
group_name/group_id - название группы или идентификатор группы, может присутствовать только один параметр. Если эти данные не передаются, то удаление применяется ко всем группам.start_time - начало интервала для удаления включительно, передается в формате ISO в UTC. Если передается начало интервала без end_time, то удаляются все события после.end_time - конец интервала для удаления включительно, передается в формате ISO в UTC. Если передается конец интервала без начала, то удаляются все события, которые были ранее.delete_all - флаг удаления всех событий. Если передается флаг удаления всех событий со значением true, то все остальные условия не применяются, используется только для очистки БД событий, для удаления всех событий группы необходимо передать ее название или идентификатор.Пример запроса:
{
"group_name": "REST_EVENTS",
"start_time": "2026-04-17T00:40:00.000",
"end_time": "2026-04-21T07:00:00.000"
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/params_db/param_info
Запрос для получения информации о параметре из БД параметров. Необходимо передать тело, которе будет перенаправлено в EVP для получения структуры адреса параметра и последующего запроса в БД для получения информации. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Для получения информации из БД тело запроса должно содержать следующие параметры:
Пример запроса:
{
"mnemo_topic_id": "74CF2F8B-365F-4A3B-A8C5-23F62B691823",
"object_id": "48446A95-E881-4C1C-8E2C-11E9156D5C4F",
"object_idx": 1
}
Пример ответа:
{
"infoCode": 0,
"station_name": "local",
"group_name": "group",
"full_path": "path",
"value_type": 0,
"param_type": 1,
"cipher": "cipher",
"name": "name",
"unit": "kVt",
"vpu": "90",
"npu": "10",
"vau": "80",
"nau": "20",
"up_border": "100",
"down_border": "0",
"user_attr_list": [
{
"name": "name",
"value": "value"
}
]
}
запрос: entek/api/params_db/object_params
Запрос для получения информации о параметре из БД параметров. Необходимо передать тело, которе будет перенаправлено в EVP для получения структуры адреса параметров и последующего запроса в БД для получения информации. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Для получения информации из БД тело запроса должно содержать следующие параметры:
Пример запроса:
{
"mnemo_topic_id": "74CF2F8B-365F-4A3B-A8C5-23F62B691823",
"object_id": "48446A95-E881-4C1C-8E2C-11E9156D5C4F",
"object_idx": 1
}
Пример ответа:
{
"infoCode": 0,
"params": [
{
"stn_id": 0,
"grp_id": 0,
"psp_id": 0,
"psp_type": 0,
"station_name": "local",
"group_name": "group",
"full_path": "path",
"value_type": 0,
"param_type": 1,
"cipher": "cipher",
"name": "name",
"unit": "kVt",
"vpu": "90",
"npu": "10",
"vau": "80",
"nau": "20",
"up_border": "100",
"down_border": "0",
"user_attr_list": [
{
"name": "name",
"value": "value"
}
]
}
]
}
запрос: entek/api/params_db/update_setpoints
Запрос для обновления уставок параметра. Необходимо передать тело, которе будет перенаправлено в EVP для обновления уставок. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки. Также для записи уставок пользователю необходимы права для аналогового управления.
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/params_db/attr_name/<_id>
Запрос для получения имени пользовательского атрибута. В качестве _id передается идентификатор атрибута.
Пример ответа:
{
"attr_name": "Пользовательский атр"
}
запрос: entek/api/params_db/user_tree
Запрос для получения пользовательского дерева для дальнейшей работы с фильтрами.
Пример ответа:
[
{
"id": 1,
"name": "Корень",
"filter": false
},
{
"id": 5,
"name": "фывф",
"filter": false,
"items": [
{
"id": 6,
"name": "ааааа",
"filter": false,
"items": [
{
"id": 2,
"name": "Контроллер 0",
"filter": true
},
{
"id": 3,
"name": "Контроллер 3",
"filter": true
}
]
},
{
"id": 4,
"name": "РЗА",
"filter": true
}
]
}
]
запрос: entek/api/dcontrol?level=<num>
Запрос для дискретного управления, передается с параметром level - уровень управления. Для выполнения команды у пользователя должны быть права для дискретного управления необходимого уровня. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"infoCode": 1,
"infoString": "Управление не разрешено"
}
запрос: entek/api/acontrol
Запрос для аналогового управления. Для выполнения команды у пользователя должны быть права для аналогового управления. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/alarms/config/priority/
Запрос для получения информации о настройке алармов по их приоритету, который передается последним значением в запросе (num). В переменной sound_data содержится звуковой файл в кодировке Base64.
Пример ответа:
{
"sound_type": 2,
"sound_name": "alarm_001.wav",
"sound_data": "data",
"sound_repeat": 10,
"sound_pause": 10,
"back_color": "#808080",
"alarm_jump_mnemo": "{21D1D68D-86F4-4F69-B254-543D215FF6C4}"
}
запрос: entek/api/alarms/ack_all
Запрос для квитирования всех алармов, который должен содержать тело для дальнейшей передачи в EVP. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/alarms/set_ack_marks
Запрос для квитирования алармов в базе данных. Передается один или несколько алармов для них выставляется признак квитирования, время и пользователь, который выполнил запрос. В запросе передается время параметра, номер станции, тип параметра, идентификатор параметра, группа паараметра.
Пример запроса:
[
{
"event_time": "2025-01-21T13:23:00.669Z",
"station_id": 0,
"passp_type": 222,
"passp_id": 1,
"group_id": 0
},
{
"event_time": "2025-01-22T08:00:55.582Z",
"station_id": 1,
"passp_type": 222,
"passp_id": 0,
"group_id": 0
}
]
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/image/<image_name>
Запрос для получения изображений из папки проекта, название изображение передается последним параметром в запросе. Поиск производится в папке KVision/Images, если там нет, то в KVision/Animate. В ответе передается файл в кодировке Base64 и его название.
Пример ответа:
{
"file_name": "001.jpeg",
"data": "data"
}
запрос: entek/api/sign/get_list
Запрос для получения всех плакатов из папки проекта. Анализ производится в в файле KVision/Signs/Signs.xml. Ответ передается массивом в переменной signList, если файл не найден или плакатов нет, то массив будет пустой.
Пример ответа:
{
"signList": [
{
"autoSize": true,
"fileName": "Rabota_Na_Linii.bmp",
"highPriority": true,
"id": "{B0D20A30-E99F-4BC1-B1C0-714C41CE7E98}",
"name": "1. Работа на линии",
"transp": false
},
{
"autoSize": true,
"fileName": "Rabotaut_Ludi.bmp",
"id": "{DFFA5C19-5C13-472F-8456-00910DC5EC1F}",
"name": "2. Работают люди",
"transp": false
}
]
}
запрос: entek/api/sign/get_image
Запрос для получения изображений из папки проекта по названию файла, которое передается в теле запроса в переменной file_name. Поиск производится в папке KVision/Signs. В ответе передается файл в кодировке Base64 и идентификатор плаката.
Пример запроса:
{
"file_name": "Зашунтировано.bmp"
}
Пример ответа:
{
"sign_id": "Зашунтировано.bmp",
"data": "<файл в кодировке Base64>"
}
запросы:
Запросы предназначены для добавления, редактирования и удаления плакатов, которые должен содержать тело для дальнейшей передачи в EVP. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки. Для данных запросов пользователь должен быть с правами администратора или иметь разрешение на работу с плакатами, которое можно установить в модуле Пользователи.
Пример ответа:
{
"infoCode": 1,
"infoString": "Добавление плаката не разрешено"
}
запрос: entek/api/switch_blanks/get_list
Запрос получения списка бланков. В теле запроса в формате json передается идентификаторы мнемосхемы и объекта мнемосхемы. В ответе передается массив бланков в переменной switch_blanks. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"mnemo_id": "{74CF2F8B-365F-4A3B-A8C5-23F62B691823}",
"mnemo_obj_id": "{0967A306-B06A-4BC4-861C-AB9CF59DFBEF}"
}
Пример ответа:
{
"mnemo_id": "{F5F6C1FC-668C-4AF1-A04A-2511305FDF78}",
"mnemo_obj_id": "{EEE41D05-929A-44A1-B71E-9D77B6E7D718}",
"switch_blanks": [
{
"id": 3,
"blank_number": 0,
"blank_name": "Новый бланк",
"is_ready": 1,
"save_report": 1,
"last_edit_time": "2026-03-05T10:23:43",
"last_edit_user": "admin",
"exec_count": 4,
"last_exec_time": "2026-03-13T15:52:09",
"last_exec_user": "admin"
},
{
"id": 4,
"blank_number": 1,
"blank_name": "Типовой бланк переключений № 1",
"is_ready": 1,
"save_report": 1,
"last_edit_time": "2026-03-13T16:00:07",
"last_edit_user": "admin",
"exec_count": 2,
"last_exec_time": "2026-03-13T16:00:53",
"last_exec_user": "admin",
"purpose": "тест",
"conditions": "1. Состояние исходной схемы и устройств РЗА: \r\n2. Выполнение переключений с использованием АРМ или терминалов: АРМ\r\n3. Наличие наведенного напряжения (указывается для ВЛ, КВЛ): -\r\n4. Возможность возникновения феррорезонанса: -\r\n5. Состояние оперативной блокировки: исправна\r\n",
"users_checked": {
"users": [
{
"name": "Иван",
"position": "Начальник"
}
]
},
"users_approved": {
"users": [
{
"name": "Петр",
"position": "Руководитель"
}
]
}
}
],
"infoCode": 0
}
запрос: entek/api/switch_blanks/get_actions/<идентификатор бланка>
Запрос получения списка действий бланка. В строке запроса передается идентификатор бланка. В ответе сожержится массив действий в переменной actions. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"blank_id": 1,
"actions": [
{
"id": 2,
"action_name": "Новое действие",
"action_type": 1,
"action_number": 0,
"add_to_report": 1,
"param_station": 0,
"param_type": 0,
"param_group": 0,
"param_id": 0,
"param_val": 1,
"wait_time_sec": null,
"user_task": null,
"sing_set": null,
"sign_mnemo_id": null,
"sign_mnemo_obj_id": null,
"sign_type": null,
"ka_mnemo_id": null,
"ka_tp_id": null,
"ka_val": null
},
{
"id": 3,
"action_name": "Новое действие 2",
"action_type": 1,
"action_number": 1,
"add_to_report": 1,
"param_station": 0,
"param_type": 0,
"param_group": 0,
"param_id": 0,
"param_val": 1,
"wait_time_sec": null,
"user_task": null,
"sing_set": null,
"sign_mnemo_id": null,
"sign_mnemo_obj_id": null,
"sign_type": null,
"ka_mnemo_id": null,
"ka_tp_id": null,
"ka_val": null
}
],
"infoCode": 0
}
запрос: entek/api/switch_blanks/run_blank
При запросе запуска бланка тело запроса передается в EVP. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки. При выполнении запроса сохраняется событие в базу данных.
Пример ответа:
{
"infoCode": 1,
"infoString": "Нет прав на запуск бланка"
}
запрос: entek/api/switch_blanks/complete_blank
При запросе завершения бланка бланка тело запроса передается в EVP. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/switch_blanks/blank_reports/<идентификатор бланка>
Запрос получения списка всех отчетов бланка без содержания самого отчета. В строке запроса передается идентификатор бланка. В теле ответа содержится иднетификатор бланка и массив отчетов в перемнной reports, который содержит в себе идентификатор отчета id, время формирования timestamp, пользователя username и результат выполнения result. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"blank_id": 1,
"reports": [
{
"id": 1,
"timestamp": "2025-11-25T09:18:21",
"username": "admin",
"result": 1
}
],
"infoCode": 0
}
запрос: entek/api/switch_blanks/report
Запрос получения отчета бланка. В теле запроса передается время отчета и идентификатор бланка. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"blank_id": 1,
"report_dt": "2025-11-25T09:18:21Z"
}
Пример ответа:
{
"blank_id": 1,
"timestamp": "2025-11-25T09:18:21",
"username": "admin",
"result": 1,
"report": "Результат выполнения",
"infoCode": 0
}
запрос: entek/api/das/stations/status
Запрос только для проектов версии 2
Запрос получения состояния станций предоставляет информацию о доступности для каждой станции для основной и резервной. Возможно запросить статус конкретной станции указав в параметрах запроса системный адрес станции в переменной st_num. При успешном запросе ответ содержит массив станций в переменной stations, параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"stations": [
{
"id": 2,
"station_num": 0,
"udp_port": 25923,
"server_ip_1": "127.0.0.1",
"status_1_code": 0,
"server_ip_2": "",
"status_2_code": 1,
"status_2_data": "Не задан ip адрес станции"
}
],
"infoCode": 0
}
запрос: entek/api/das/controller/status
Запрос только для проектов версии 2
Запрос получения состояния контроллера. В теле запроса передается системный адрес станции и контроллера. При успешном запросе ответ содержит параметр state с информацией о статусе контроллера, infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"st_sys": 0,
"ctrl_sys": 0
}
Пример ответа:
{
"state": {
"Id": 0,
"Link": false,
"LinkDelay": false,
"IP": "127.0.0.1",
"UseSyncTime": false,
"LastDataTime": "2026-09-03T23:04:15",
"LinkLostCount": 0,
"LinkQuality": 0,
"PartialFail": true,
"IEC_ASDUwithoutTS": 0,
"IEC_ASDUwithTS": 0,
"IEC_ParamsWithoutTS": 0,
"IEC_ParamsWithTS": 0,
"Logging": false,
"SSDParamsQuanTS": 1131,
"SSDParamsQuanTU": 164,
"SSDParamsQuanTI": 499
},
"infoCode": 0
}
Запросы для конфигурирования доступны только для пользователей с правами администратора. При этом исполнительный файл Rest API должен находиться в одной директории с модулем Оркестратор.
запрос: entek/api/config/orch/get_config
Запрос глобальных настроек модуля Оркестратор. Если не заданы переменные restart_type, restart_delay или auto_start, то они не добавляются в ответ.
Пример ответа:
{
"debug_log": true,
"http_port": 8847,
"vars": [
{
"id": "prj",
"value": "/home/entek/SCADA/main.epr"
},
{
"id": "src",
"value": "/opt/entek/bin/"
},
{
"id": "ascue",
"value": "noascue"
}
],
"restart_type": "always",
"restart_delay": 30,
"auto_start": false
}
запрос: entek/api/config/orch/update_config
Запрос полностью перепысывает конфигурационный файл модуля Оркестратор. Если переменные глобвальные настройки vars, restart_type, restart_delay или auto_start не надо задавать, то их можно не добавлять в запрос. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
При изменении настроек порта модуль Оркестратор необходимо перезапустить
Пример запроса:
{
"debug_log": true,
"http_port": 8847,
"vars": [
{
"id": "prj",
"value": "/home/entek/SCADA/main.epr"
},
{
"id": "src",
"value": "/opt/entek/bin/"
},
{
"id": "ascue",
"value": "noascue"
}
],
"restart_type": "always",
"restart_delay": 30,
"auto_start": false
}
Пример ответа:
{
"infoCode": 1,
"infoString": "Добавление плаката не разрешено"
}
запрос: entek/api/config/orch/get_units
Ответ содержит все юниты, с которыми работает модуль Оркестратор. Опционально у юнитов могут быть собственные настройки в переменных restart_type, restart_delay или auto_start.
Пример ответа:
{
"units": [
{
"filename": "entek-daserver.orch",
"name": "DAS-сервер",
"cmd": "$src$daserver $prj$ stationid=1 noascue -daemon"
},
{
"filename": "entek-enlogic.orch",
"name": "Enlogic",
"cmd": "$src$enlogic/enlogic"
},
{
"filename": "entek-rest.orch",
"name": "REST-сервер",
"cmd": "$src$rest-srv $prj$ -daemon",
// опционально
"restart_type": "always",
"restart_delay": 30,
"auto_start": false
}
]
}
запрос: entek/api/config/orch/create_unit
Запрос содержит тело с описанием юнита. Имя файла должно обязательно начинаться с entek- и иметь расширение .orch, чтобы модуль с ним работал. Если необходимо указать собственные настройки, отличающие от глобальных, то можно добавить переменные restart_type, restart_delay или auto_start. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"filename": "entek-rest.orch",
"name": "REST-сервер",
"cmd": "$src$rest-srv $prj$ -daemon",
// опционально
"restart_type": "always",
"restart_delay": 30,
"auto_start": false
}
Пример ответа:
{
"infoCode": 1,
"infoString": "Файл с таким именем уже существует"
}
запрос: entek/api/config/orch/update_unit
Запрос содержит тело с описанием юнита. Можно изменить все настройки, кроме имени файла. Файл юнит будет полностью переписан при применении новых настроек. Если необходимо указать собственные настройки, отличающие от глобальных, то можно добавить переменные restart_type, restart_delay или auto_start. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"filename": "entek-rest.orch",
"name": "REST-сервер",
"cmd": "$src$rest-srv $prj$ -daemon",
// опционально
"restart_type": "always",
"restart_delay": 30,
"auto_start": false
}
Пример ответа:
{
"infoCode": 1,
"infoString": "Нет такого файла юнита"
}
запрос: entek/api/config/orch/delete_unit
Запрос для удаления файлов юнитов. В теле запроса передается имя файла для удаления. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"filename": "entek-rest.orch"
}
Пример ответа:
{
"infoCode": 1,
"infoString": "Нет такого файла юнита"
}
Запрос только для проектов версии 2
запрос: entek/api/config/global_sets/get?key=<ключ>
Запрос на получение значения глобального параметра по его ключу.
Параметры запроса:
key - уникальный ключ параметра.Пример ответа:
{
"config_value": "значение_параметра",
"infoCode": 0
}
Запрос только для проектов версии 2
запрос: entek/api/config/global_sets/set
Запрос на установку глобального параметра. Параметры передаются в теле запроса в формате JSON. Если в базе данных ключ параметра отсутствует, то создается новая запись.
Параметры тела запроса:
config_key - ключ существующего параметра.config_value - новое значение параметра.Пример запроса:
{
"config_key": "key",
"config_value": "value"
}
Запрос только для проектов версии 2
запрос: entek/api/config/global_sets/delete?key=<ключ>
Запрос на удаление глобального параметра по его ключу.
Параметры запроса:
key - ключ удаляемого параметра.Пример ответа:
{
"infoCode": 0
}
Запросы для конфигурирования станций доступны только для пользователей с правами администратора.
запрос: entek/api/config/station/get_all
Запрос только для проектов версии 2
Ответ содержит все станции в проекте. При успешном запросе ответ также содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"infoCode": 0,
"stations": [
{
"client_ip_1": "127.0.0.1",
"client_ip_2": "127.0.0.1",
"station_num": 10,
"description": "Станция по умолчанию",
"id": 1,
"mode": "single",
"name": "Станция ЭНТЕК",
"port": 25900,
"server_ip_1": "127.0.0.1",
"server_ip_2": "127.0.0.1"
}
]
}
запрос: entek/api/config/station/get
Запрос только для проектов версии 2
Запрос для получения станции, обязательно надо передать один из параметров запроса, stId идентификатор станции или stNum номер станции. Ответ содержит информацию о станции, в строке запроса передается идентификатор конкретной станции. При успешном запросе ответ также содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"infoCode": 0,
"station": {
"client_ip_1": "127.0.0.1",
"client_ip_2": "127.0.0.1",
"id": 10,
"description": "Станция по умолчанию",
"station_num": 1,
"mode": "single",
"name": "Станция ЭНТЕК",
"port": 25900,
"server_ip_1": "127.0.0.1",
"server_ip_2": "127.0.0.1"
}
}
запрос: entek/api/config/station/create
Запрос только для проектов версии 2
Запрос содержит тело с описанием станции. При успешном запросе ответ содержит id новой станции, параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Для запросов необходимо заранее задать уникальный номер станции. По умолчанию при создании проекта создается дефолтная станция с номером 10.
Режим работы передается в переменной mode, доступно только три режима single, reserve, duplicate. Если получен неизвестынй режим, то по умолчанию установится режим single
Пример запроса:
{
"station_num": 1,
"name": "Тест станция",
"description": "",
"port": 0,
"server_ip_1": "127.0.0.1",
"server_ip_2": "",
"client_ip_1": "127.0.0.1",
"client_ip_2": "",
"mode": "single"
}
Пример ответа:
{
"id": 10,
"infoCode": 0
}
запрос: entek/api/config/station/update
Запрос только для проектов версии 2
Запрос содержит тело с описанием станции, обязательно должен присутствовать id станции. Секция станции в файле будет полностью переписан при применении новых настроек. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Режим работы передается в переменной mode, доступно только три режима single, reserve, duplicate. Если получен неизвестынй режим, то по умолчанию установится режим single
Пример запроса:
{
"db_id": 1,
"id": 1,
"name": "Тест станция",
"description": "",
"port": 0,
"server_ip_1": "127.0.0.1",
"server_ip_2": "",
"client_ip_1": "127.0.0.1",
"client_ip_2": "",
"mode": "single"
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/station/delete
Запрос только для проектов версии 2
Запрос для удаления станции. В теле запроса передается id станции для удаления. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"db_id": 1
}
Пример ответа:
{
"infoCode": 0
}
Запросы для конфигурирования пользователей доступны только для пользователей с правами администратора.
запрос: entek/api/config/users/permissions
Запрос только для проектов версии 2
Ответ содержит разрешения, которые доступны в дистрибутиве, передается содержимое файла в формате xml.
запрос: entek/api/config/users/my_permissions
Запрос только для проектов версии 2
Запрос для получения прав текущего пользователя, определяется по токену сессии. Ответ содержит признак админа и перечень разрешений.
Пример запроса:
{
"is_admin": 1,
"permissions": {
"apps": [
{
"act": ["run", "DC", "AC"],
"app": "vision"
}
]
},
"infoCode": 0
}
запрос: entek/api/config/users/get_users_groups
Запрос только для проектов версии 2
Ответ содержит список групп и ролей. Все группы передаются в массиве groups, дополнительно передается список всех ролей в массиве roles. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"groups": [
{
"group_id": 1,
"group_name": "Администраторы",
"role_id": 1
}
],
"roles": [
{
"id": 1,
"name": "Администратор",
"is_admin": 1
},
{
"id": 2,
"name": "Гость",
"is_admin": 0
}
],
"infoCode": 0
}
запрос: entek/api/config/users/get_group_users/<идентификатор группы>
Запрос только для проектов версии 2
В строке запроса передается идентификатор группы. В ответе содержится все пользователи группы с информацией о них. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"users": [
{
"id": 1,
"login": "ADMIN",
"last_name": null,
"first_name": null,
"middle_name": null,
"username": "Администратор",
"job_title": null,
"department": null,
"email": null,
"phone_number": null,
"comment": "Пользователь созданный по умолчанию",
"group_id": 1,
"is_blocked": 0,
"last_enter_time": null,
"last_enter_ip": null,
"last_bad_enter_time": null,
"last_bad_enter_ip": null,
"block_enter_count": 0,
"last_psw_change": null,
"psw_keep_time": null
},
{
"id": 4,
"login": "TESTU2",
"last_name": "Тестов",
"first_name": "Тест",
"middle_name": "Тестович",
"username": "Пользователь тест",
"job_title": "Тестировщик",
"department": "123123",
"email": "test@test",
"phone_number": "+7777777",
"comment": "Тестовый пользователь",
"group_id": 1,
"is_blocked": 0,
"last_enter_time": null,
"last_enter_ip": null,
"last_bad_enter_time": null,
"last_bad_enter_ip": null,
"block_enter_count": 0,
"last_psw_change": "2026-01-16T17:30:27",
"psw_keep_time": 1
}
],
"infoCode": 0
}
запрос: entek/api/config/users/get_user/<идентификатор пользователя>
Запрос только для проектов версии 2
В строке запроса передается идентификатор пользователя. В ответе содержится вся информация о пользователе. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1,
"login": "ADMIN",
"last_name": null,
"first_name": null,
"middle_name": null,
"username": "Администратор",
"job_title": null,
"department": null,
"email": null,
"phone_number": null,
"comment": "Пользователь созданный по умолчанию",
"group_id": 1,
"is_blocked": 0,
"last_enter_time": null,
"last_enter_ip": null,
"last_bad_enter_time": null,
"last_bad_enter_ip": null,
"block_enter_count": 0,
"last_psw_change": null,
"psw_keep_time": null,
"group_name": "Администраторы",
"role_id": 1,
"role_name": "Администратор",
"is_admin": 1,
"permissions": {
"apps": [
{
"act": ["run", "DC", "AC"],
"app": "vision"
}
]
},
"infoCode": 0
}
запрос: entek/api/config/users/create_user
Запрос только для проектов версии 2
В запроссе передается тело в формате json с информацией о новом пользователе. Обязательно должен быть задан пароль, группа и логин. Ответ содержит идентификатор нового пользователя. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"login": "testu",
"password": "123",
"last_name": "Тестов",
"first_name": "Тест",
"middle_name": "Тестович",
"username": "Пользователь тест",
"job_title": "Тестировщик",
"department": "123123",
"email": "test@test",
"phone_number": "+7777777",
"comment": "Тестовый пользователь",
"pwd_keep_period": 1,
"group_id": 1
}
Пример ответа:
{
"id": 2,
"infoCode": 0
}
запрос: entek/api/config/users/update_user
Запрос только для проектов версии 2
В запроссе передается тело в формате json с настройками пользователя. Переписываются все настройки кроме пароля. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2,
"last_name": "Тестов",
"first_name": "Тест",
"middle_name": "Тестович",
"username": "Пользователь тест",
"job_title": "Тестировщик",
"department": "123123",
"email": "test@test",
"phone_number": "+7777777",
"comment": "Тестовый пользователь",
"pwd_keep_period": 1,
"group_id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/users/delete_user
Запрос только для проектов версии 2
Для удаления пользователя в теле запроса передается его идентификатор. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/users/change_psw
Запрос только для проектов версии 2
Для сменя пароля в теле запроса передается логин пользователя, новый пароль и его идентификатор. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2,
"login": "testu",
"usr_pwd": "123123"
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/users/create_group
Запрос только для проектов версии 2
В запроссе передается тело в формате json с настройками группы, которые содержат название группы и идентификатор роли, который является необязательным параметром. При успешном создании группы возвращается ее идентификатор в переменной id При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"name": "Группа пользователей 1",
"role_id": 1
}
Пример ответа:
{
"id": 2,
"infoCode": 0
}
запрос: entek/api/config/users/update_group
Запрос только для проектов версии 2
В запроссе передается тело в формате json с настройками группами. Переписываются все настройки. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2,
"name": "Группа пользователей 1",
"role_id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/users/delete_group
Запрос только для проектов версии 2
В теле запроса передается идентификатор группы, которую надо удалить. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/users/get_role
Запрос только для проектов версии 2
В теле запроса передается идентификатор роли, информацию о которой надо получить. В теле ответа передается json с информацией роли. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2
}
Пример ответа:
{
"name": "Гость",
"is_admin": 0,
"permissions": {
"apps": [
{
"act": ["run", "DC", "AC"],
"app": "vision"
}
]
},
"infoCode": 0
}
запрос: entek/api/config/users/create_role
Запрос только для проектов версии 2
В запроссе передается тело в формате json с настройками роли, которые содержат название роли, флаг администратора со значением 0 или 1 (если не передается, то по умолчанию значение 0) и разрешения, которые являются необязательным параметром. При успешном создании роли возвращается ее идентификатор в переменной id. В переменной разрешения можно передать json любой структуры. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"name": "Администратор",
"id": 1,
"is_admin": 1,
"permissions": {
"apps": [
{
"act": ["run", "DC", "AC"],
"app": "vision"
}
]
}
}
Пример ответа:
{
"id": 1,
"infoCode": 0
}
запрос: entek/api/config/users/update_role
Запрос только для проектов версии 2
В запроссе передается тело в формате json с настройками роли. Переписываются все настройки. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2,
"name": "Гость",
"is_admin": 0,
"permissions": {
"apps": [
{
"act": ["run", "DC", "AC"],
"app": "vision"
}
]
}
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/users/delete_role
Запрос только для проектов версии 2
В теле запроса передается идентификатор роли, которую надо удалить. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/controllers/get
Запрос только для проектов версии 2
Запрос для получения списка контроллеров. Доступно применение фильтров по станциям, для этого в строке запроса в переменной stationId передается идентификатор станции.
Если для таблицы controllers настроены пользовательские атрибуты, в ответе присутствуют поля вида attr_<id>. Информация об атрибутах также возвращается в ответе.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"controllers": [
{
"id": 5,
"stationId": 1,
"historyDbId": null,
"name": "тест 2",
"description": "тестовая конфигурация 2",
"groupName": "группа тест 2",
"sysAddr": 1,
"ctrlType": "iec104",
"linkType": "single",
"linkAddr1": "127.0.0.1",
"linkAddr2": "127.0.0.1",
"port1": 30292,
"port2": 30292,
"linkSettings": {
"settings": "settings"
},
"uuid": "123123123",
"identString": "asdasdfsadf",
"timeSyncDelta": 0,
"timeSyncPeriod": 0,
"isBlocked": 0,
"configVersion": 0,
"attr_1": "доп. атрибут",
"attr_2": "1",
"isEdit": 0,
"lastEditTime": "2026-01-29T18:29:16",
"lastEditUserId": 1,
"linkToDocId": 28574,
"attr_5": "1",
"attr_6": "2",
"attr_7": "3"
}
],
"users": [
{
"id": 1,
"username": "Администратор"
}
],
"attributes": [
{
"id": 5,
"name": "пользовательский атрибут 4",
"valueType": 1
},
{
"id": 6,
"name": "пользовательский атрибут 5",
"valueType": 1
},
{
"id": 7,
"name": "пользовательский атрибут 6",
"valueType": 1
}
],
"infoCode": 0
}
запрос: entek/api/config/controllers/create
Запрос только для проектов версии 2
В теле запроса передается информация о контроллере, ответ содержит идентификатор созданной конфигурации. В запросе должен быть обязательно указан уникальный UUID контроллера.
Дополнительно можно передавать пользовательские атрибуты полями вида attr_<id>.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"stationId": 1,
"historyDbId": 2,
"name": "тест",
"description": "тестовая конфигурация",
"groupName": "группа тест",
"sysAddr": 1,
"ctrlType": "iec104",
"linkType": "single",
"linkAddr1": "127.0.0.1",
"linkAddr2": "",
"port1": 30292,
"port2": 30292,
"linkSettings": {
"settings": "settings"
},
"uuid": "123123123",
"identString": "asdasdfsadf",
"timeSyncDelta": 0,
"timeSyncPeriod": 0,
"isBlocked": 0,
"configVersion": 0,
"attr_5": "доп. атрибут",
"attr_6": "1",
"attr_7": "4"
}
Пример ответа:
{
"infoCode": 0,
"id": 5
}
запрос: entek/api/config/controllers/update
Запрос только для проектов версии 2
В запросе надо передать всю информацию о контроллере, так как обновляются все поля, в ином случае запишутся значения по умолчанию.
Пользовательские атрибуты можно передавать полями attr_<id>.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 5,
"stationId": 1,
"historyDbId": 2,
"name": "тест 2",
"description": "тестовая конфигурация 2",
"groupName": "группа тест 2",
"sysAddr": 1,
"ctrlType": "iec104",
"linkType": "single",
"linkAddr1": "127.0.0.1",
"linkAddr2": "127.0.0.1",
"port1": 30292,
"port2": 30292,
"linkSettings": {
"settings": "settings"
},
"uuid": "123123123",
"identString": "asdasdfsadf",
"timeSyncDelta": 0,
"timeSyncPeriod": 0,
"isBlocked": 0,
"configVersion": 0,
"attr_5": "доп. атрибут",
"attr_6": "1",
"attr_7": "4"
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/controllers/delete
Запрос только для проектов версии 2
В теле запроса передается идентификатор конфигурации, которую надо удалить. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/controllers/set_edit_status
Запрос только для проектов версии 2
Запрос для изменения флага редактирования конфигурации контроллера. При необходимости указать, что конфигурация редактируется в переменной is_edit передается значение 1, иначе - 0.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 5,
"is_edit": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/params/get
Запрос только для проектов версии 2
Запрос для получения параметров. Есть возможность задавать фильтр в параметрах запроса. Доступны фильтры stationId, где указывается идентификатор станции, и ctrlId, где указывается идентификатор контроллера.
Если для таблицы params настроены пользовательские атрибуты, в ответе присутствуют поля вида attr_<id>.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"params": [
{
"ctrl_id": 2,
"alarms_algo": null,
"history_algo": null,
"name": "name new",
"cipher": "шифр new",
"unit": "KWa new",
"sysaddr": 1,
"source_addr": "addr new",
"param_type": 2,
"inversion": 0,
"vpu": null,
"npu": null,
"vau": null,
"nau": null,
"up_border": null,
"down_border": null,
"scale_coef": 1,
"offset_coef": 0,
"is_out": 0,
"deadband": 0
},
{
"ctrl_id": 2,
"alarms_algo": null,
"history_algo": null,
"name": "name-2",
"cipher": "шифр-2",
"unit": "KWa-2",
"sysaddr": 2,
"source_addr": "addr-2",
"param_type": 1,
"inversion": 0,
"vpu": null,
"npu": null,
"vau": null,
"nau": null,
"up_border": null,
"down_border": null,
"scale_coef": 1,
"offset_coef": 0,
"is_out": 0,
"deadband": 0,
"attr_5": "доп. атрибут",
"attr_6": "1",
"attr_7": "4"
}
],
"attributes": [
{
"id": 5,
"name": "пользовательский атрибут 4",
"valueType": 1
},
{
"id": 6,
"name": "пользовательский атрибут 5",
"valueType": 1
},
{
"id": 7,
"name": "пользовательский атрибут 6",
"valueType": 1
}
],
"infoCode": 0
}
запрос: entek/api/config/params/param_info
Запрос только для проектов версии 2
Запрос для получения информации о параметре по его структуре адресации. В теле запроса передаются системные адреса станции, контроллера и параметра. Если для таблицы params настроены пользовательские атрибуты, в ответе присутствуют поля вида attr_<id>.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"station": 1,
"ctrl": 430,
"param": 4097
}
Пример ответа:
{
"param": {
"ctrl_id": 1,
"alarms_algo": null,
"history_algo": 3,
"name": "НК-1.Виртуальная группа 1.Карта МЭК-104 из Excel 1.ТС.Неисправность (общ)",
"cipher": "Неисправность (общ)",
"unit": "Норма/Нарушение",
"sysaddr": 4097,
"source_addr": "4097",
"param_type": 1,
"inversion": 0,
"vpu": null,
"npu": null,
"vau": null,
"nau": null,
"up_border": null,
"down_border": null,
"scale_coef": 1,
"offset_coef": 0,
"is_out": 0,
"deadband": 0.0,
"attr_1": "Виртуальная группа 1",
"attr_2": "Карта МЭК-104 из Excel 1",
"attr_3": "ТС"
},
"infoCode": 0
}
запрос: entek/api/config/params/create
Запрос только для проектов версии 2
Запрос создания новых параметров. В теле запроса передается массив параметров в формате JSON. ctrl_id и sysaddr являются обязательными параметрами.
Пользовательские атрибуты передаются как поля attr_<id>.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
[
{
"ctrl_id": 1,
"attr_1": "аттрибут 1",
"attr_2": "аттрибут 2",
"attr_3": "аттрибут 3",
"attr_4": "аттрибут 4",
"attr_5": "аттрибут 5",
"name": "name",
"cipher": "шифр",
"unit": "KWa",
"sysaddr": 1,
"source_addr": "addr",
"param_type": 1,
"deadband": 0
},
{
"ctrl_id": 1,
"attr_1": "аттрибут 1-2",
"attr_2": "аттрибут 2-2",
"attr_3": "аттрибут 3-2",
"attr_4": "аттрибут 4-2",
"attr_5": "аттрибут 5-2",
"name": "name-2",
"cipher": "шифр-2",
"unit": "KWa-2",
"sysaddr": 2,
"source_addr": "addr-2",
"param_type": 1,
"deadband": 0,
"attr_5": "доп. атрибут",
"attr_6": "1",
"attr_7": "4"
}
]
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/params/update
Запрос только для проектов версии 2
Запрос для изменения настроек параметров, при запросе переписываются все параметры кроме ctrl_id и sysaddr, их изменять нельзя. В теле запроса передается массив параметров в формате JSON.
Пользовательские атрибуты передаются как поля attr_<id>.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
[
{
"ctrl_id": 1,
"attr_1": "аттрибут 1 new",
"attr_2": "аттрибут 2 new",
"attr_3": "аттрибут 3 new",
"attr_4": "аттрибут 4 new",
"attr_5": "аттрибут 5 new",
"name": "name new",
"cipher": "шифр new",
"unit": "KWa new",
"sysaddr": 1,
"source_addr": "addr new",
"param_type": 2,
"scale_coef": 1,
"offset_coef": 0,
"is_out": 0,
"deadband": 0,
"attr_5": "доп. атрибут",
"attr_6": "1",
"attr_7": "4"
}
]
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/params/delete
Запрос только для проектов версии 2
Запрос для удаления параметров. В теле запрос передается массив параметров в формате JSON. Необходимо передать ctrl_id и sysaddr каждого параметра.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
[
{
"ctrl_id": 2,
"sysaddr": 2
}
]
Пример ответа:
{
"infoCode": 0
}
Запросы раздела используются для управления пользовательскими атрибутами конфигурационных таблиц.
Для таблицы контроллеров используйте URI с префиксом config/controllers/attributes,
для таблицы параметров — config/params/attributes.
Для получения атрибутов всех таблиц используется URI config/attributes/attributes/get.
запрос: entek/api/config/<controllers|params>/attributes/get
Запрос только для проектов версии 2
Запрос для получения атрибутов выбранной таблицы. Можно передать query-параметр ids со списком ID атрибутов через запятую.
Для получения всех атрибутов (без фильтра по таблице) используйте entek/api/config/attributes/attributes/get, в этом случае в ответе в структуре каждого атрибута будет присутствовать переменная tableName.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
entek/api/config/params/attributes/get?ids=1,2,3
Пример ответа:
{
"attributes": [
{
"id": 1,
"name": "attr_name_1",
"valueType": 1
},
{
"id": 2,
"name": "attr_name_2",
"valueType": 2
}
],
"infoCode": 0
}
запрос: entek/api/config/<controllers|params>/attributes/create
Запрос только для проектов версии 2
Запрос для создания пользовательского атрибута для выбранной таблицы. Таблица определяется по URI запроса. При успешном запросе ответ содержит id созданного атрибута, а также параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Доступны следующие типы:
Пример запроса:
{
"name": "attr_name_1",
"valueType": 1
}
Пример ответа:
{
"infoCode": 0,
"id": 1
}
запрос: entek/api/config/attributes/update
Запрос только для проектов версии 2
Запрос для изменения атрибута. Идентификатор атрибута и новое имя передаются в теле запроса.
В текущей реализации обновляется только поле name.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1,
"name": "attr_name_1_new"
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/attributes/delete
Запрос только для проектов версии 2
Запрос для удаления атрибута. Идентификатор удаляемого атрибута передается в теле запроса в переменной id в формате JSON.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/history_algo/get
Запрос только для проектов версии 2
Запрос для получния алгоритмов хранения истории, для получения конкретного алгоритма в параметрах запроса передается id с его идентификатором. Ответ содержит массив алгоритмов и массив пользователей.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"history_algos": [
{
"id": 1,
"name": "алгоритм 1",
"is_off": 1,
"settings": {
"name": "settings"
},
"edit_time": "2026-02-03T14:05:27",
"edit_user_id": 1
},
{
"id": 2,
"name": "алгоритм 2",
"is_off": 0,
"edit_time": "2026-02-03T14:05:27",
"edit_user_id": 1
},
{
"id": 3,
"name": "алгоритм 3",
"is_off": 0,
"settings": {
"name": "settings 3"
},
"edit_time": "2026-02-03T14:05:27",
"edit_user_id": 1
}
],
"users": [
{
"id": 1,
"username": "Администратор"
}
],
"infoCode": 0
}
запрос: entek/api/config/history_algo/create
Запрос только для проектов версии 2
Запрос для создания алгоритмов. В теле запроса передается вся информация об алгоритме. При успешном запросе ответ содержит параметр infoCode равный 0 и id новой записи, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"name": "алгоритм 1",
"is_off": 1,
"settings": {
"name": "settings"
}
}
Пример ответа:
{
"infoCode": 0,
"id": 2
}
запрос: entek/api/config/history_algo/update
Запрос только для проектов версии 2
Запрос для изменения алгоритмов. В теле запроса передается вся информация об алгоритме, все поля перезаписываются. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2,
"name": "алгоритм 1 new",
"is_off": 0,
"settings": {
"name": "settings new"
}
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/history_algo/delete
Запрос только для проектов версии 2
Запрос удаления алгоритмов. В теле запроса передается идентификатор алгоритма для дальнейшего удаления. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/alarm_algo/get
Запрос только для проектов версии 2
Запрос для получния алгоритмов хранения алармов, для получения конкретного алгоритма в параметрах запроса передается id с его идентификатором. Ответ содержит массив алгоритмов и массив пользователей.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"alarm_algos": [
{
"id": 1,
"name": "алгоритм 1",
"is_off": 0,
"edit_time": "2026-02-04T11:18:26",
"edit_user_id": 1
},
{
"id": 2,
"name": "алгоритм 2 new",
"is_off": 1,
"edit_time": "2026-02-04T11:20:32",
"edit_user_id": 1
}
],
"users": [
{
"id": 1,
"username": "Администратор"
}
],
"infoCode": 0
}
запрос: entek/api/config/alarm_algo/create
Запрос только для проектов версии 2
Запрос для создания алгоритмов. В теле запроса передается информация об алгоритме. При успешном запросе ответ содержит параметр infoCode равный 0 и id новой записи, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"name": "алгоритм 2",
"is_off": 0,
"settings": {
"name": "settings"
}
}
Пример ответа:
{
"id": 1,
"infoCode": 0
}
запрос: entek/api/config/alarm_algo/update
Запрос только для проектов версии 2
Запрос для изменения алгоритмов. В теле запроса передается информация об алгоритме, все поля перезаписываются. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2,
"name": "алгоритм 2 new",
"is_off": 1,
"settings": {
"name": "settings"
}
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/alarm_algo/delete
Запрос только для проектов версии 2
Запрос удаления алгоритмов. В теле запроса передается идентификатор алгоритма для дальнейшего удаления. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/events/get_tree
Запрос только для проектов версии 2
Запрос получения категорий и групп событий, в ответе передается в виде дерева информация о каждой категории и входящие в нее группы. Группы без категорий передаются в массиве uncategorized_groups. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"categories": [
{
"id": 1,
"name": "Алармы",
"description": "",
"index_num": 1,
"bk_color": "#050000",
"font_italic": 0,
"font_bold": 0,
"font_underline": 0,
"font_color": "#080000",
"groups": [
{
"id": 1,
"name": "ALARMSHIGH",
"description": "Алармы высокого приоритета",
"index_num": 1,
"storage_depth": 0,
"bk_color": "#ff0000",
"not_write": 0,
"font_italic": 0,
"font_bold": 1,
"font_underline": 0,
"font_color": "#ffff00",
"category_id": 1
},
{
"id": 2,
"name": "ALARMSMEDIUMHIGH",
"description": "Алармы повышенного приоритета",
"index_num": 2,
"storage_depth": 0,
"bk_color": "#ff8080",
"not_write": 0,
"font_italic": 0,
"font_bold": 1,
"font_underline": 0,
"font_color": "#080000",
"category_id": 1
}
]
},
{
"id": 2,
"name": "Сообщения",
"description": "",
"index_num": 2,
"bk_color": "#050000",
"font_italic": 0,
"font_bold": 0,
"font_underline": 0,
"font_color": "#080000",
"groups": [
{
"id": 6,
"name": "MESSAGESHIGH",
"description": "Сообщения высокого приоритета",
"index_num": 1,
"storage_depth": 0,
"bk_color": "#050000",
"not_write": 0,
"font_italic": 0,
"font_bold": 0,
"font_underline": 0,
"font_color": "#080000",
"category_id": 2
}
]
}
],
"uncategorized_groups": [
{
"id": 45,
"name": "REST_EVENTS",
"description": "События REST API",
"index_num": 0,
"storage_depth": 0,
"bk_color": "",
"not_write": 0,
"font_italic": 0,
"font_bold": 0,
"font_underline": 0,
"font_color": "",
"category_id": 0
}
],
"infoCode": 0
}
запрос: entek/api/config/events/category/create
Запрос только для проектов версии 2
Запрос создания категории событий. В теле запроса передается информация о новой категории событий, index_num необходимо контролировать вручную. При успешном запросе ответ содержит id новой записи и параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"name": "Тест",
"description": "",
"index_num": 8,
"bk_color": "#050000",
"font_italic": 0,
"font_bold": 0,
"font_underline": 0,
"font_color": "#080000"
}
Пример ответа:
{
"id": 8,
"infoCode": 0
}
запрос: entek/api/config/events/category/update
Запрос только для проектов версии 2
Запрос обновления записи категории. В теле запроса передается вся информация о категории, все поля записи обновляются. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 8,
"name": "Тест updated",
"description": "",
"index_num": 8,
"bk_color": "#050000",
"font_italic": 0,
"font_bold": 0,
"font_underline": 0,
"font_color": "#080000"
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/events/category/delete
Запрос только для проектов версии 2
Запрос удаления категории. В теле запроса идентификатор категории для дальнейшего удаления, также удаляются все группы категории. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Для удаления всех групп без категории необходимо передать id равный 0.
Пример запроса:
{
"id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/events/group/create
Запрос только для проектов версии 2
Запрос создания группы событий. В теле запроса передается информация о новой группе событий, index_num необходимо контролировать вручную. При успешном запросе ответ содержит id новой записи и параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Для создания группы без категории необходимо указать category_id равный 0.
Пример запроса:
{
"name": "Тест",
"description": "",
"index_num": 8,
"bk_color": "#050000",
"not_write": 0,
"font_italic": 0,
"font_bold": 0,
"font_underline": 0,
"font_color": "#080000",
"category_id": 12
}
Пример ответа:
{
"id": 46,
"infoCode": 0
}
запрос: entek/api/config/events/group/update
Запрос только для проектов версии 2
Запрос обновления записи группы. В теле запроса передается вся информация о группе, все поля записи обновляются. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 46,
"name": "Тест updated",
"description": "",
"index_num": 8,
"bk_color": "#050000",
"not_write": 0,
"font_italic": 0,
"font_bold": 0,
"font_underline": 0,
"font_color": "#080000",
"category_id": 12
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/events/group/delete
Запрос только для проектов версии 2
Запрос удаления группы. В теле запроса идентификатор группы для дальнейшего удаления. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/alias/get
Запрос только для проектов версии 2
Запрос получения списка псевдонимов. В ответе передается массив aliases. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"aliases": [
{
"id": 1,
"alias": "Оператор включил режим",
"source_val": "MODE_ON"
},
{
"id": 2,
"alias": "Оператор выключил режим",
"source_val": "MODE_OFF"
}
],
"infoCode": 0
}
запрос: entek/api/config/alias/create
Запрос только для проектов версии 2
Запрос создания псевдонима события. В теле запроса передаются поля alias и source_val новой записи. При успешном запросе ответ содержит id новой записи и параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"alias": "Переход на резервную линию",
"source_val": "RESERVE_LINE_ON"
}
Пример ответа:
{
"id": 15,
"infoCode": 0
}
запрос: entek/api/config/alias/update
Запрос только для проектов версии 2
Запрос обновления записи псевдонима. В теле запроса передается идентификатор и все поля записи. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 15,
"alias": "Переход на резервную линию подтвержден",
"source_val": "RESERVE_LINE_ON"
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/alias/delete
Запрос только для проектов версии 2
Запрос удаления псевдонима. В теле запроса передается идентификатор записи для дальнейшего удаления. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 15
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/events/update_index?<параметр>=<значение>
Запрос только для проектов версии 2
Запрос обновления порядка категорий или групп событий. Для выбора типа обновления необходимо передать query-параметр:
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Формат тела запроса для type=category массив объектов с полями id и index_num.
Пример запроса category:
[
{
"id": 1,
"index_num": 2
},
{
"id": 2,
"index_num": 1
}
]
Формат тела запроса для type=group объект с полями category_id и groups (массив объектов с полями id и index_num).
Пример запроса group (рекомендуемый):
{
"category_id": 12,
"groups": [
{
"id": 46,
"index_num": 1
},
{
"id": 47,
"index_num": 2
}
]
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/db/get
Запрос только для проектов версии 2
Запрос возвращает список конфигураций внешних баз данных в массиве dbs. При необходимости можно передать фильтр по идентификатору станции в параметрах запроса в переменной stId. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"dbs": [
{
"id": 1,
"guid": "",
"name": "БД событий",
"comments": "Основная БД событий",
"db_type": 3,
"sudb_type": 1,
"db_version": 1,
"db_filename": "events.fdb",
"db_user": "",
"db_password": "",
"db_settings": {
"use_short_db": 1
},
"save_period": 30,
"station_id": 1
}
],
"infoCode": 0
}
запрос: entek/api/config/db/create
Запрос только для проектов версии 2
Запрос добавляет новую конфигурацию базы данных. В теле запроса передаются параметры конфигурации. В ответе возвращается созданный id. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"guid": "",
"name": "Тестовая БД",
"comments": "Добавлена через REST API",
"db_type": 2,
"sudb_type": 1,
"db_version": 1,
"db_filename": "test.fdb",
"db_user": "",
"db_password": "",
"db_settings": {
"use_short_db": 1
},
"save_period": 7,
"station_id": 1
}
Пример ответа:
{
"id": 15,
"infoCode": 0
}
запрос: entek/api/config/db/update
Запрос только для проектов версии 2
Запрос обновляет существующую конфигурацию базы данных. В теле запроса обязательно должен присутствовать id. Если конфигурация с переданным id не найдена, ответ содержит ошибку. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Поля db_type при обновлении не изменяются.
Пример запроса:
{
"id": 15,
"guid": "",
"name": "Тестовая БД (обновлено)",
"comments": "Обновление через REST API",
"db_version": 2,
"db_filename": "test_new.fdb",
"db_user": "",
"db_password": "",
"db_settings": {
"use_short_db": 1
},
"save_period": 10,
"station_id": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/db/delete
Запрос только для проектов версии 2
Запрос удаляет конфигурацию базы данных. В теле запроса передается id удаляемой конфигурации. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Удаление конфигурации БД событий (при db_type = 3) запрещено.
Пример запроса:
{
"id": 15
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/db_file/create
Запрос только для проектов версии 2
Запрос создает новый файл базы данных. В теле запроса передаются параметры подключения, тип БД и СУБД. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Тело запроса:
Пример запроса:
{
"db_file": "C:/ENTEK/db/events_new.fdb",
"db_user": "user",
"db_password": "password",
"db_type": 3,
"sudb_type": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/db_file/check
Запрос только для проектов версии 2
Запрос проверяет доступность файла базы данных и корректность параметров подключения. В теле запроса передаются параметры подключения и тип СУБД. При успешной проверке ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"db_file": "C:/ENTEK/db/events.fdb",
"db_user": "user",
"db_password": "password",
"sudb_type": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/db_file/delete
Запрос только для проектов версии 2
Запрос удаляет файл базы данных. В теле запроса передаются параметры подключения и тип СУБД. При успешном удалении ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"db_file": "C:/ENTEK/db/events_test.fdb",
"db_user": "user",
"db_password": "password",
"sudb_type": 1
}
Пример ответа:
{
"infoCode": 0
}
запрос: entek/api/config/db_file/info
Запрос только для проектов версии 2
Запрос возвращает информацию о состоянии таблиц базы данных. Тело запроса имеет тот же формат, что и для запроса создания файла БД. При успешном запросе дополнительно возвращаются:
Если получить информацию не удалось, ответ содержит infoCode = 1 и параметр infoString с описанием ошибки.
Пример запроса:
{
"db_file": "C:/ENTEK/db/events.fdb",
"db_user": "user",
"db_password": "password",
"db_type": 3,
"sudb_type": 1
}
Пример ответа:
{
"table_count": 125,
"total_records": 348920,
"infoCode": 0
}
Запросы для конфигурирования ретрансляции доступны только для пользователей с правами администратора.
запрос: /entek/api/config/retransmit/pu/get
Запрос только для проектов версии 2
Запрос возвращает список всех ПУ (мастеров) ретрансляции. Адреса ips могут передваться следующим образом: один адрес, перечисление адресов с разделением ,, диапазон адресов 192.168.1.10-192.168.1.20. Также возможен фильтр по станции, для этого необходимо передать в параметрах запроса идентификатор станции в базе данныех в переменной stId.
При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"retransmit_pus": [
{
"id": 1,
"name": "Master 1",
"station_id": 2,
"ips": "192.168.1.10",
"port": 2404,
"start_addr": 1,
"k_coef": 12,
"w_coef": 8,
"t0": 30,
"t1": 15,
"t2": 10,
"t3": 20,
"common_asdu_addr": 1,
"time_sync": 1,
"time_sync_delta": 0,
"read_only": 0,
"ssd_processing": 1,
"is_opcua_srv": 0,
"retransmit_conn_lost": 0
}
],
"infoCode": 0
}
запрос: /entek/api/config/retransmit/pu/create
Запрос только для проектов версии 2
Запрос добавляет ПУ (мастер) ретрансляции. Параметры передаются в теле запроса в формате JSON. В ответе возвращается id новой записи. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"name": "New Master",
"station_id": 2,
"ips": "192.168.1.11",
"port": 2404,
"start_addr": 1,
"k_coef": 12,
"w_coef": 8,
"t0": 30,
"t1": 15,
"t2": 10,
"t3": 20,
"common_asdu_addr": 1,
"time_sync": 1,
"time_sync_delta": 0,
"read_only": 0,
"ssd_processing": 1,
"is_opcua_srv": 0,
"retransmit_conn_lost": 0
}
Пример ответа:
{
"id": 1
}
запрос: /entek/api/config/retransmit/pu/update
Запрос только для проектов версии 2
Запрос изменяет параметры ПУ (мастера) ретрансляции. Параметры передаются в теле запроса в формате JSON. Обязательно наличие идентификатора id. При обновление переписываются все поля. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1,
"name": "New Master",
"station_id": 2,
"ips": "192.168.1.11",
"port": 2404,
"start_addr": 1,
"k_coef": 12,
"w_coef": 8,
"t0": 30,
"t1": 15,
"t2": 10,
"t3": 20,
"common_asdu_addr": 1,
"time_sync": 1,
"time_sync_delta": 0,
"read_only": 0,
"ssd_processing": 1,
"is_opcua_srv": 0,
"retransmit_conn_lost": 0
}
запрос: /entek/api/config/retransmit/pu/delete
Запрос только для проектов версии 2
Запрос удаляет ПУ (мастер) ретрансляции. В теле запроса передается идентификатор id. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1
}
запрос: /entek/api/config/retransmit/group/get
Запрос только для проектов версии 2
Запрос возвращает список групп мастера ретрансляции. В параметрах запроса обязательно должен присутствовать puId, соответствующий id мастера ретрансляции, или ctrlId (id контроллера), или stId (id станции). При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"retransmit_groups": [
{
"id": 1,
"pu_id": 1,
"ctrl_id": 101,
"caa": 1
}
],
"infoCode": 0
}
запрос: /entek/api/config/retransmit/group/create
Запрос только для проектов версии 2
Запрос добавляет группу ретрансляции. Параметры передаются в теле запроса в формате JSON. В ответе возвращается id новой записи. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"pu_id": 1,
"ctrl_id": 102,
"caa": 2
}
Пример ответа:
{
"id": 1
}
запрос: /entek/api/config/retransmit/group/update
Запрос только для проектов версии 2
Запрос изменяет параметры группы ретрансляции. Параметры передаются в теле запроса в формате JSON. Обязательно наличие идентификатора id. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 2041,
"pu_id": 1,
"ctrl_id": 102,
"caa": 3
}
запрос: /entek/api/config/retransmit/group/delete
Запрос только для проектов версии 2
Запрос удаляет группу ретрансляции. В теле запроса передается идентификатор id. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1
}
запрос: /entek/api/config/retransmit/params/get
Запрос только для проектов версии 2
Запрос возвращает список параметров ретрансляции группы. В параметрах запроса необходимо передать groupId соответсующий id группы ретрансляции. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"retransmit_params": [
{
"id": 1,
"group_id": 1,
"param_sysaddr": 1001,
"retransmit_addr": 16385
}
],
"infoCode": 0
}
запрос: /entek/api/config/retransmit/params/create
Запрос только для проектов версии 2
Запрос добавляет параметр ретрансляции. Параметры передаются в теле запроса в формате JSON. В ответе возвращается id новой записи. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"group_id": 1,
"param_sysaddr": 1002,
"retransmit_addr": 16386
}
Пример ответа:
{
"id": 1
}
запрос: /entek/api/config/retransmit/params/update
Запрос только для проектов версии 2
Запрос изменяет параметр ретрансляции. Параметры передаются в теле запроса в формате JSON. Обязательно наличие идентификатора id. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 41779,
"group_id": 1,
"param_sysaddr": 101,
"retransmit_addr": 501
}
запрос: /entek/api/config/retransmit/params/delete
Запрос только для проектов версии 2
Запрос удаляет параметр ретрансляции. В теле запроса передается идентификатор id. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример запроса:
{
"id": 1
}
запрос: /entek/api/config/mnemo/get_list
Запрос только для проектов версии 2
Запрос возвращает список всех мнемосхем. При успешном запросе ответ содержит параметр infoCode равный 0, иначе - 1 и присутствует параметр infoString с описанием ошибки.
Пример ответа:
{
"mnemos": [
{
"id": 1,
"guid": "21D1D68D-86F4-4F69-B254-543D215FF6C4",
"name": "Главная",
"auto_load": 1,
"mnemo_type": 0,
"is_dialog": 0,
"show_in_web": 1,
"is_check_users": 0,
"mnemo_version": 1,
"description": "Основная мнемосхема объекта",
"is_edit": 1,
"edit_user": "admin",
"last_save_user": "admin",
"last_save_time": "2023-10-27T10:00:00"
}
],
"infoCode": 0
}
запрос: /entek/api/config/mnemo/create
Запрос только для проектов версии 2
Запрос создает новую запись о мнемосхеме в базе данных. Параметры передаются в теле запроса в формате JSON. При успешном запросе ответ содержит идентификатор созданной записи id и параметр infoCode равный 0.
Пример запроса:
{
"guid": "{399B6F3C-A19F-4B1C-B6A5-D6A8E4C7B1E4}",
"name": "Новая мнемосхема",
"auto_load": 0,
"mnemo_type": 0,
"is_dialog": 0,
"show_in_web": 0,
"is_check_users": 0,
"description": ""
}
Пример ответа:
{
"id": 26,
"infoCode": 0
}
запрос: /entek/api/config/mnemo/update
Запрос только для проектов версии 2
Запрос обновляет существующей мнемосхемы по её идентификатору. Тело запроса должно содержать идентификатор id.
Пример запроса:
{
"id": 10,
"guid": "{399B6F3C-A19F-4B1C-B6A5-D6A8E4C7B1E4}",
"name": "Обновленная мнемосхема",
"auto_load": 1,
"is_dialog": 0,
"show_in_web": 1,
"is_check_users": 0,
"description": "Измененное описание"
}
запрос: /entek/api/config/mnemo/delete
Запрос только для проектов версии 2
Запрос удаляет запись о мнемосхеме из базы данных. Идентификатор удаляемой записи передается в теле запроса.
Пример запроса:
{
"id": 10
}
запрос: /entek/api/config/mnemo/settings/get
Запрос только для проектов версии 2
Запрос предназначен для скачивания XML-файла описания мнемосхемы. GUID мнемосхемы передается в теле запроса. Для установки признака того, что мнемосхема находится в режиме редактирования, в строке запроса необходимо передать параметр edit, чтобы снять этот признак необходимо выполнить запрос сохранения XML-файла мнемосхемы.
Пример запроса:
{
"guid": "{21D1D68D-86F4-4F69-B254-543D215FF6C4}"
}
запрос: /entek/api/config/mnemo/settings/commit
Запрос только для проектов версии 2
Запрос сохраняет XML-файл описания мнемосхемы на сервере. В параметрах запроса необходимо передать guid. Тело запроса должно содержать данные файла. При успешном сохранении версия мнемосхемы в БД увеличивается на 1, а флаг редактирования сбрасывается.
запрос: /entek/api/config/mnemo/params/get
Запрос только для проектов версии 2
Запрос предназначен для скачивания файла параметров мнемосхемы (.param). GUID мнемосхемы передается в теле запроса.
Пример запроса:
{
"guid": "{21D1D68D-86F4-4F69-B254-543D215FF6C4}"
}
запрос: /entek/api/config/mnemo/params/commit
Запрос только для проектов версии 2
Запрос сохраняет файл параметров мнемосхемы (.param) на сервере. В строке запроса обязателен параметр guid. Тело запроса должно содержать бинарные данные файла.
Для интеграции с сервисом NGW необходимо добавить конфигурационный файл ngwConfig.json в корень проекта в папку Dispatcher. Данные используются для синхронизации данных между базой данных проекта SCADA-ЭНТЕК и сервисом NGW, а также для отображения HTML форм.
Файл содержит следующие настройки:
Настройки журналов состоят из следующих полей:
{
"ngwUrl": "",
"ngwUser": "",
"ngwPassword": "",
"attrTableWidth": 300,
"valTableWidth": 400,
"journals": [
{
"info": "Объекты",
"jrnlId": 49,
"gisIdFieldId": 193,
"objectNameFieldId": 1,
"ngwWebMapId": 20,
"ngwLayerId": 185,
"ngwGisIdFieldName": "sid",
"ngwDispLinkField": "surl"
}
]
}
запрос: entek/api/ngw/config
Запрос возвращает HTML страницу со списком журналов (идентификатор и название), указанных в конфигурационном файле, а также их общее количество.
запрос: entek/api/ngw/journal/<journalId>
Запрос передается с идентификатором журнала и возвращает HTML страницу, которая отображает название журнала и таблицу с настройками из ngwConfig.json файла.
запрос: entek/api/ngw/sync/<journalId>
Запрос передается с идентификатором журнала. В процессе работы обновляются записи в NGW, добавляя к ним ссылки на информацию о записях в базе данных. По ходу выполнения будет отображаться результат синхронизации.
запрос: entek/api/dsp/<docId>/<objectId>
Запрос передается с идентификатором журнала и идентификатором объекта. Возвращает HTML страницу, которая отображает название записи и таблицу со всеми атрибутами и их значениями. А также ссылки на список зависимостей в других журналах и список файлов доступных к загрузке.
Для запроса по уникальному полю вместо objectId необходимо указать unique_field, а затем в параметрах запроса передать значение поля в переменной value. Поле, по которому будет производиться поиск, указывается в переменной gisIdFieldId в настройках журнала в конфигурационном файле ngwConfig.json. Значения уникальных полей не должны содержать кириллицы. Пример запроса: entek/api/dsp/<docId>/unique_field?value=<value>
запрос: entek/api/ngw/multilinks/<objectId>/<refToField>
Запрос передается идентификатором журнала и идентификатором на ссылаемое поле. Возвращает HTML страницу, которая отображает список связанных записей и название журнала, к которому они относятся.
запрос: entek/api/ngw/download/<fileId>
Запрос передается идентификатором файла и возвращает файл в байтовом предоставлении.
запрос: /entek/api/report/history
Запрос предназначен для формирования отчетов в фромате html из шаблона. Запрос должен содержать обязательные параметры запроса:
Шаблоны необходимо разместить в корне проекта в папке /reports/templates/
Шаблон должен быть валидным xml файлом, т.е. все открывающие ноды должны быть закрыты. Генерация данных происходит в элементе таблицы, вне этого элемента доступны параметры:
Их можно указать подставив в текст, например {@timeGen}.
<br>Report interval from {@timeStart} to {@timeEnd}</br>
Таблица должна содержать два элемента thead для заголовка таблицы и tbody для тела, в котором будут генерироваться данные, также есть обязательный блок scada с настройками таблицы. В ноде scada указываются параметры, которые будут запрашиваться в базе данных, а также тип отчета, шаг, с которым отображаются данные, количество знаков после запятой, количество строк и режим сортировки.
Атрибуты доступные для ноды scada:
Внутри ноды scada перечисляются параметры в нодах value с обязательными атрибутами name - пользовательское наименование переменной, которое будет подставляться в теле таблицы; addr - код параметра для запросов к базе данных для запроса истории или код поля событий для запроса событий. Также при запросе истории для параметров опционально можно задать доступные алгоритмы для обработки данных (sum - сумма, average-sum - среднее значение), для них предусмотрен атрибут algorithm, в котором можно перечислить, разделяя строго только запятой, все нобходимые алгоритмы для каждого параметра. Для запроса событий можно задать группы событий в ноде groups, перечисляя их через символ ';', группы должны быть указаны в верхнем регистре. А также можно указать станции и контроллеры для поиска событий в ноде controllers, id контроллеров указываются числом в значении ноды, а станции в ее атрибуте stId.
Пример перечисления групп событий
<groups>DASERVERGROUP;STARTSTOPGROUP</group>
Пример перечисления контроллеров и станции
<controllers stId="0;1">0;1</controllers>
Пример ноды scada:
<scada type="values" step="1m" decimal="3">
<value name="V1P" addr="EnLogic.St0.T222.Grp0.Id91"></value>
<value name="V1Q" addr="EnLogic.St0.T222.Grp0.Id92" algorithm="sum,average-sum"></value>
<value name="V1I" addr="EnLogic.St0.T222.Grp0.Id93" algorithm="average-sum"></value>
</scada>
Допустимые коды полей событий:
| имя параметра | описание |
|---|---|
| group_name | название группы событий |
| client_id | ip-адресс клиента |
| event_time | временная метка события |
| event_text | текст события |
| event_number | номер события |
| event_type | тип события |
| comment | комментарий |
| user | имя пользователя |
| station_id | id станции |
| group_id | id контроллера |
| passp_type | тип параметра |
| passp_id | id параметра |
| passp_time | временная метка значения |
| passp_val | значение параметра |
| alarm_priority | приоритет |
| alarm_ack | квитирование аларма |
| alarm_ack_user | пользователь, заквитировавший аларм |
| alarm_ack_time | время квитирования |
| alarm_end_time | время окончания аларма |
| alarm_set_val | значение аларма |
Внутри ноды tbody в ноде tr с атрибутом gen="true" указываются параметры, которые будут генерироваться. Параметры указываются в фигурных скобках и перед пользовательским названием ставится символ @ (Пример: {@V1P}). Также достуны функция формирования метки интервала, для этого указывается переменная timestamp, а через точку указывается тип временной метки Date - для даты, Time - для времени, если ничего не указать то формат будет содержать дату и время, а для временной метки событий необходимо использовать поле event_time, которое перед этим необходимо указать в ноде value в секции scada. Функция genNum предназначена для подстановки номера строки таблицы.
А для вызова результата алгоритма в таблице надо указать его название из атрибута name и через точку указать название алгоритма (доступно только для статических строк без атрибута gen="true").
Пример ноды tbody:
<tbody>
<tr gen="true">
<td>{@timestamp.Date}</td>
<td>{@timestamp.Time}</td>
<td>{@V1P}</td>
<td>{@V1Q}</td>
<td>{@V1I}</td>
</tr>
</tbody>
Пример использования алгоритма в сроке таблицы:
<tr>
<td>Average</td>
<td></td>
<td></td>
<td>{@V1Q.average-sum}</td>
<td>{@V1I.average-sum}</td>
</tr>
Пример полного шаблона отчета истории:
<html>
<body>
<br>SCADA report</br>
<br>from {@timeStart} to {@timeEnd}</br>
<table id="table1" cols="23" border="1" cellspacing="0" cellpadding="2" width="100%%">
<scada type="values" step="1m" decimal="3">
<value name="V1P" addr="EnLogic.St0.T222.Grp0.Id91"></value>
<value name="V1Q" addr="EnLogic.St0.T222.Grp0.Id92" algorithm="sum,average-sum"></value>
<value name="V1I" addr="EnLogic.St0.T222.Grp0.Id93" algorithm="average-sum"></value>
</scada>
<thead>
<tr align="center">
<th>Num</th>
<th>Date</th>
<th>Time</th>
<th>Q, kVA</th>
<th>I, A</th>
</tr>
</thead>
<tbody>
<tr gen="true">
<td>{@genNum}</td>
<td>{@timestamp.Date}</td>
<td>{@timestamp.Time}</td>
<td>{@V1P}</td>
<td>{@V1Q}</td>
<td>{@V1I}</td>
</tr>
<tr>
<td>Total</td>
<td></td>
<td></td>
<td>{@V1Q.sum}</td>
<td></td>
</tr>
<tr>
<td>Average</td>
<td></td>
<td></td>
<td>{@V1Q.average-sum}</td>
<td>{@V1I.average-sum}</td>
</tr>
</tbody>
</table>
</body>
</html>
Пример полного шаблона отчета событий:
<html>
<body>
<br>SCADA report</br>
<br>from {@timeStart} to {@timeEnd}</br>
<table id="table1" cols="23" border="1" cellspacing="0" cellpadding="2" width="100%%">
<scada type="events" sort="desc" dataCount="100" lastData="1" useColors="1">
<groups>DASERVERGROUP;STARTSTOPGROUP</groups>
<controllers stId="0">0;1</controllers>
<value name="group_name" addr="group_name"></value>
<value name="client_id" addr="client_id"></value>
<value name="event_time" addr="event_time"></value>
<value name="event_text" addr="event_text"></value>
<value name="comment" addr="comment"></value>
<value name="station_id" addr="station_id"></value>
<value name="group_id" addr="group_id"></value>
<value name="passp_type" addr="passp_type"></value>
</scada>
<thead>
<tr align="center">
<th>Num</th>
<th>Date</th>
<th>Group</th>
<th>Client</th>
<th>Event</th>
<th>Comment</th>
<th>Station</th>
<th>controller</th>
<th>Passp type</th>
</tr>
</thead>
<tbody>
<tr gen="true">
<td>{@genNum}</td>
<td>{@event_time}</td>
<td>{@group_name}</td>
<td>{@client_id}</td>
<td>{@event_text}</td>
<td>{@comment}</td>
<td>{@station_id}</td>
<td>{@group_id}</td>
<td>{@passp_type}</td>
</tr>
</tbody>
</table>
</body>
</html>
---