Все сервисы используют базовый url /sem-restservices
. Указанные в примерах адреса используются только для иллюстрации и пояснения запросов.
Для работы с платформой необходимо авторизоваться. Платформа не предоставляет данных не авторизованным пользователям.
Пример авторизации:
Curl
curl -X POST "http://10.0.0.1/sem-restservices/auth/login?username=demo&password=DemoPassword" -H "accept: application/json" -H "Content-Type: application/json"
Request URL
http://10.0.0.1/sem-restservices/auth/login?username=demo&password=DemoPassword
Пример ответа:
Responce Header
HTTP/1.1 200 OK
Set-Cookie: SEMSESSIONID=e7ef1f62-a6d1-0000-0000-000000000000; Path=/; HttpOnly; SameSite=lax
Set-Cookie: rememberMe=deleteMe; Path=/sem-restservices; Max-Age=0; Expires=Wed, 29-Sep-2021 10:43:42 GMT; SameSite=lax
Set-Cookie: language=ru-RU;Version=1;Path=/sem-restservices
Set-Cookie: issToken=teB%2BzETLJ2HQ2kFm6t6H6yxys5dPNUiZHZZzms3xWa2i%2FNmKDyfYqLSQni3sIcwk%2BiGZakEKFTIjkuD1rbxyPItKx4K47JTpN7bYVBmClDfP%2B;Version=1;Path=/
Access-Control-Allow-Credentials: true
Body
{
"id": 101,
"login": "demo",
"firstname": "Demo User",
"lastname": "Last name Demo",
"middlename": "",
"state": {
"id": 1,
"name": "Пользователь активен",
"comment": "Вход в систему разрешен"
},
"theme": 1,
"ilocale": "ru-RU",
"defaultScreen": 1,
"soundOn": false,
"comment": null,
"authService": "LOCAL",
"privileges": [{...}]
Далее все запросы должны использовать cookies issToken, SEMSESSIONID
.
Состав объектов зависит от прав доступа логина пользователя.
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/object/shortest" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/object/shortest
Пример ответа:
Body
[
{
"id": 10101,
"shortname": "Объект-1"
},
{
"id": 9747,
"shortname": "Demo object"
},..
]
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/object" -H "accept: application/json"
или
curl -X GET "http://10.0.0.1/sem-restservices/db/object?state=1&state=2"" -H "accept: application/json"
где state - статус объекта (см. Объекты
Request URL
http://10.0.0.1/sem-restservices/db/object
Пример ответа:
Body
[
{
"id": 10101,
"shortname": "СТРЕЛКА",
"fullname": "ОБЪЕКТ СТРЕЛКА",
"comment": "Объект для задач тестирования",
"zipcode": '202302',
"timezone": 3,
"area": 500,
"latitude": 55.832281,
"longitude": 37.623241,
"employees": 50,
"objrubric": {
"id": 1451,
"shortname": "Рубрика объекта"
},
"sdirobjectstate": {
"id": 1,
"objstatename": "новый",
"comment": "На объекте не установлен или не настроен контроллер"
},
"worstparamstate": {
"id": 1,
"statename": "Норма",
"statecolor": "Норма",
"comment": "Значение худшего статуса у параметра на объекте "
},
"worstparamcount": 0,
"paramtags": [
"Вода",
"Напряжение",
"Температура",
"НАПРЯЖЕНИЕ",
"Электроэнергия",
"Качество",
"Геркон",
"Климат",
"ВВОД",
"Погода"
],
"calendar": {
"id": 1,
"name": "Производственный календарь России",
"description": "описание календаря"
},
"address": 'Москва, Академика Королева',
"controllersTotalCount": 1,
"controllersOfflineCount": 1,
"attrs": {
"Рабочий тел.": "926-8383948",
"Должность": "Директор"
}
}, .... {}
]
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/object/10101" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/object/10101
Дополнительно к сведениям полной модели выдается режим работы объекта (при его наличии)
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/object/10101/unit" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/object/10101/unit
Ответ содержит список устройств и полную информацию о способе подключения устройства к контроллеру.
Поскольку параметры бывают физические и вычисляемые, то реализовано несколько методов:
curl -X GET "http://10.0.0.1/sem-restservices/db/object/10101/cdp" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/object/10101/cdp
Параметры запроса:
ctrability | true/false | фильтр по признаку поддержки управления параметром |
locked | true/false | фильтр по признаку установленной блокировки на параметр |
tag | string | фильтр по установленному тегу на параметр |
Например:
curl -X GET "http://10.0.0.1/sem-restservices/db/object/3131/cdp?locked=false&tag=ВОДА&tag=ВВОД"" -H "accept: application/json"
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/object/10101/ccp" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/object/10101/ccp
Параметры запросы такие же как у физических параметров.
curl -X GET "http://10.0.0.1/sem-restservices/db/object/10101/params" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/object/10101/params
Параметры запроса:
calc | true/false | фильтр, с учетом вычисляемых параметров |
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/measure/8888/{to}/{from}" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/measure/8888/1632947400000/1633022160000?count=1000
где,
8888 - ID параметра, полученное по запросу выше,
{to} - дата и время начала интервала в UTC в мск;
{from} - дата и время конца интервала в UTC в мск;
Параметры запроса:
count | integer | кол-во выдаваемых точек |
Пример ответа:
Body
{
"points": [
{
"timestmp": "2021-09-30T16:51:57.032Z",
"value": 0
}
],
"id": 0
}
Этот запрос выдает сырые измерения. Платформа ограничивает получение сырых измерений интервалом до 24 часов.
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/measure/average/8888/{to}/{from}" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/measure/8888/average/1632947400000/1633022160000?count=1000
Ответ аналогичный, как в предыдущем запросе. Запрос не ограничивает интервал {to}-{from}, выдаются средниее значения параметра на 30 минутном интервале.
В том случае, если необходимо получить дополительные значения параметра на интервале, можно использовать следующий запрос:
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/measure/candles/8888/{to}/{from}" -H "accept: application/json"
Request URL
http://10.0.0.1/sem-restservices/db/measure/8888/candles/1632947400000/1633022160000?count=1000
Пример ответа:
Body
{
"candles": [
{
"timestmp": 1632947400000,
"open": 10,
"close": 25,
"low": 1,
"high": 50
}, ...
]
}
Запросы для получения вычисляемого параметра аналогичны как для физических параметров:
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/calcvalue/9999/{to}/{from}" -H "accept: application/json"
curl -X GET "http://10.0.0.1/sem-restservices/db/calcvalue/average/9999/{to}/{from}" -H "accept: application/json"
curl -X GET "http://10.0.0.1/sem-restservices/db/calcvalue/candles/9999/{to}/{from}" -H "accept: application/json"
где,
9999 - ID параметра, полученное по запросу выше,
{to} - дата и время начала интервала в UTC в мск;
{from} - дата и время конца интервала в UTC в мск;
Параметры запроса:
count | integer | кол-во выдаваемых точек |
Запрос значений сигнальных параметров (значения сигнальных параметров могут быть либо 0 либо 1) выполняется отдельными запросами:
Curl
curl -X GET "http://10.0.0.1/sem-restservices/db/signal/9999/{to}/{from}" -H "accept: application/json"