Web API: различия между версиями

Материал из wiki.quadrobit.com
Перейти к навигации Перейти к поиску
 
(не показаны 52 промежуточные версии 2 участников)
Строка 1: Строка 1:
h1. API v01
+
<languages />
 +
<translate>
  
 +
<!--T:1-->
 +
* API v01 *
 +
 +
<!--T:2-->
 
API ( json )
 
API ( json )
  
 +
<!--T:3-->
 
URL https://quadrobit.com/
 
URL https://quadrobit.com/
  
= Авторизация (login) =
+
= Общие сведения =
 +
 
 +
Обмен данными между Пользователем и серверной частью системы Quadrobit Smart Home осуществляется путём отправки пакетов (запросов и ответов).
 +
Пакет отправляется по HTTP методом POST на указанный адрес Request URL.
 +
 
 +
Запрос может содержать JSON-структуру, включающую один или несколько параметров.
 +
После успешной авторизации Пользователя запрос всегда должен содержать параметр token.
 +
 
 +
В ответ на полученный запрос Сервер возвращает Пользователю следующую JSON-структуру:
 +
<pre>
 +
{
 +
error: null,
 +
data: { ... }
 +
}
 +
</pre>
 +
 
 +
Параметр error содержит информацию о результате выполнения запроса. error: null - запрос выполнен успешно.
 +
 
 +
Структура и содержание параметра data определяется типом запроса.
 +
 
 +
 
 +
= Учётная запись = <!--T:4-->
 +
== Авторизация (login) ==
 +
 
 +
<!--T:5-->
 +
Запрос:
 +
 
 +
<!--T:6-->
 +
Request URL: [site]/api/login
 +
 
 +
<!--T:7-->
 +
Параметры запроса:
 +
 
 +
<!--T:8-->
 +
#(string) email,
 +
#(string) password
  
request:
+
<!--T:10-->
Адрес: [site] /api/login
+
Пример запроса:  
параметры запроса: (string) email , (string) password
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
Строка 17: Строка 56:
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа: (object)
+
<!--T:11-->
пример:  
+
Ответ:
 +
 
 +
<!--T:12-->
 +
Пример ответа (data):  
 
<pre>
 
<pre>
 
{
 
{
Строка 35: Строка 77:
 
}
 
}
  
 +
<!--T:13-->
 
</pre>
 
</pre>
  
  
= Регистрация (registration) =   
+
== Регистрация (registration) == <!--T:14-->    
 +
 
 +
<!--T:15-->
 +
Запрос:
  
request:
+
Request URL: [site]/api/registration
Адрес: [site] /api/registration
+
 
параметры запроса: (string) email , (string) password
+
<!--T:16-->
пример:  
+
Параметры запроса:
 +
 
 +
<!--T:17-->
 +
#(string) email,
 +
#(string) password
 +
 
 +
<!--T:19-->
 +
Пример запроса:  
 
<pre>
 
<pre>
 
{
 
{
Строка 50: Строка 103:
 
}
 
}
 
</pre>
 
</pre>
response:
+
Ответ:
параметры ответа: (object)
+
 
пример:  
+
Пример ответа (data):  
 
<pre>
 
<pre>
 
{
 
{
Строка 67: Строка 120:
  
  
= Профиль пользователя (profile) =
+
== Профиль пользователя (profile) == <!--T:20-->
 +
 
 +
<!--T:21-->
 +
Запрос:
 +
 
 +
<!--T:22-->
 +
Request URL: [site]/api/profile/
 +
 
 +
<!--T:23-->
 +
Параметры запроса: (string) token
  
request:
+
<!--T:24-->
Адрес: [site] /api/profile/
+
Пример запроса:  
параметры запроса: (string) token
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
Строка 78: Строка 138:
 
}
 
}
 
</pre>
 
</pre>
response:
+
Ответ:
параметры ответа: (object)
+
 
пример:  
+
Пример ответа (data):  
 
<pre>
 
<pre>
 
{
 
{
Строка 100: Строка 160:
 
</pre>
 
</pre>
  
= Список помещений Пользователя (rooms) =  
+
= Контроллеры = <!--T:25-->
 +
 
 +
== Список Контроллеров Пользователя (list) == <!--T:26-->
 +
 
 +
<!--T:27-->
 +
Запрос:
 +
 
 +
Request URL: [site]/api/ctrl/list/
 +
 
 +
<!--T:28-->
 +
Параметры запроса: (string) token
  
request:
+
<!--T:29-->
Адрес: [site] /api/profile/rooms/
+
Пример запроса:
параметры запроса: (string) token
+
пример:
 
 
<pre>
 
<pre>
 
{
 
{
Строка 111: Строка 180:
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа: (object)
+
<!--T:30-->
пример:  
+
Ответ:
 +
 
 +
<!--T:32-->
 +
Пример ответа (data):  
 
<pre>
 
<pre>
 
{
 
{
 
"0":{
 
"0":{
"id":19, //ID дирректории
+
"id": 651,
"root_id":0,  //ID корневой дирректории, 0 - верхний уровень
+
"name": "AE439648F951",
"user_id":10,
+
"ip": "192.168.10.135",
"lvl":0, // уровень вложенности текущей дирректории
+
"fw_id": "1",
"name":"Дом",
+
"hostname": "quadrobase",
"icon_id":21,
+
"armed": 0,
"icon_type":1,
+
"address": "",
"color":"#674ea7", //цвет фона
+
"lat": null,
"position":0, //позиция сортировки
+
"lng": null,
"readonly":0, // если 1 - только для чтения, нельзя изменять
+
"timezone": 2,
"visible":1 //активно/неактивно
+
"online": 1,
},
+
"last_online": "2019-06-17 19:36:48",
"1":{
+
"type_signal": "wifi",
"id":22,
+
"wifi_param": -67,
"root_id":19,
+
"gsm_param": 0,
...
+
"phone": "",
}
+
"pin": 0,
}
+
"user_controller_name": "quadrobase",
</pre>
+
"on_dashboard": 0
 +
}]
 +
</pre>
 +
 
 +
== Информация о Контроллере (info) == <!--T:33-->
 +
 
 +
<!--T:34-->
 +
Запрос:
 +
 
 +
Request URL: [site]/api/ctrl/info/
 +
 
 +
<!--T:35-->
 +
Параметры запроса:
  
 +
#(int) controller_id,
 +
#(string) token
  
= Информация о помещении (room-info) =
+
<!--T:36-->
+
Пример запроса:  
request:
 
Адрес: [site] /api/profile/room-info/
 
параметры запроса: (string) token, (int) room_id
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
"room_id":22,
+
"controller_id": 1 ,
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа: (object)
+
<!--T:37-->
пример:  
+
Ответ:
 +
 
 +
<!--T:39-->
 +
Пример ответа (data):
 +
 
 +
<!--T:40-->
 
<pre>
 
<pre>
 
{
 
{
"id":19, //ID локации
+
"id":"6",
"root_id":0,  //ID корневой локации, 0 - верхний уровень
+
"name":"66D4E809EF0A",
"user_id":10,
+
"hostname":"Test Valera 34",
"lvl":0, // уровень вложенности текущей локации
+
"armed":0,
"name":"Дом",
+
"address":"",
"icon_id":21,
+
"lat":50.4156,
"icon_type":1,
+
"lng":30.5336,
"color":"#674ea7", //цвет фона
+
"ip":"192.168.1.155",
"position":0, //позиция сортировки
+
"fw_id":1,
"readonly":0, // если 1 - только для чтения, нельзя изменять
+
"timezone":3,
"visible":1 //активно/неактивно
+
"online":1,
"devices_ids {  // IDs устройств прикрепленных к комнате
+
"last_online":"2019-07-29 17:08:41",
"0":101,
+
"type_signal":"wifi",
"1":103
+
"wifi_param":-78,
}
+
"gsm_param":0,
 +
"phone":"",
 +
"pin":0,
 +
"user_controller_name":"Test Valera 34",
 +
"on_dashboard":0
 
}
 
}
 
</pre>
 
</pre>
  
 +
== Постановка/снятие Контроллера на охрану / с охраны  (armed) == <!--T:41-->
 +
 +
<!--T:42-->
 +
Запрос:
 +
 +
<!--T:43-->
 +
Request URL: [site]/api/ctrl/armed/
 +
 +
<!--T:44-->
 +
Параметры запроса:
  
 +
№(int) controller_id,
 +
№(string) token
  
= Список Контроллеров Пользователя (list) =
+
Пример запроса:
  
request:
+
<!--T:45-->
Адрес: [site] /api/ctrl/list/
 
параметры запроса: (string) token
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
 +
"controller_id": 6 ,
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа: (array)  
+
Так как MQTT односторонний - ответа быть не может. Ответ что запрос ушел:
пример:  
+
 
 +
Ответ:
 +
 +
Пример ответа (data):  
 
<pre>
 
<pre>
 
{
 
{
"0":{
+
"result": "Ok"
"id":"11",
+
}
"name":"AS_A61301A020E4",
+
</pre>
"armed":"0",  //0 - снят с охраны, 1 - под охраной
+
 
"device_ids":"a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}", //ids устройств на контроллере
+
 
"action_ids":"a:0:{}", //ids действий на контроллере
+
== Добавление Контроллера (add) == <!--T:46-->
"timezone":"3",
+
 
"token":"747D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
+
<!--T:47-->
"online":"1"
+
Запрос:
},
 
"1":{
 
"id":"12",
 
"name":"AS_A61301A020E5",
 
"armed":"1",
 
"device_ids":"a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}",
 
"action_ids":"a:0:{}",
 
"timezone":"2",
 
"token":"734D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
 
"online":"0"
 
}]
 
</pre>
 
  
 +
<!--T:48-->
 +
Request URL: [site]/api/ctrl/add
  
= Информация о Контроллере (info) =
+
<!--T:49-->
 +
Параметры запроса: (string) token
  
request:
+
<!--T:50-->
Адрес: [site] /api/ctrl/info/
+
Пример:  
параметры запроса: (int) controller_id , (string) token
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
"controller_id": 1 ,
 
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
}
 
</pre>
 
</pre>
response:
 
параметры ответа: (object)
 
пример:
 
  
 +
Ответ:
 +
 +
Пример ответа:
 
<pre>
 
<pre>
 
{
 
{
"id":"6",
+
"PIN":"7gDH"
"name":"AS_7F26335CCF4B",
 
"armed":"1",
 
"device_ids":"a:26:{i:0;i:25;i:1;i:26;i:2;i:28;i:3;i:19;i:4;i:40;i:5;i:41;i:6;i:42;i:7;i:43;i:8;i:36;i:9;i:34;i:10;i:29;i:11;i:45;i:12;i:38;i:13;i:33;i:14;i:30;i:15;i:31;i:16;i:49;i:17;i:24;i:18;i:46;i:19;i:47;i:20;i:44;i:21;i:27;i:22;i:22;i:23;i:9;i:24;i:23;i:25;i:7;}",
 
"action_ids":"a:4:{i:0;i:45;i:1;i:46;i:2;i:49;i:3;i:42;}",
 
"timezone":"3",
 
"token":"660D91C2B0926A8C981AE7DA4AAA4421A3D86D136262A6F8E98ACF534A7A715B",
 
"online":"1"
 
 
}
 
}
 
</pre>
 
</pre>
  
= Постановка/снятие Контроллера на охрану / с охраны  (armed) =
+
После ввода пин-кода необходимо обновить список Контроллеров (/api/ctrl/list/)
 +
 
 +
== Обновление списка устройств и действий на Контроллере (update) == <!--T:51-->
 +
 
 +
=== Этап 1 - обновляем список IDS устройств на Контроллере === <!--T:52-->
 +
Запрос:
 +
 
 +
<!--T:53-->
 +
Request URL: [site]/api/ctrl/update/
  
request:
+
Параметры запроса:
Адрес: [site] /api/ctrl/armed/
+
 
параметры запроса: (int) controller_id , (string) token
+
#(int) controller_id,
пример:  
+
#(string) token
 +
 
 +
Пример запроса:  
 
<pre>
 
<pre>
 
{
 
{
Строка 255: Строка 350:
 
}
 
}
 
</pre>
 
</pre>
так как MQTT  односторонний - ответа быть не может. Ответ что запрос ушел:
+
 
response:
+
Ответ:
параметры ответа:
+
пример:  
+
Пример ответа (data):  
 
<pre>
 
<pre>
 
{
 
{
"result": "Ok"
+
"result": "Ok" // "Ok" = запрос отправлен
 
}
 
}
 
</pre>
 
</pre>
  
 +
=== Этап 2 - обновляем информацию о каждом устройстве === <!--T:54-->
 +
 +
<!--T:55-->
 +
Запрос:
 +
 +
Request URL: [site]/api/ctrl/update-devices/
 +
 +
<!--T:56-->
 +
Параметры запроса:
  
== Добавление Контроллера (add) =
+
<!--T:57-->
 +
#(int) controller_id,
 +
#(string) token
  
request:
+
<!--T:58-->
Адрес: [site] /api/ctrl/add
+
Пример запроса:  
параметры запроса: (string) token
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
+
"controller_id": 6 ,
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа:  
+
<!--T:59-->
пример:
+
Ответ:  
 +
 
 +
<!--T:61-->
 +
Пример ответа:  
 +
 
 
<pre>
 
<pre>
 
{
 
{
"PIN":"7gDH"
+
"result": "Ok" // Запрос отправлен
 
}
 
}
 
</pre>
 
</pre>
после ввода пин-кода необходимо обновить список Контроллеров (/api/ctrl/list/)
 
  
= Обновление списка устройств и действий на Контроллере (update) =
+
Процесс происходит автоматически. Для получения результата требуется таймаут, после чего делается стандартный запрос на получение данных (контроллер, устройства)
 +
 
 +
 
 +
== Удаление Контроллера (delete) == <!--T:62-->
 +
 
 +
Запрос:
 +
 
 +
<!--T:63-->
 +
Request URL: [site]/api/ctrl/delete
  
=== Этап 1 - обновляем список IDS устройств на Контроллере ===
+
<!--T:65-->
request:
+
Пример запроса:
Адрес: [site] /api/ctrl/update/
+
параметры запроса: (int) controller_id , (string) token
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"controller_id": 6 ,
+
"token":"8yE-VIQrYuZ2bTeho_lajxjOJPnIe_Yx",
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
+
"controller_id":"81"
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа:  
+
<!--T:66-->
пример:
+
Ответ:
 +
 +
Пример ответа:
 +
 
 
<pre>
 
<pre>
 
{
 
{
"result": "Ok" // "Ok" = запрос ушел
+
"error":null,
 +
"data":{"result":"Ok"}
 
}
 
}
 
</pre>
 
</pre>
  
=== Этап 2 - обновляем информацию о каждом устройстве ===
+
== Обновление статуса контроллера (update-status) == <!--T:67-->
 +
 
 +
<!--T:68-->
 +
Запрос:
 +
 
 +
<!--T:69-->
 +
Request URL: [site]/api/ctrl/update-status/
 +
 
 +
<!--T:70-->
 +
Параметры запроса:
  
request:
+
#(string) token,
Адрес: [site] /api/ctrl/update-devices/
+
#(int) controller_id
параметры запроса:
+
 
 +
<!--T:73-->
 +
Пример запроса:
  
(int) controller_id , (string) token
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"controller_id": 6 ,
 
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"controller_id": 122
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа:  
+
<!--T:74-->
пример:
+
Ответ:
 +
 
 +
<!--T:76-->
 +
Пример ответа:
 +
 
 
<pre>
 
<pre>
 
{
 
{
"result": "Ok" // ответ что запрос ушел
+
"error":null,
 +
"data":{
 +
"result":"Ok"
 +
}
 
}
 
}
 
</pre>
 
</pre>
Процесс происходит автоматически. Для получения результата требуется таймаут, после чего делается стандартный запрос на получение данных (контроллер, устройства)
 
  
 +
== Получение актуального статуса Контроллера (get-status) ==  <!--T:77-->
 +
 +
Запрос:
  
= Удаление Контроллера (delete) =
+
<!--T:78-->
 +
Request URL: [site]/api/ctrl/get-status/
 +
 
 +
<!--T:79-->
 +
Параметры запроса:
 +
 
 +
#(string) token,
 +
#(int) controller_id
 +
 
 +
<!--T:82-->
 +
Пример запроса:
  
request:
 
Адрес: [site] /api/ctrl/del
 
параметры запроса:
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"controller_id": 122
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа:  
+
<!--T:83-->
пример:
+
Ответ:
 +
 
 +
<!--T:85-->
 +
Пример ответа:
 +
 
 
<pre>
 
<pre>
 
{
 
{
 
+
"error":null,
 +
"data":{
 +
"status":1
 +
}
 
}
 
}
 
</pre>
 
</pre>
  
 +
<!--T:86-->
 +
Поле “status” может принимать следующие значения:
 +
• 0 – офлайн
  
= Список устройств пользователя (list) =
+
<!--T:87-->
 +
• 1 – онлайн
 +
 
 +
<!--T:88-->
 +
• 2 – онлайн, после включения питания
 +
 
 +
== Получение конфигурации Контроллера (config) == <!--T:89-->
 +
 
 +
<!--T:82-->
 +
Запрос:
 +
 
 +
Request URL: [site]/api/ctrl/config/
 +
 
 +
<!--T:82-->
 +
Параметры запроса:
 +
 
 +
#(string) token,
 +
#(int) controller_id
 +
 
 +
<!--T:82-->
 +
Пример запроса:
 +
 
 +
<pre>
 +
{
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"controller_id" : 111
 +
}
 +
</pre>
 +
 
 +
<!--T:82-->
 +
Ответ:
 +
 
 +
<!--T:82-->
 +
Пример ответа (data):
  
request:
 
Адрес: [site] /api/device/list/
 
параметры запроса: (int) controller_id , (string) token
 
пример:
 
<pre>
 
{
 
"controller_id": 1 ,
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
</pre>
 
response:
 
параметры ответа:
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"0":{
+
"id":"1",   // id конфигурации
"id":"122",
+
"controller_id":"111",   // id контроллера
"external_id":"19", //id на контроллере
+
"language":"ru-RU",
"controller_id":"6",
+
"hostname":"alarm-system",
"name":"Сирена",
+
"wifi_mode":1,  // 1 - STA, 2 - AP
"type_id":"2", //тип устройства
+
"wifi_sta_type":1, // 0 - STATIC, 1 - DHCP
"codes":":{    //коды (кнопки)
+
"wifi_sta_ssid":"SSID",
"0":{
+
"wifi_sta_pass":"PASSWORD",
"id":"218",
+
"wifi_sta_ip":"192.168.0.101",
"external_cod_id":"32",
+
"wifi_sta_mask":"255.255.255.0",
"device_id":"122",
+
"wifi_sta_gw":"192.168.0.1",
"name":"ON",
+
"wifi_sta_dns1":"208.67.222.222",
"code":"3675192",
+
"wifi_sta_dns2":"208.67.222.222",
"protocol":"1",
+
"wifi_ap_authmode": 3, // 0 - OPEN, 1 - WEP, 2 - WPA_PSK, 3 - WPA2_PSK, 4 - WPA_WPA2_PSK
"pulse_len":null,
+
"wifi_ap_hidden":0, // 0/1
"group_1":"1",
+
"wifi_ap_channel":1, // 1...14
"group_2":"0",
+
"wifi_ap_ssid":"SMARTHOME_000000000000",
"group_3":"0",
+
"wifi_ap_pass":"00000000",
"group_4":"0",
+
"wifi_ap_ip":"192.168.4.1",
"group_5":"0",
+
"wifi_ap_mask":"255.255.255.0",
"group_6":"0",
+
"wifi_ap_gw":"192.168.4.1",
"group_7":"0",
+
"httpd_port":80, // 1...65535
"group_8":"0",
+
"httpd_auth":0, // 0/1
"active":"1"
+
"httpd_user":"admin",
},  
+
"httpd_pass":"admin",
"1":{ ... }
+
"ntp_enable":0, // 0/1
},
+
"ntp_host":"time.windows.com",
"state":"1",
+
"ntp_tz":3, // -11...13
"on_dashboard":"1", //показывать на главной
+
"upnp_enable":1, // 0/1
"active":"1"
+
"advanced_mode":0, // 0/1
},
+
"app_afb_enable":1, // 0/1
"1":{
+
"app_leds_off":1, // 0/1
"id":"120",
+
"app_alarm_duration":10, // minutes
"external_id":"22",
+
"app_arming_delay":0, // seconds
"controller_id":"6",
+
"app_portal_link":0, // 0/1
"name":"Пульт 4кн бел",
+
"app_rf_freq":2, // 1 - 315Mhz, 2 - 433Mhz
"type_id":"3",
+
"app_rf_power":3, // 0 - 1DBM, 1 - 2DBM, 2 - 5DBM, 3 - 8DBM, 4 - 11DBM, 5 - 14DBM, 6 - 17DBM, 7 - 20DBM
"codes": ... ,
+
"app_button_action":1, // 0 - NONE, 1 - ARMING, 2 - RUN_ACTION, 3 - SEND_CODE
"state":"1",
+
"app_button_rec_id":0, // ID
"on_dashboard":"0",
+
"gsm_pin":"1234",
"active":"1"
+
"gsm_allowed_phones":"", // список через запятую
}
+
"gsm_sendto_phones":"", // список через запятую
}
+
"gsm_callto_phones":"", // один номер
</pre>  
+
"gsm_smsin_enable":"0", // 0/1
 +
"gsm_smsout_enable":"0", // 0/1
 +
"gsm_call_enable":"0", // 0/1
 +
"gprs_enable":"1", // 0/1
 +
"gprs_apn":"", "internet.mts.ru",
 +
"gprs_user":"mts",
 +
"gprs_pass":"mts",
 +
"gsm_enable":"0", // 0/1
 +
"ebus_enable":0, // 0/1
 +
"command":"xxx",
 +
"response":"0"
 +
}
 +
</pre>
 +
 
 +
 
 +
== Изменение конфигурации контроллера(config-set) == <!--T:89-->
 +
 
 +
<!--T:89-->
 +
Запрос:
 +
 
 +
Request URL: [site]/api/ctrl/config-set/
 +
 
 +
<!--T:89-->
 +
Параметры запроса:
 +
 
 +
#(string) token,  
 +
#(int) controller_id
 +
 
 +
<!--T:89-->
 +
Пример запроса:
 +
 
 +
<pre>
 +
{
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"controller_id" : 111,
 +
"command": "yyy"    // параметры контроллера смотри метод Получить конфигурацию контроллера(ctrl/config/)
 +
}
 +
</pre>
  
 +
<!--T:89-->
 +
Ответ:
  
= Информация об устройстве (info) =
+
<!--T:89-->
 +
Пример ответа (data):
  
request:
 
Адрес: [site] /api/device/info/
 
параметры запроса: (int) controller_id , (int) device_id , (string) token
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"controller_id": 1 ,
+
"result": "Ok"
"device_id": 122,
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа:  
+
==  Передача локального IP Контроллера (get-ip) == <!--T:89-->
пример:  
+
 
 +
Запрос
 +
 
 +
<!--T:90-->
 +
Request URL: [site]/api/ctrl/get-ip
 +
 
 +
<!--T:91-->
 +
Request Params:
 +
 
 +
#token (required): string(64);
 +
#controller_id (required): int;
 +
 
 +
Ответ:
 +
<!--T:94-->
 +
 
 +
Пример ответа:  
 +
 
 +
<!--T:95-->
 
<pre>
 
<pre>
 
{
 
{
"id":"122",
+
data:'192.168.0.15',
"external_id":"19",
+
error: null
"controller_id":"6",
+
}
"name":"Сирена",
+
</pre>
"type_id":"2",
+
 
"codes":{
+
== Установка подписки на Контроллере == <!--T:96-->
"0":{
+
 
"id":"218",
+
Запрос:
"external_cod_id":"32",
+
 
"device_id":"122",
+
<!--T:97-->
"name":"ON",
+
Request URL: [site]/in/subscription/set”
"code":"3675192",
+
 
"protocol":"1",
+
Ответ:
"pulse_len":null,
 
"group_1":"1",
 
"group_2":"0",
 
"group_3":"0",
 
"group_4":"0",
 
"group_5":"0",
 
"group_6":"0",
 
"group_7":"0",
 
"group_8":"0",
 
"active":"1"
 
},
 
"1":{
 
"id":"219",
 
"external_cod_id":"33",
 
"device_id":"122",
 
"name":"OFF",
 
"code":"3675186
 
...
 
}
 
},
 
"state":"1",
 
"on_dashboard":"1",
 
"active":"1"
 
}
 
</pre>
 
  
= Нажатие кнопки на устройстве (event) =
+
Пример ответа (data):
  
request:
 
Адрес: [site] /api/device/event/
 
параметры запроса: (string) controller_name , (int) device_external_id, (int) cod_external_id,      (string) token, (int) device_type
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"controller_name": " AS_7F26335CCF4B" ,
+
"seq_id": 0,
"device_external_id": 19,
+
"id": 1, // ID подписки (см. ниже)
"cod_external_id": 1,
+
"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
"device_type": 1,
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
</pre>
 
так как MQTT  односторонний - ответа быть не может. Может быть возвращён ответ, что запрос отправлен:
 
response:
 
параметры ответа:
 
пример:
 
<pre>
 
{
 
"result": "Ok"
 
 
}
 
}
 
</pre>
 
</pre>
  
 +
==  Просмотр статуса подписки (get-subscribe-status) == <!--T:98-->
 +
 +
Запрос:
 +
 +
<!--T:99-->
 +
Request URL: [site]/api/ctrl/get-subscribe-status
 +
 +
<!--T:100-->
 +
Параметры:
 +
 +
<!--T:101-->
 +
#token (required): string(64)
 +
#controller_id (required): int
 +
 +
<!--T:103-->
 +
Ответ:
  
= Обновление информации об устройстве (update) =
+
Пример ответа (data):
  
request:
+
<!--T:104-->
Адрес: [site] /api/device/update/
 
параметры запроса: (int) device_id , (string) name, (int) active, (string) token,
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
"device_id": 107,   // local device id
+
data:{
"name": "New name", // new name
+
id: 1,
"active": 1,
+
controller_id: 40,
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
+
user_id: 424,
}
+
remain_time: 100,
</pre>
+
request_time: 1355314332,
response:
+
response_time: 1355315332,
параметры ответа:  
+
success: 0
пример:  
+
},
<pre>
+
error: ''
{
 
"resuls" : "Ok"
 
 
}
 
}
 
</pre>
 
</pre>
  
= Удаление устройства (delete) =
+
==  Активация/продление/покупка подписки (set-subscribe) == <!--T:105-->
  
request:
+
Запрос:
Адрес: [site] /api/device/delete/
 
параметры запроса: (int) device_id, (string) token
 
пример:
 
<pre>
 
{
 
"device_id": 107,  // local device id
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
</pre>
 
response:
 
параметры ответа:
 
пример:
 
<pre>
 
{
 
"resuls" : "Ok"
 
  
}
+
<!--T:106-->
</pre>
+
Request URL: [site]/api/ctrl/set-subscribe
  
 +
<!--T:107-->
 +
Параметры:
  
Код:
+
<!--T:108-->
 +
#token (required): string(64)
 +
#controller_id (required): int
  
= Получение информации об устройстве(info) =
+
<!--T:110-->
 +
Ответ:
  
request:
 
Адрес: [site] /api/property/info/
 
параметры запроса: (int) controller_id, (int) device_id, (int) code_id, (string) token
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"controller_id": 6,
+
data:{
"device_id": 109,
+
id: 1,
"code_id": 192,
+
controller_id: 40,
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
+
user_id: 424,
 
+
remain_time: 100,
}
+
request_time: 1355314332,
</pre>
+
response_time: 1355315332,
response:
+
success: 0
параметры ответа:
+
},
пример:
+
error: ''
<pre>
 
{
 
"id":"192",
 
"external_cod_id":"67",
 
"device_id":"109",
 
"name":"4 OFF",
 
"code":"12209156",
 
"protocol":"1",
 
"pulse_len":null,
 
"group_1":"1",
 
"group_2":"0",
 
"group_3":"0",
 
"group_4":"0",
 
"group_5":"0",
 
"group_6":"0",
 
"group_7":"0",
 
"group_8":"0",
 
"active":"1"
 
 
}
 
}
 
</pre>
 
</pre>
  
 +
==  Метод получения списка телефонов (get-phones) == <!--T:111-->
 +
 +
Запрос:
 +
 +
<!--T:112-->
 +
Request URL: [site]/api/ctrl/get-phones
 +
 +
<!--T:113-->
 +
Параметры:
 +
 +
<!--T:114-->
 +
#token (required): string, 64
 +
#controller_id (required): int
 +
#type (optional): string,
 +
#range ['recipient', 'authorized', 'all'], (default: 'all')
 +
 +
<!--T:117-->
 +
Ответ:
  
= (create) ?? =
+
Пример ответа:
  
request:
+
<!--T:118-->
Адрес: [site] /api/
 
параметры запроса:
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
+
'error': null,
 +
data: [
 +
{'id': 5, 'phone': '+380123456789'},
 +
{'id': 6, 'phone': '+380123334455'},
 +
{'id': 7, 'phone': '+380112223344'}
 +
]
 
}
 
}
 
</pre>
 
</pre>
response:
 
параметры ответа:
 
пример:
 
<pre>
 
{
 
  
}
 
</pre>
 
  
= (update) ?? =
+
==  Редактирование телефона (edit-phone) == <!--T:119-->
  
request:
+
Запрос:
  
Адрес: [site] /api/property/update/
+
<!--T:120-->
параметры запроса: (int) device_id , (int) code_id,  (string)name, (int) active,  (string) token
+
Request URL: [site]/api/ctrl/edit-phone
пример:
 
<pre>
 
{
 
"device_id": 107,  // local device id
 
"name": "New name", // new name
 
"active": 1,
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
</pre>
 
response:
 
параметры ответа:
 
пример:
 
<pre>
 
{
 
"resuls" : "Ok"
 
}
 
</pre>
 
  
= (delete) ?? =
+
<!--T:121-->
request:
+
Параметры:
Адрес: [site] /api/
 
параметры запроса:  
 
пример:  
 
{
 
 
}
 
response:
 
параметры ответа:
 
пример:
 
{
 
  
}
+
<!--T:122-->
 +
#token (required): string, 64
 +
#phone_id (required): int
 +
#is_recipient (optional): int
 +
#is_authorized (optional): int
 +
#phone (optional): string
  
 +
<!--T:127-->
 +
Ответ:
  
= Список действий (list) =
+
Пример ответа:
h3. (list)
 
request:
 
Адрес: [site] /api/scheduler/list/
 
параметры запроса: (string) token
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
+
"error":null,
}
+
"data":{
 +
"id":2,
 +
"controller_id":81,
 +
"phone":"+380503334455",
 +
"is_recipient":"1",
 +
"is_authorized":0
 +
}
 +
}
 
</pre>
 
</pre>
response:
 
параметры ответа:
 
пример:
 
<pre>
 
{
 
"0":{
 
"id":9,
 
"external_id":42,
 
"name":"test_form_web",
 
"operation":"local",
 
"armed":0,
 
"type":"meteo",
 
"action_id":1,
 
"a_controller_id":6,
 
"a_device_id":112,
 
"a_code_id":0,
 
"a_device_external_id":38,
 
"a_armed":0,
 
"a_conf1":0,
 
"a_conf2":0,
 
"a_conf3":0,
 
"a_conf4":0,
 
"a_conf5":0,
 
"a_conf6":0,
 
"a_conf7":0,
 
"a_conf8":0,
 
"target_id":1,
 
"t_controller_id":6,
 
"t_device_id":119,
 
"t_code_id":203,
 
"t_device_external_id":7,
 
"t_armed":0,
 
"t_conf1":0,
 
"t_conf2":0,
 
"t_conf3":0,
 
"t_conf4":0,
 
"t_conf5":0,
 
"t_conf6":0,
 
"t_conf7":0,
 
"t_conf8":0,
 
"date":null,
 
"repetition":"0",
 
"sensor_type":"1",
 
"logic_operation":"=",
 
"value":"3",
 
"active":1
 
},
 
"1":{
 
"id":10,
 
"external_id":45
 
...
 
}
 
}
 
  
</pre>
 
  
 +
==  Удаление телефона (delete-phone) == <!--T:128-->
 +
 +
Запрос:
 +
 +
<!--T:129-->
 +
Request URL: [site]/api/ctrl/delete-phone
  
= Обновление действий (update) =
+
<!--T:130-->
 +
Параметры:
 +
 
 +
<!--T:131-->
 +
#token (required): string, 64
 +
#phone_id (required): int
 +
 
 +
<!--T:133-->
 +
Ответ:
 +
 
 +
Пример ответа:
  
Запрос осуществляется в 2 этапа: на первом этапе происходит при запросе на обновление Контроллера (см. "Обновление Контроллера");
 
на втором этапе обновляется информация о каждом действии.
 
request:
 
Адрес: [site] /api/scheduler/update/
 
параметры запроса: (int) controller_id, (string) token
 
пример:
 
<pre>
 
{
 
"controller_id": 6 ,
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 
}
 
</pre>
 
response:
 
параметры ответа:
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"result": "Ok" // ответ что запрос ушел
+
"error":null,
 +
"data":{"response":"OK"}
 
}
 
}
 
</pre>
 
</pre>
Процесс обновления происходит автоматически. Для получения результата требуется таймаут, после чего делается стандартный запрос на получение данных (Контроллер, действия)
 
  
 +
== Добавление телефона (add-phone) == <!--T:134-->
 +
 +
Запрос:
 +
 +
<!--T:135-->
 +
Request URL: [site]/api/ctrl/add-phone
 +
 +
<!--T:136-->
 +
Params:
 +
 +
<!--T:137-->
 +
#token (required): string, 64
 +
#controller_id (required): int
 +
#phone (required): string
 +
#is_recipient (optional): int
 +
#is_authorized (optional): int
 +
 +
<!--T:142-->
 +
Ответ:
  
= Информация о действии (info) =
+
Пример ответа:
  
request:
+
<!--T:143-->
Адрес: [site] /api/scheduler/info/
 
параметры запроса: (int) scheduler_id, (string) token
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
"scheduler_id": 122,
+
"error":null,
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
+
"data":{
 +
"id":2,
 +
"controller_id":81,
 +
"phone":"+380503334455",
 +
"is_recipient":"1",
 +
"is_authorized":0
 +
}
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа:  
+
== Информация о версии прошивки контроллера (fw-version-current) == <!--T:145-->
пример:  
+
 
 +
Запрос:
 +
 
 +
Request URL: [site]/api/ctrl/fw-version-current/
 +
 
 +
Параметры запроса:
 +
 
 +
#(int) controller_id,
 +
#(string) token
 +
 
 +
Пример запроса:
 +
 
 
<pre>
 
<pre>
 
{
 
{
"id":9,
+
"controller_id": 1 ,
"external_id":42,
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
"name":"test_form_web",
 
"operation":"local",
 
"armed":0,
 
"type":"meteo",
 
"action_id":1,
 
"a_controller_id":6,
 
"a_device_id":112,
 
"a_code_id":0,
 
"a_device_external_id":38,
 
"a_armed":0,
 
"a_conf1":0,
 
"a_conf2":0,
 
"a_conf3":0,
 
"a_conf4":0,
 
"a_conf5":0,
 
"a_conf6":0,
 
"a_conf7":0,
 
"a_conf8":0,
 
"target_id":1,
 
"t_controller_id":6,
 
"t_device_id":119,
 
"t_code_id":203,
 
"t_device_external_id":7,
 
"t_armed":0,
 
"t_conf1":0,
 
"t_conf2":0,
 
"t_conf3":0,
 
"t_conf4":0,
 
"t_conf5":0,
 
"t_conf6":0,
 
"t_conf7":0,
 
"t_conf8":0,
 
"date":null,
 
"repetition":"0",
 
"sensor_type":"1",
 
"logic_operation":"=",
 
"value":"3",
 
"active":1
 
 
}
 
}
</pre>  
+
</pre>
 +
 
 +
Ответ:
  
 +
Пример ответа (data):
  
=== (create) ===
+
<pre>
request:
 
Адрес: [site] /api/
 
параметры запроса:
 
пример:
 
<pre>
 
 
{
 
{
+
"version_id":1,
 +
"version_name":"0.01",
 +
"tag":"OLD",
 +
"url":"\/controllers_fw\/NULL.bin",
 +
"date":"16.10.2018",
 +
"new_version_id":38  // если "new_version_id" != "version_id" значит имеется новая версия.
 
}
 
}
</pre>  
+
</pre>
 +
 
 +
 
 +
== Информация о последней версии прошивки контроллера (get-new-fw-version) == <!--T:145-->
 +
 
 +
Запрос:
 +
 
 +
Request URL: [site]/api/ctrl/get-new-fw-version/
 +
 
 +
Параметры запроса:
  
response:
+
#(int) controller_id,
параметры ответа:
+
#(string) token
пример:
 
<pre>
 
{
 
  
}
+
<pre>
</pre>  
+
Пример запроса:
  
=== (update) ===
 
request:
 
Адрес: [site] /api/
 
параметры запроса:
 
пример:
 
<pre>
 
 
{
 
{
+
"controller_id": 1 ,
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
}
</pre>  
+
</pre>
  
response:
+
Ответ:
параметры ответа:
 
пример:
 
<pre>
 
{
 
  
}
+
Пример ответа (data):
</pre>
 
  
=== (delete)===
 
request:
 
Адрес: [site] /api/login
 
параметры запроса:
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
+
"version_id":38,
 +
"version_name":"0.14",
 +
"tag":"0.14 \/ Oct 5 2018 16:49:04",
 +
"url":"\/controllers_fw\/tls-smarthome-hw-9_0.14.bin",
 +
"date":"16.10.2018"
 
}
 
}
</pre>  
+
</pre>
 +
 
 +
= Устройства = <!--T:144-->
 +
 
 +
== Получение списка устройств пользователя (list) == <!--T:145-->
 +
 
 +
<!--T:146-->
 +
Запрос:
  
response:
+
<!--T:147-->
параметры ответа:
+
Request URL: [site]/api/device/list
пример:  
 
  
<pre>
+
<!--T:148-->
{
+
Параметры запроса:
  
}
+
#(int) controller_id,
</pre>
+
#(string) token
  
= Логи пользователя (logs) =
+
<!--T:149-->
request:
+
Пример запроса:  
Адрес: [site] /api/profile/logs/
 
параметры запроса: (string) token
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
 +
"controller_id": 1 ,
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
}
 
</pre>
 
</pre>
response:
 
параметры ответа: (object)
 
пример:
 
{
 
 
}
 
________________________________________
 
  
 
+
<!--T:150-->
 
+
Ответ:
= Получение метеоданных (last) =
+
 
+
Пример ответа (data):  
request:
 
Адрес: [site] /api/device/meteo-last/
 
параметры запроса: (string) token, (int) device_id
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
+
"0":{
"device_id": 130
+
"id":"122",
}
+
"external_id":"19", //id на контроллере
</pre>
+
"controller_id":"6",
response:
+
"name":"Сирена",
параметры ответа: (object)
+
"type_id":"2",  //тип устройства
пример:  
+
"codes":":{    //коды (кнопки)
<pre>
+
"0":{
{
+
"id":"218",
"id":"4046",
+
"external_cod_id":"32",
"controller_name":"AS_7FD6785CCF5D",
+
"device_id":"122",
"internal_id":"55",
+
"name":"ON",
"device_id":"130",
+
"code":"3675192",
"name":"7",
+
"protocol":"1",
"temp":"240",
+
"pulse_len":null,
"hum":"245",
+
"group_1":"1",
"illum":"0",
+
"group_2":"0",
"pres":"1239",
+
"group_3":"0",
"volt":"32",
+
"group_4":"0",
"date_time":"2016-03-02 21:09:40",
+
"group_5":"0",
"new":"0"
+
"group_6":"0",
}
+
"group_7":"0",
</pre>
+
"group_8":"0",
 
+
"active":"1"
= Получение метеоданных за период (period) =
+
},
request:
+
"1":{ ... }
Адрес: [site] /api/device/meteo-period/
+
},
параметры запроса: (string) token, (int) device_id, (int) period
+
"state":"1",
пример:
+
"on_dashboard":"1", //показывать на главной
<pre>
+
"active":"1"
{
+
},
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
+
"1":{
"device_id": 130,
+
"id":"120",
"period": 1 // количество дней
+
"external_id":"22",
}
+
"controller_id":"6",
</pre>
+
"name":"Пульт 4кн бел",
 +
"type_id":"3",
 +
"codes": ... ,
 +
"state":"1",
 +
"on_dashboard":"0",
 +
"active":"1"
 +
}
 +
}
 +
</pre>  
 +
 
 +
 
 +
== Информация об устройстве (info) == <!--T:151-->
 +
 
 +
<!--T:152-->
 +
Запрос:
 +
 
 +
<!--T:153-->
 +
Request URL: [site]/api/device/info/
 +
 
 +
<!--T:154-->
 +
Параметры запроса:
 +
 
 +
<!--T:155-->
 +
#(int) controller_id,
 +
#(int) device_id,
 +
#(string) token
  
response:
+
<!--T:158-->
параметры ответа: (array to objects)
+
Пример запроса:  
пример:  
 
 
<pre>
 
<pre>
[
+
{
{
+
"controller_id": 1 ,
"id":"4065",
+
"device_id": 122,
"controller_name":"AS_7FD6785CCF5D",
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
"internal_id":"55",
+
}
"device_id":"130",
 
"name":"7",
 
"temp":"240",
 
"hum":"523",
 
"illum":"0",
 
"pres":"1239",
 
"volt":"32",
 
"date_time":"2017-07-30 21:11:07",
 
"new":"0"
 
},
 
{
 
"id":"4067",
 
"controller_name":"AS_7FD6785CCF5D
 
...
 
},
 
]
 
 
</pre>
 
</pre>
  
= Получение данных электропитания (last) =
+
<!--T:159-->
 +
Ответ:
 
   
 
   
request:
+
Пример ответа (data):  
Адрес: [site] /api/device/electro-last/
 
параметры запроса: (string) token, (int) device_id
 
пример:  
 
 
<pre>
 
<pre>
 
{
 
{
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
+
"id":"122",
"device_id": 130
+
"external_id":"19",
}
+
"controller_id":"6",
 +
"name":"Сирена",
 +
"type_id":"2",
 +
"codes"
 +
"0"
 +
"id":"218",
 +
"external_cod_id":"32",
 +
"device_id":"122",
 +
"name":"ON",
 +
"code":"3675192",
 +
"protocol":"1",
 +
"pulse_len":null,
 +
"group_1":"1",
 +
"group_2":"0",
 +
"group_3":"0",
 +
"group_4":"0",
 +
"group_5":"0",
 +
"group_6":"0",
 +
"group_7":"0",
 +
"group_8":"0",
 +
"active":"1",
 +
},
 +
"1"
 +
"id":"219",
 +
"external_cod_id":"33",
 +
"device_id":"122",
 +
"name":"OFF",
 +
"code":"3675186
 +
...
 +
}
 +
},
 +
"state":"1",
 +
"on_dashboard":"1",
 +
"active":"1",
 +
"alias":"xxx",
 +
"send_sms ":0,
 +
"voice_call":0,
 +
place"
 +
"name":null,
 +
"color":null
 +
}
 +
}
 +
 
 
</pre>
 
</pre>
response:
+
 
параметры ответа: (object)
+
== Обновление информации об устройстве (update) == <!--T:161-->
пример:  
+
 
 +
<!--T:162-->
 +
Запрос:
 +
 
 +
<!--T:163-->
 +
Request URL: [site]/api/device/update/
 +
 
 +
<!--T:164-->
 +
Параметры запроса:
 +
 
 +
<!--T:165-->
 +
#(int) device_id,
 +
#(string) name,
 +
#(int) active,
 +
#(string) token,
 +
 
 +
<!--T:169-->
 +
Пример запроса (data):
 +
 
<pre>
 
<pre>
 
{
 
{
"id":"318",
+
"device_id": 107,   // local device id
"controller_id":"11",
+
"name": "New name", // new name
"external_id":"2",
+
"active": 1,
"device_id":"125",
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
"name":"23",
 
"token":"747D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
 
"last_seen":"2017-07-21 04:20:27",
 
"available":"1",
 
"voltage":"24",
 
"have_voltage":"1",
 
"current":"2147483647",
 
"have_current":"1",
 
"supp_voltage":"33",
 
"date_create":"2017-07-21 01:20:33",
 
"new":"0"
 
 
}
 
}
</pre>  
+
</pre>
  
= Получение данных электропитания за период (period) =
+
Ответ:
 
   
 
   
request:
+
Пример ответа (data):
Адрес: [site] /api/device/electro-period/
+
 
параметры запроса: (string) token, (int) device_id, (int) period
 
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
+
"result" : "Ok"
"device_id": 130,
 
"period": 1 // количество дней
 
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа: (array to objects)
+
== Удаление устройства (delete) == <!--T:171-->
пример:  
+
 
 +
<!--T:172-->
 +
Запрос:
 +
 
 +
<!--T:173-->
 +
Request URL: [site]/api/device/delete/
 +
 
 +
<!--T:174-->
 +
Параметры запроса:
 +
 
 +
<!--T:175-->
 +
#(int) device_id,
 +
#(string) token
 +
 
 +
<!--T:177-->
 +
Пример запроса:  
 +
 
 
<pre>
 
<pre>
[
+
{
{
+
"device_id": 107,   // local device id
"id":"318",
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
"controller_id":"11",
+
}
"external_id":"2",
 
"device_id":"125",
 
"name":"23",
 
"token":"747D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
 
"last_seen":"2017-07-21 04:20:27",
 
"available":"1",
 
"voltage":"24",
 
"have_voltage":"1",
 
"current":"2147483647",
 
"have_current":"1",
 
"supp_voltage":"33",
 
"date_create":"2017-07-21 01:20:33",
 
"new":"0"
 
},
 
{
 
"id":"318",
 
"controller_id":"11",
 
...
 
},
 
]
 
 
</pre>
 
</pre>
  
= ?? Остальные устройства данные (last) =
+
<!--T:178-->
+
Ответ:
request:
+
 
Адрес: [site] /api/device/other-last/
+
<!--T:180-->
параметры запроса: (string) token, , (int) device_id
+
Пример ответа (data):
пример:  
+
 
 +
<pre>
 +
{
 +
"result" : "Ok"
 +
}
 +
</pre>
 +
 
 +
== Получение метеоданных (last) == <!--T:182-->
 +
 
 +
<!--T:183-->
 +
Запрос:
 +
 
 +
Request URL: [site]/api/device/meteo-last/
 +
 
 +
<!--T:184-->
 +
Параметры запроса:
 +
 
 +
<!--T:185-->
 +
#(string) token,
 +
#(int) device_id
 +
 
 +
<!--T:187-->
 +
Пример запроса:  
 +
 
 
<pre>
 
<pre>
 
{
 
{
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
"device_id": 118
+
"device_id": 130
 
}
 
}
 
</pre>
 
</pre>
response:
+
 
параметры ответа: (object)
+
Ответ:
пример:  
+
 
 +
<!--T:189-->
 +
Пример ответа (data):
 +
 
 +
<!--T:190-->
 
<pre>
 
<pre>
 
{
 
{
"id":"1301",
+
"id":"4046",
"controller_id":"6",
+
"controller_name":"AS_7FD6785CCF5D",
"device_id":"118",
+
"internal_id":"55",
"name":"Розетка",
+
"device_id":"130",
"code":"81",
+
"name":"7",
"pulse_len":null,
+
"temp":"240",
"bit_len":null,
+
"hum":"245",
"protocol":null,
+
"illum":"0",
"groups":null,
+
"pres":"1239",
"type":null,
+
"volt":"32",
"date_time":"2017-08-21 04:55:18",
+
"date_time":"2016-03-02 21:09:40",
"active":null,
+
"new":"0"
"new":"1"
 
 
}
 
}
 
</pre>
 
</pre>
  
 +
== Получение метеоданных за период (period) == <!--T:191-->
 +
 +
Запрос:
 +
 +
<!--T:192-->
 +
Request URL: [site]/api/device/meteo-period/
 +
 +
<!--T:193-->
 +
Параметры запроса:
  
=?? (period) =
+
<!--T:194-->
request:
+
#(string) token,
Адрес: [site] /api/device/other-period/
+
(int) device_id,
параметры запроса: (string) token, (int) device_id, (int) period
+
#(int) period
пример:  
+
 
 +
<!--T:197-->
 +
Пример запроса:
 +
 +
<pre>
 
{
 
{
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
"device_id": 118,
+
"device_id": 130,
 
"period": 1 // количество дней  
 
"period": 1 // количество дней  
}
 
response:
 
параметры ответа: (array to objects)
 
пример:
 
<pre>
 
{
 
"id":"1301",
 
"controller_id":"6",
 
"device_id":"118",
 
"name":"Розетка",
 
"code":"81",
 
"pulse_len":null,
 
"bit_len":null,
 
"protocol":null,
 
"groups":null,
 
"type":null,
 
"date_time":"2017-08-21 04:55:18",
 
"active":null,
 
"new":"1"
 
},
 
{
 
"id":"4067",
 
"controller_id":"6",
 
...
 
 
}
 
}
 
</pre>
 
</pre>
________________________________________
 
  
=== Ошибки: ===
+
<!--T:198-->
параметры ошибки:  
+
Ответ:
пример:
+
 
<pre>
+
<!--T:199-->
{
+
параметры ответа (array to objects):
"errors":{
+
 
"password": [
+
<!--T:200-->
"Incorrect username."
+
Пример ответа (data):
]
 
}
 
}
 
</pre>
 
  
= Получение списка иконок мест (places) =
 
 
Адрес: [site] /api/places/get-icons
 
 
Пример ответа:
 
 
<pre>
 
<pre>
{
+
[
"error":null,
+
{
"data":{"home":"Home","industry":"Factory","calculator":"Office","shopping-cart":"Market","cubes":"Warehouse","beer":"Bar","building":"Room","flask":"Laboratory","wrench":"Workshop","bell":"Living room","coffee":"Kitchen","car":"Garage","tree":"Outside"}
+
"id":"4065",
}
+
"controller_name":"AS_7FD6785CCF5D",
 
+
"internal_id":"55",
 
+
"device_id":"130",
= Получение списка созданных мест (index) =
+
"name":"7",
 
+
"temp":"240",
Адрес: [site] /api/places/index
+
"hum":"523",
 
+
"illum":"0",
Request params:
+
"pres":"1239",
token (required): string, 64
+
"volt":"32",
 +
"date_time":"2017-07-30 21:11:07",
 +
"new":"0"
 +
},
 +
{
 +
"id":"4067",
 +
"controller_name":"AS_7FD6785CCF5D
 +
...
 +
},
 +
]
 +
</pre>
 +
 
 +
== Получение данных электропитания (last) == <!--T:201-->
 +
 +
Запрос:
 +
 
 +
Request URL: [site]/api/device/electro-last/
  
Response:  
+
<!--T:202-->
 +
Параметры запроса:
 +
 
 +
<!--T:203-->
 +
#(string) token,
 +
#(int) device_id
 +
 
 +
<!--T:205-->
 +
Пример запроса:
 +
 
<pre>
 
<pre>
 
{
 
{
"error":null,
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
"data":{
+
"device_id": 130
"rooms":[{"id":1,"root_id":1,"user_id":424,"lvl":0,"name":"Дом","icon":0,"icon_type":1,"color":"#fff2cc","readonly":0,"visible":1},{"id":2,"root_id":1,"user_id":424,"lvl":1,"name":"Спальня","icon":0,"icon_type":1,"color":"#b6d7a8","readonly":0,"visible":1}]
 
}
 
 
}
 
}
 
</pre>
 
</pre>
  
 +
<!--T:206-->
 +
Ответ:
  
= Создание места (create) =
+
<!--T:208-->
 +
Пример ответа (data):
  
 +
<!--T:209-->
 +
<pre>
 +
{
 +
"id":"318",
 +
"controller_id":"11",
 +
"external_id":"2",
 +
"device_id":"125",
 +
"name":"23",
 +
"token":"747D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
 +
"last_seen":"2017-07-21 04:20:27",
 +
"available":"1",
 +
"voltage":"24",
 +
"have_voltage":"1",
 +
"current":"2147483647",
 +
"have_current":"1",
 +
"supp_voltage":"33",
 +
"date_create":"2017-07-21 01:20:33",
 +
"new":"0"
 +
}
 +
</pre>
  
Адрес: [site] /api/places/create
+
== Получение данных электропитания за период (period) == <!--T:210-->
 
+
Request params:
+
Запрос:
  
token (required): string, 64
+
<!--T:211-->
 +
Request URL: [site]/api/device/electro-period/
  
root (optional): int, default 1
+
<!--T:212-->
 +
Параметры запроса:
  
lft (optional): int, from 1 to 5 //В сумме с rgt должно быть 5
+
<!--T:213-->
 +
#(string) token,
 +
#(int) device_id,
 +
#(int) period
  
rgt (optional): int, from 1 to 5 //В сумме с lft должно быть 5
+
<!--T:216-->
 +
Пример запроса:  
  
lvl (optional): int, default 0
+
<pre>
 +
{
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"device_id": 130,
 +
"period": 1 // количество дней
 +
}
 +
</pre>
  
name (optional): string, 64, default 'Simple name'
+
Ответ:
  
icon (optional): string, default '' //Допускаемые параметры -- ключи объекта выше
+
<!--T:217-->
 +
Параметры ответа: (array to objects)
  
color (optional): string, default: '#ccc' //Любой цвет в формате HEX, решетка в начале обязательна
+
<!--T:218-->
 +
Пример ответа (data):
 +
 +
<pre>
 +
[
 +
{
 +
"id":"318",
 +
"controller_id":"11",
 +
"external_id":"2",
 +
"device_id":"125",
 +
"name":"23",
 +
"token":"747D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
 +
"last_seen":"2017-07-21 04:20:27",
 +
"available":"1",
 +
"voltage":"24",
 +
"have_voltage":"1",
 +
"current":"2147483647",
 +
"have_current":"1",
 +
"supp_voltage":"33",
 +
"date_create":"2017-07-21 01:20:33",
 +
"new":"0"
 +
},
 +
{
 +
"id":"318",
 +
"controller_id":"11",
 +
...
 +
},
 +
]
 +
</pre>
  
active (optional): int, default 1
+
== Получение данных о сторонних устройствах (other-last) == <!--T:219-->
  
selected (optional): int, default 0
+
<!--T:220-->
 +
Метод возвращает информацию о последнем обнаруженном стороннем устройстве.
 +
 +
Запрос:
  
disabled (optional): int, default 0
+
<!--T:221-->
 +
Request URL: [site]/api/device/other-last/
  
readonly (optional): int, default 0
+
<!--T:222-->
 +
Параметры запроса:
  
visible (optional): int, default 1
+
<!--T:223-->
 +
#(string) token,
 +
#(int) device_id
  
collapsed (optional): int, default 0
+
<!--T:225-->
 +
Пример запроса:
 +
 +
<pre>
 +
{
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"device_id": 118
 +
}
 +
</pre>
 +
 
 +
Ответ:
  
movable_u (optional): int, default 1
+
<!--T:227-->
 +
Пример ответа (data):  
 +
<pre>
 +
{
 +
"id":"1301",
 +
"controller_id":"6",
 +
"device_id":"118",
 +
"name":"Розетка",
 +
"code":"81",
 +
"pulse_len":null,
 +
"bit_len":null,
 +
"protocol":null,
 +
"groups":null,
 +
"type":null,
 +
"date_time":"2017-08-21 04:55:18",
 +
"active":null,
 +
"new":"1"
 +
}
 +
</pre>
  
movable_d (optional): int, default 1
 
  
movable_l (optional): int, default 1
+
== Получение данных о сторонних устройствах за период (other-period) == <!--T:228-->
  
movable_r (optional): int, default 1
+
Запрос:
  
removable (optional): int, default 1
+
<!--T:229-->
 +
Request URL: [site]/api/device/other-period/
  
removable_all (optional): int, default 0
+
<!--T:230-->
 +
Параметры запроса:
  
inverse_text (optional): string, default 'black'
+
<!--T:231-->
 +
#(string) token,
 +
#(int) device_id,
 +
#(int) period
  
 +
<!--T:234-->
 +
Пример запроса:
  
Response:
+
<pre>  
<pre>
 
 
{
 
{
error:null,
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
data: {'message': 'OK'}
+
"device_id": 118,
 +
"period": 1 // количество дней
 
}
 
}
 
</pre>
 
</pre>
  
 +
Ответ:
  
=  Редактирование места (edit) =
+
<!--T:236-->
 +
Пример ответа (data):
 +
 +
<pre>
 +
{
 +
"id":"1301",
 +
"controller_id":"6",
 +
"device_id":"118",
 +
"name":"Розетка",
 +
"code":"81",
 +
"pulse_len":null,
 +
"bit_len":null,
 +
"protocol":null,
 +
"groups":null,
 +
"type":null,
 +
"date_time":"2017-08-21 04:55:18",
 +
"active":null,
 +
"new":"1"
 +
},
 +
{
 +
"id":"4067",
 +
"controller_id":"6",
 +
...
 +
}
 +
</pre>
  
Адрес: [site] /api/places/edit
+
= Wizard добавления устройств  = <!--T:237-->
  
Request params:
 
  
token (required): string, 64
+
== Датчик открытия двери (create-door-open-sensor) == <!--T:238-->
  
place_id (required): int
+
Запрос:
  
root (optional): int, default 1
+
<!--T:239-->
 +
URL:  [site]/api/wizard/create-door-open-sensor
 +
 
 +
<!--T:240-->
 +
Параметры запроса:
  
lft (optional): int, from 1 to 5 //В сумме с rgt должно быть 5
+
#controller_id (required): int
 +
#token (required): string, 64
 +
#device_name (optional): string, 256
 +
#code_ready (optional): string, 64 //Название кода готовности
 +
#code_alarm (optional): string, 64 //Название кода оповещания
 +
#code_low_battery (optional): string, 64 //Название кода садящейся батареи
  
rgt (optional): int, from 1 to 5 //В сумме с lft должно быть 5
+
<!--T:241-->
 +
Ответ:  
  
lvl (optional): int, default 0
+
Пример ответа:
 +
 +
<pre>
 +
{
 +
data:{
 +
'response': 'OK'
 +
},
 +
error: null
 +
}
 +
</pre>
  
name (optional): string, 64, default 'Simple name'
+
<!--T:242-->
 +
После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.
  
icon (optional): string, default '' //Допускаемые параметры -- ключи объекта выше
+
==  Датчик затопления (create-flood-sensor) == <!--T:243-->
  
color (optional): string, default: '#ccc' //Любой цвет в формате HEX, решетка в начале обязательна
+
Запрос:
  
active (optional): int, default 1
+
<!--T:244-->
 +
Request URL: [site]/api/wizard/create-flood-sensor
  
selected (optional): int, default 0
+
<!--T:245-->
 +
Параметры запроса:
  
disabled (optional): int, default 0
+
<!--T:246-->
 +
#controller_id (required): int
 +
#token (required): string, 64
 +
#device_name (optional): string, 256
 +
#code_alarm (optional): string, 64 //Название кода оповещения
 +
#code_tamper (optional): string, 64 //Название кода вмешательства
 +
#code_low_battery (optional): string, 64 //Название кода садящейся батареи
  
readonly (optional): int, default 0
+
<!--T:251-->
 +
Ответ:
  
visible (optional): int, default 1
+
Пример ответа:
 +
 +
<pre>
 +
{
 +
data: {
 +
'response': 'OK'
 +
},
 +
error: null
 +
}
 +
</pre>
  
collapsed (optional): int, default 0
+
После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.
  
movable_u (optional): int, default 1
 
  
movable_d (optional): int, default 1
+
== Пульт,4 кнопки (create-console) == <!--T:252-->
  
movable_l (optional): int, default 1
+
Запрос:
  
movable_r (optional): int, default 1
+
<!--T:253-->
 +
Request URL: [site]/api/wizard/create-console
  
removable (optional): int, default 1
+
<!--T:254-->
 +
Параметры запроса:
  
removable_all (optional): int, default 0
+
<!--T:255-->
 +
#controller_id (required): int
 +
#token (required): string, 64
 +
#device_name (optional): string, 256
 +
#code_lock (optional): string, 64 //Название кода блокировки
 +
#code_unlock (optional): string, 64 //Название кода разблокировки
 +
#code_s (optional): string, 64 //Название кода s
 +
#code_alarm (optional): string, 64 //Название кода оповещения
  
inverse_text (optional): string, default 'black'
+
<!--T:262-->
 +
Ответ:  
  
 +
Пример ответа:
  
Response:
 
 
<pre>
 
<pre>
 
{
 
{
error:null,
+
data: {
data: {'message': 'OK'}
+
'response': 'OK'
 +
},
 +
error: null
 
}
 
}
 +
</pre>
 +
 +
После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.
 +
  
</pre>
+
== Сирена (create-siren) == <!--T:263-->
  
= Удаление места (delete) =
+
Запрос:
  
Адрес: [site] /api/places/delete
+
<!--T:264-->
 +
Request URL: [site]/api/wizard/create-siren
  
Request params:
+
<!--T:265-->
 +
Параметры запроса:
  
token (required): string, 64
+
<!--T:266-->
 +
#controller_id (required): int
 +
#token (required): string, 64
 +
#device_name (optional): string, 256
 +
#code_on (optional): string, 64 //Название кода включения
 +
#code_off (optional): string, 64 //Название кода выключения
 +
#code_blank (optional): string, 64 //Название кода blank
  
place_id (required): int
+
<!--T:272-->
 +
Ответ:
  
Response:
+
Пример ответа:
 +
 
<pre>
 
<pre>
 
{
 
{
error:null,
+
data: {
data: {'message': 'OK'}
+
'response': 'OK'
 +
},
 +
error: null
 
}
 
}
 
</pre>
 
</pre>
  
= Обновление статуса контроллера (update-status) =
+
Перед отправкой параметров необходимо перевести сирену в режим обучения.
 +
 
 +
 
 +
== Метеостанция: получение списка обнаруженных метеостанций за последние 10 минут (get-meteos) == <!--T:273-->
 +
 
 +
Запрос:
 +
 
 +
Request URL: [site]/api/wizard/get-meteos
 +
 
 +
<!--T:274-->
 +
Параметры запроса:
  
request:
+
<!--T:275-->
Адрес: [site] /api/ ctrl/update-status/
+
#controller_id (required): int
 +
#token (required): string, 64
  
Параметры запроса: (string) token, (int) controller_id
+
<!--T:277-->
 +
Ответ:
 +
 
 +
Пример ответа:
  
пример:
 
 
<pre>
 
<pre>
 
{
 
{
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
+
"error":null,
"controller_id": 122
+
"data":[
 +
{
 +
"id":"93",
 +
"controller_id":"79",
 +
"date":"1528389351",
 +
"type":"7",
 +
"family":"0",
 +
"rf_code":null,
 +
"rf_bit_len":null,
 +
"rf_pulse_len":null,
 +
"rf_protocol":null,
 +
"rf_freq":null,
 +
"ir_code":null,
 +
"ir_bit_len":null,
 +
"ir_address":null,
 +
"ir_protocol":null,
 +
"meteo_num":"0"
 +
}
 +
]
 
}
 
}
 
</pre>
 
</pre>
  
response:
+
== Метеостанция: добавление (create-meteo) == <!--T:278-->
параметры ответа:
+
 
пример:
+
Запрос:
<pre>
+
 
{
+
<!--T:279-->
"error":null,
+
Request URL: [site][site]/api/wizard/create-meteo
"data":{
+
 
"resuls":"Ok"
+
<!--T:280-->
}
+
Параметры запроса:
}
+
 
</pre>
+
<!--T:281-->
 +
#controller_id (required): int
 +
#token (required): string, 64
 +
#meteo_num (required): int //Получается в списке выше
 +
#device_name (optional): string, 256
  
= Получение актуального статуса Контроллера (get-status) =
+
<!--T:285-->
request:
+
Ответ:
Адрес: [site] /api/ ctrl/get-status/
 
параметры запроса: (string) token, (int) controller_id
 
пример:
 
<pre>
 
{
 
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 
"controller_id": 122
 
}
 
</pre>
 
  
response:
+
Пример ответа:
параметры ответа:
+
пример:
 
 
<pre>
 
<pre>
 
{
 
{
 
"error":null,
 
"error":null,
 
"data":{
 
"data":{
"status":1
+
"response":"OK"
 
}
 
}
 
}
 
}
 
</pre>
 
</pre>
  
Поле “status” может принимать следующие значения:
+
== Водопроводный кран == <!--T:286-->
• 0 – офлайн
+
 
1 – онлайн
+
<!--T:287-->
• 2 – онлайн, после включения питания
+
Порядок добавления крана:
 +
 
 +
1) Сгенерировать коды
  
= Добавление устройств через wizard =
+
<!--T:288-->
 +
2) Зажать на кране кнопку, пока кран не мигнёт трижды
  
 +
<!--T:289-->
 +
3) Отправить один код
  
== Датчик открытия двери (create-door-open-sensor) ==
+
<!--T:290-->
 +
4) Нажать на кране кнопку однократно
  
URL: [site]/api/wizard/create-door-open-sensor
+
<!--T:291-->
 +
5) Зажать на кране кнопку, пока не мигнёт 4 раза
  
Params:
+
<!--T:292-->
controller_id (required): int
+
6) Отправить второй код из сгенерированных
token (required): string, 64
 
device_name (optional): string, 256
 
code_ready (optional): string, 64 //Название кода готовности
 
code_alarm (optional): string, 64 //Название кода оповещания
 
code_low_battery (optional): string, 64 //Название кода садящейся батареи
 
  
RESPONSE:  
+
<!--T:293-->
<pre>
+
7) Нажать на кране кнопку однократно
{
 
data:{
 
'response': 'OK'
 
},
 
error: null
 
}
 
</pre>
 
  
После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.
+
<!--T:294-->
 +
8) Отправить запрос на создание крана.
  
  
== Датчик затопления (create-flood-sensor) ==
+
=== Генерация кодов === <!--T:295-->
  
URL
+
Запрос:
/api/wizard/create-flood-sensor
 
  
Params:
+
<!--T:296-->
 +
Request URL: [site]/api/wizard/create-codes
  
controller_id (required): int
+
<!--T:297-->
token (required): string, 64
+
Параметры запроса:
device_name (optional): string, 256
 
code_alarm (optional): string, 64 //Название кода оповещения
 
code_tamper (optional): string, 64 //Название кода вмешательства
 
code_low_battery (optional): string, 64 //Название кода садящейся батареи
 
  
RESPONSE:  
+
<!--T:298-->
<pre>
+
#controller_id (required): int
 +
#token (required): string, 64
 +
 
 +
<!--T:300-->
 +
Ответ:
 +
 
 +
Пример ответа:
 +
 
 +
<pre>
 
{
 
{
data: {
+
"error":null,
'response': 'OK'
+
"data":
},
+
{
error: null
+
"response":{
 +
"id":30,
 +
"masks":"[6,4,0,1]",
 +
"code_1":"9920950",
 +
"code_2":"9920948",
 +
"code_3":"9920944",
 +
"code_4":"9920945"
 +
}
 +
}
 
}
 
}
 
</pre>
 
</pre>
---------------------------------------
 
После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.
 
  
  
== Пульт,4 кнопки (create-console) ==
+
=== Выполнение кода === <!--T:301-->
 +
 
 +
Запрос:
 +
 
 +
<!--T:302-->
 +
Request URL: [site]/api/wizard/execute-code
 +
 
 +
<!--T:303-->
 +
Параметры запроса:
  
URL: [site]/api/wizard/create-console
+
<!--T:304-->
 +
#controller_id (required): int
 +
#token (required): string, 64
 +
#code (required): int // Берется из сгенерированных
  
Params:
+
<!--T:307-->
controller_id (required): int
+
Ответ:
token (required): string, 64
+
 
device_name (optional): string, 256
+
Пример ответа:
code_lock (optional): string, 64 //Название кода блокировки
 
code_unlock (optional): string, 64 //Название кода разблокировки
 
code_s (optional): string, 64 //Название кода s
 
code_alarm (optional): string, 64 //Название кода оповещения
 
  
RESPONSE:
 
 
<pre>
 
<pre>
 
{
 
{
 +
error: null,
 
data: {
 
data: {
'response': 'OK'
+
"response":"OK"
},
+
}
error: null
 
 
}
 
}
 
</pre>
 
</pre>
---------------------------------------
 
После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.
 
  
 +
=== Добавление крана === <!--T:308-->
  
== Сирена (create-siren) ==
+
Запрос:
  
URL [site]/api/wizard/create-siren
+
<!--T:309-->
 +
Request URL: [site]/api/wizard/create-crane-by-codes
  
Params:
+
<!--T:310-->
 +
Параметры запроса:
 +
 
 +
<!--T:311-->
 +
#controller_id (required): int
 +
#token (required): string, 64
 +
#code_1 (required): int
 +
#code_2 (required): int
 +
#device_name (optional): string, 256
 +
#code_open (optional): string, 64 //Название кода открытия
 +
#code_close (optional): string, 64 //Название кода закрытия
 +
 
 +
<!--T:318-->
 +
Ответ:  
  
controller_id (required): int
+
Пример ответа:
token (required): string, 64
 
device_name (optional): string, 256
 
code_on (optional): string, 64 //Название кода включения
 
code_off (optional): string, 64 //Название кода выключения
 
code_blank (optional): string, 64 //Название кода blank
 
  
RESPONSE:
 
 
<pre>
 
<pre>
 
{
 
{
data: {
+
data:{'response': 'OK'},
'response': 'OK'
 
},
 
 
error: null
 
error: null
 
}
 
}
 
</pre>
 
</pre>
---------------------------------------
 
Перед отправкой параметров необходимо перевести сирену в режим обучения.
 
  
 +
== Добавление розетки == <!--T:319-->
 +
 +
<!--T:320-->
 +
Порядок добавления розетки следующий:
 +
 +
<!--T:321-->
 +
1) Сгенерировать коды
 +
 +
<!--T:322-->
 +
2) Зажать на розетке кнопку, пока она не начнет мигать
  
== Метеостанция: получение списка обнаруженных метеостанций за последние 10 минут (get-meteos) ==
+
<!--T:323-->
URL: [site]/api/wizard/get-meteos
+
3) Отправить один код
  
Params:
+
<!--T:324-->
 +
4) Зажать на розетке кнопку, пока она не начнет мигать
  
controller_id (required): int
+
<!--T:325-->
token (required): string, 64
+
5) Отправить второй код из сгенерированых
  
RESPONSE:
+
<!--T:326-->
<pre>
+
6) Отправить запрос на создание розетки
{
 
"error":null,
 
"data": [{"id":"93","controller_id":"79","date":"1528389351","type":"7","family":"0","rf_code":null,"rf_bit_len":null,"rf_pulse_len":null,"rf_protocol":null,"rf_freq":null,"ir_code":null,"ir_bit_len":null,"ir_address":null,"ir_protocol":null,"meteo_num":"0"}]
 
}
 
</pre>
 
  
== Метеостанция: добавление (create-meteo) ==
 
  
URL: [site]/api/wizard/create-meteo
+
=== Генерация кодов (create-codes) === <!--T:327-->
  
Params:
+
Запрос:
controller_id (required): int
 
token (required): string, 64
 
meteo_num (required): int //Получается в списке выше
 
device_name (optional): string, 256
 
  
RESPONSE:  
+
<!--T:328-->
<pre>
+
Request URL: [site]/api/wizard/create-codes
{
 
"error":null,
 
"data":{
 
"response":"OK"
 
}
 
}
 
</pre>
 
  
 +
<!--T:329-->
 +
Параметры запроса:
  
 +
<!--T:330-->
 +
#controller_id (required): int
 +
#token (required): string, 64
 +
#socket (required): любое значение.
  
== Водопроводный кран ==
+
<!--T:333-->
 +
Ответ:
  
Порядок добавления крана:
+
Пример ответа:
1) Сгенерировать коды
 
2) Зажать на кране кнопку, пока кран не мигнёт трижды
 
3) Отправить один код
 
4) Нажать на кране кнопку однократно
 
5) Зажать на кране кнопку, пока не мигнёт 4 раза
 
6) Отправить второй код из сгенерированных
 
7) Нажать на кране кнопку однократно
 
8) Отправить запрос на создание крана.
 
 
 
 
 
=== Генерация кодов ===
 
 
 
URL: [site]/api/wizard/create-codes
 
 
 
Params:
 
 
 
controller_id (required): int
 
token (required): string, 64
 
  
Response:
 
 
<pre>
 
<pre>
 
{
 
{
 
"error":null,
 
"error":null,
"data":{"response":{"id":30,"masks":"[6,4,0,1]","code_1":"9920950","code_2":"9920948","code_3":"9920944","code_4":"9920945"}
+
"data":{
 +
"response":{"id":30,"masks":"[257, 258]","code_1":"8737025","code_2":"8737026"}
 
}
 
}
 
}
 
}
 
</pre>
 
</pre>
  
 +
=== Выполнение кода  (execute-code) === <!--T:334-->
  
=== Выполнение кода ===
+
Запрос:
  
URL: [site]/api/wizard/execute-code
+
<!--T:335-->
 +
Request URL: [site]/api/wizard/execute-code
  
Params:
+
<!--T:336-->
 +
Параметры запроса:
 +
 
 +
<!--T:337-->
 +
#controller_id (required): int
 +
#token (required): string, 64
 +
#code (required): int // Берется из сгенерированных
  
controller_id (required): int
+
<!--T:340-->
token (required): string, 64
+
Ответ:
code (required): int // Берется из сгенерированных
 
  
Response:
+
Пример ответа:
<pre>
+
 +
<pre>
 
{
 
{
 
error: null,
 
error: null,
data: {
+
data: {'response' => 'OK'}
"response":"OK"
 
}
 
 
}
 
}
 
</pre>
 
</pre>
  
=== Добавление крана ===
 
  
URL: [site]/api/wizard/create-crane-by-codes
+
=== Добавление розетки (create-socket) === <!--T:341-->
 +
 
 +
Запрос:
 +
 
 +
<!--T:342-->
 +
Request URL: [site]/api/wizard/create-socket
  
Params:
+
<!--T:343-->
 +
Параметры запроса:
  
controller_id (required): int
+
<!--T:344-->
token (required): string, 64
+
#controller_id (required): int
code_1 (required): int
+
#token (required): string, 64
code_2 (required): int
+
#code_1 (required): int
device_name (optional): string, 256
+
#code_2 (required): int
code_open (optional): string, 64 //Название кода открытия
+
#device_name (optional): string, 256
code_close (optional): string, 64 //Название кода закрытия
+
#code_off (optional): string, 64 //Название кода открытия
 +
#code_on (optional): string, 64 //Название кода закрытия
  
RESPONSE:  
+
<!--T:351-->
 +
Ответ:
 +
 
 +
Пример ответа:
 +
 
<pre>
 
<pre>
 
{
 
{
data:{'response': 'OK'},
+
data: {'response':'OK'},
 
error: null
 
error: null
 
}
 
}
 
</pre>
 
</pre>
  
== Добавление розетки ==
+
= Сценарии = <!--T:352-->
 
 
порядок добаления розетки следующий:
 
1) Сгенерировать коды
 
2) Зажать на розетке кнопку, пока она не начнет мигать
 
3) Отправить один код
 
4) Зажать на розетке кнопку, пока она не начнет мигать
 
5) Отправить второй код из сгенерированых
 
6) Отправить запрос на создание розетки
 
  
 +
== Получение списка сценариев (list) == <!--T:353-->
  
=== Генерация кодов: ===
+
<!--T:354-->
 +
Запрос:
  
URL: [site]/api/wizard/create-codes
+
Request URL: [site]/api/scheduler/list/
  
Params:
+
<!--T:355-->
controller_id (required): int
+
Параметры запроса: (string) token
token (required): string, 64
 
socket (required): любое значение.
 
  
Response:
+
<!--T:356-->
 +
Пример запроса:
 +
 
<pre>
 
<pre>
 
{
 
{
"error":null,
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
"data":{
+
}
"response":{"id":30,"masks":"[257, 258]","code_1":"8737025","code_2":"8737026"}
+
</pre>
 +
 
 +
<!--T:357-->
 +
Ответ:
 +
 
 +
<!--T:359-->
 +
Пример ответа:
 +
 +
<pre>
 +
{
 +
"error":null,
 +
"data"
 +
"schedulers":[
 +
{
 +
"id":83,
 +
"external_id":23,
 +
"name":"Test 444",
 +
"operation":"local",
 +
"armed":2,
 +
"type":"meteo",
 +
"active":0,
 +
"action"
 +
"action_id":1,
 +
"controller_id":109,
 +
"device_id":1747,
 +
"code_id":1100,
 +
"device_external_id":64,
 +
"armed":1,
 +
"groups":7,
 +
"sensor_type":"1",
 +
"date":"00:00",
 +
"repetition":"1",
 +
"logic_operation":"=",
 +
"value":"9"
 +
},
 +
"target"
 +
"target_id":2,
 +
"controller_id":109,
 +
"device_id":0,
 +
"device_external_id":0,
 +
"code_id":0,
 +
"external_cod_id":0,
 +
"armed":0,
 +
"groups":168
 
}
 
}
 +
},
 +
{
 +
"id":84,
 +
"external_id":24,
 +
...
 +
}]
 +
}
 
}
 
}
 +
 +
<!--T:360-->
 
</pre>
 
</pre>
  
 +
== Обновление/добавление сценариев (update) == <!--T:361-->
  
=== Выполнение кода  (execute-code) ===
+
<!--T:362-->
 +
Запрос осуществляется в 2 этапа: на первом этапе происходит при запросе на обновление Контроллера (см. "Обновление Контроллера");
 +
на втором этапе обновляется информация о каждом действии.
  
URL: [site]/api/wizard/execute-code
+
<!--T:363-->
 +
Запрос:
  
Params:
+
Request URL: [site]/api/scheduler/update/
 +
 
 +
<!--T:364-->
 +
Параметры запроса:
  
controller_id (required): int
+
<!--T:365-->
token (required): string, 64
+
#(int) controller_id,
code (required): int // Берется из сгенерированных
+
#(string) token
  
Response
+
Пример запроса:
 +
 
<pre>
 
<pre>
 
{
 
{
error: null,
+
"controller_id": 6 ,
data: {'response' => 'OK'}
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 
}
 
}
 
</pre>
 
</pre>
  
 +
<!--T:368-->
 +
Ответ:
  
=== Добавление розетки (create-socket) ===
+
<!--T:370-->
 
+
Пример ответа:
URL: [site]/api/wizard/create-socket
+
 
 
Params:
 
 
 
controller_id (required): int
 
token (required): string, 64
 
code_1 (required): int
 
code_2 (required): int
 
device_name (optional): string, 256
 
code_off (optional): string, 64 //Название кода открытия
 
code_on (optional): string, 64 //Название кода закрытия
 
 
 
RESPONSE:
 
 
<pre>
 
<pre>
 
{
 
{
data: {'response':'OK'},
+
"result": "Ok" // ответ что запрос ушел
error: null
 
 
}
 
}
 
</pre>
 
</pre>
  
 +
Процесс обновления происходит автоматически. Для получения результата требуется таймаут, после чего делается стандартный запрос на получение данных (Контроллер, действия)
 +
 +
== Информация о сценарии (info) == <!--T:371-->
  
= Изменение имени кода (update-code-name) =
+
<!--T:372-->
 +
Запрос:
  
Request URL: [site]/api/device/update-code-name
+
Request URL: [site]/api/scheduler/info/
  
Request Params:
+
<!--T:373-->
 +
Параметры запроса:
  
token (required): string(64)
+
<!--T:374-->
code_id (required): int
+
#(int) scheduler_id,
name (optional): string(255)
+
#(string) token
  
SUCCESS RESPONSE:
+
<!--T:376-->
 +
Пример запроса:
 +
 
<pre>
 
<pre>
 
{
 
{
data: {
+
"scheduler_id": 122,
'message': "OK"
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
},
 
error: null
 
 
}
 
}
 
</pre>
 
</pre>
  
 +
Ответ:
  
== ?? Получение кодов по семейству (get-codes-by-subtype) ==
+
<!--T:378-->
 
+
Пример ответа (data):
Request URL: [site]/api/device/get-codes-by-subtype
+
 
+
<pre>
Request Params:
+
{
token (required): string(64)
+
"id":107,
device_subtype_id (optional): int, default 0.
+
"external_id":6,
 +
"name":"Test 1.1.1",
 +
"operation":"local",
 +
"armed":1,
 +
"type":"device",
 +
"active":1,
 +
"action":{
 +
"action_id":1,
 +
"controller_id":111,
 +
"device_id":1824,
 +
"code_id":1399,
 +
"device_external_id":18,
 +
"armed":0,
 +
"groups":0,
 +
"sensor_type":"0",
 +
"date":null,
 +
"repetition":"0",
 +
"logic_operation":"=",
 +
"value":null
 +
},
 +
"targets":[
 +
{
 +
"id":87,
 +
"type_id":3,
 +
"controller_id":111,
 +
"device_id":0,
 +
"code_id":0,
 +
"device_external_id":0,
 +
"armed":1,
 +
"groups":0
 +
},
 +
{
 +
"id":88,
 +
"type_id":1,
 +
"controller_id":113,
 +
"device_id":13,
 +
"code_id":123,
 +
"device_external_id":1234,
 +
"armed":0,
 +
"groups":0
 +
},
 +
]
 +
}
 +
</pre>
  
  
== ???? методы управлениями places ==
 
  
Request URL: [site]/api/places/index (дубликат метода /api/profile/rooms)  
+
== Обновление сценариев (update) == <!--T:371-->
  
 +
Обновление состоит из двух запросов: 1) обновление действия, вызывающего событие; 2) обновления целей сработки.
 +
При этом запросы можно делать независимо друг от друга.
  
=== Создание места (create) ===
+
=== Обновление/добавление действий и событий сценария (Update-action) ===
  
Request URL: [site]/api/places/create
+
Request URL: [site]/api/scheduler/update-action/
  
Request params:
+
Параметры запроса:
token (required) : string(64);
 
  
root (optional): int, default 1;
+
#(int) scheduler_id,
 +
#(string) token,
 +
#(string) name,
 +
#(int) "active"
 +
#(int) "send_sms"  // 1 - отправлять / 0 - не отправлять
 +
#(int) "make_call"  // 1 - отправлять / 0 - не отправлять
 +
#(int) "armed"  // 0 - в любом режиме, 1 - в режиме охраны, 2 - без режима охраны
 +
#(int) "action_id",
 +
#(int) "action_device_id",
 +
#(int) "action_code_id",
 +
#(int) "action_armed",
 +
#(int) "action_groups",  // битовая маска группы от 1 до 8
 +
#(string) "action_repetition",  // только для расписания: номер дней повторения через запятую от 1 до 7
 +
#(string) "action_event_time",    // только для расписания: время повторения
 +
#(int) "action_sensor_type", // только для метео устройств: 1 - напряжение, 2 - температура, 3 - влажность, 4 - Атм. давление, 5 - Освещенность , 0 - не выбрано
 +
#(string) "action_logic_operation",  // логическая операция : '=', '!=', '<', '>', '<=', '>=', 'in', 'like'
 +
#(int) "action_value"
  
lft (optional): int, default 1;
+
Пример запроса:
 +
<pre>
 +
{
 +
"scheduler_id": 6 ,
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"name": "New name",
 +
"active": 1,
 +
"send_sms": 0,
 +
"make_call": 1,
 +
"armed": 2,   
 +
"action_id" : 2,
 +
"action_device_id" : 2,
 +
"action_code_id" : 4,
 +
"action_armed" : 0,
 +
"action_groups" : 7,  
 +
"action_repetition" : "1,3", 
 +
"action_event_time" : "10:00", 
 +
"action_sensor_type" : 2,
 +
"action_logic_operation" : "=", 
 +
"action_value" : 35, 
 +
}
 +
</pre>
 +
Ответ:
  
rgt (optional): int, default 4;
+
Пример ответа:
 +
<pre>
 +
{
 +
"result": "Ok" // ответ о том, что запрос отправлен.
 +
}
 +
</pre>
  
lvl (optional): int, default 0;
+
=== Обновление цели события (Update-target) ===
  
name (optional): string(255), default "Simple name";
 
  
icon (optional): string(255), default "";
+
Request URL: [site]/api/scheduler/update-target/
  
icon_type (optional): int, default 1;
+
Параметры запроса:
  
color (optional): string(8), default "#ccc";
+
#(int) target_id,
 +
#(string) token,
 +
#(int) "target_type_id",
 +
#(int) "target_device_id",
 +
#(int) "target_code_id",
 +
#(int) "target_armed",
 +
#(int) "target_groups",  // битовая маска группы от 1 до 8
  
active (optional): int, default 1;
+
Пример запроса:
 
+
<pre>
selected (optional): int, default 0;
+
{
 +
"target_id": 6 ,
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",  
 +
"target_type_id" : 2,
 +
"target_device_id" : 2,
 +
"target_code_id" : 4,
 +
"target_armed" : 0,
 +
"target_groups" : 7
 +
}
 +
</pre>
  
disabled (optional): int, default 0;
+
Ответ:
  
readonly (optional): int, default 0;
+
Пример ответа:
  
visible (optional): int, default 1;
+
<pre>
 +
{
 +
"result": "Ok" // ответ о том, что запрос отправлен.
 +
}
 +
</pre>
  
collapsed (optional): int, default 0;
 
  
movable_u (optional): int, default 1;
+
= Логи пользователя (logs) = <!--T:379-->
  
movable_d (optional): int, default 1;
+
Запрос:
  
movable_l (optional): int, default 1;
+
<!--T:380-->
 +
Request URL: [site]/api/profile/logs/
  
movable_r (optional): int, default 1;
+
<!--T:381-->
 +
Параметры запроса: (string) token, (int) page, (int) limit
  
removable (optional): int, default 1;
+
<!--T:382-->
 
+
Пример запроса:
removable_all (optional): int, default 0;
+
 
 
inverse_text (optional): string(6), default "black";
 
 
 
Response:
 
 
<pre>
 
<pre>
 
{
 
{
data: {"message" => "OK"},
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
error: null
+
"page": 1 // номер страницы лога
 +
"limit": 20 // количество логов на странице , по умолчанию 20, максимум 100
 
}
 
}
</pre>  
+
</pre>
  
 +
Ответ:
  
=== Редактирование места (edit) ===
+
Пример ответа:
  
Request URL: [site]/api/places/edit
+
<pre>
 +
[
 +
{
 +
"id":15,
 +
"controller":"Test Valera",
 +
"action_name":"",
 +
"device":"",
 +
"cod":"",
 +
"action_pack":"",
 +
"date_create":"2019-06-20 15:57:26",
 +
"status":0
 +
},
 +
{
 +
"id":14,
 +
"controller":"Test Valera",
 +
"action_name":"",
 +
"device":"",
 +
"cod":"",
 +
"action_pack":"",
 +
"date_create":"2019-06-20 15:57:18",
 +
"status":0
 +
        }
 +
]
 +
</pre>
  
Request params:
+
= Коды = <!--T:383-->
  
token (required) : string(64);
+
== Получение информации о коде (info) == <!--T:384-->
  
place_id (required) : int;
+
<!--T:385-->
 +
Запрос:
  
root (optional): int, default 1;
+
<!--T:386-->
 +
Request URL: [site]/api/property/info/
  
lft (optional): int, default 1;
+
<!--T:387-->
 +
Параметры запроса:
 +
#(int) controller_id,
 +
#(int) device_id,
 +
#(int) code_id,
 +
#(string) token
  
rgt (optional): int, default 4;
+
<!--T:391-->
 +
Пример запроса:  
  
lvl (optional): int, default 0;
+
<pre>
 
+
{
name (optional): string(255), default "Simple name";
+
"controller_id": 6,
 +
"device_id": 109,
 +
"code_id": 192,
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 +
}
 +
</pre>
  
icon (optional): string(255), default "";
+
<!--T:393-->
 +
Ответ:
  
icon_type (optional): int, default 1;
+
<!--T:394-->
 +
Пример ответа (data):  
  
color (optional): string(8), default "#ccc";
+
<pre>
 +
{
 +
"id":"1465",
 +
"external_cod_id":"59",
 +
"device_id":"1866",
 +
"name":"alarm",
 +
"alias":"xxx",
 +
"code":"15779537",
 +
"msg_cod":"003001",
 +
"send_armed":"INFO",
 +
"send_disarmed":"INFO",
 +
"protocol":"1",
 +
"pulse_len":null,
 +
"group_1":"0",
 +
"group_2":"0",
 +
"group_3":"0",
 +
"group_4":"0",
 +
"group_5":"0",
 +
"group_6":"0",
 +
"group_7":"0",
 +
"group_8":"0",
 +
"active":"1",
 +
"send_sms":"0",
 +
"voice_call":"0"
 +
}
 +
</pre>
  
active (optional): int, default 1;
+
== Изменение имени кода (update-code-name) == <!--T:395-->
  
selected (optional): int, default 0;
+
Запрос:
 +
<!--T:396-->
 +
Request URL: [site]/api/device/update-code-name
  
disabled (optional): int, default 0;
+
<!--T:397-->
 +
Параметры запроса:
  
readonly (optional): int, default 0;
+
<!--T:398-->
 +
#token (required): string(64)
 +
#code_id (required): int
 +
#name (optional): string(255)
  
visible (optional): int, default 1;
+
<!--T:401-->
 +
Ответ:
  
collapsed (optional): int, default 0;
+
Пример ответа:
  
movable_u (optional): int, default 1;
+
<pre>
 
+
{
movable_d (optional): int, default 1;
+
data: {
 
+
'message': "OK"
movable_l (optional): int, default 1;
+
},
 
 
movable_r (optional): int, default 1;
 
 
 
removable (optional): int, default 1;
 
 
 
removable_all (optional): int, default 0;
 
 
 
inverse_text (optional): string(6), default "black";
 
 
 
Response:
 
<pre>
 
{
 
data: {"message": "OK"},
 
 
error: null
 
error: null
 
}
 
}
 
</pre>
 
</pre>
  
 +
== Редактирование параметров кода (update) ==
  
=== Удаление места (delete) ===
+
<!--T:401-->
 +
Запрос:
  
Request URL: [site]/api/places/delete
+
<!--T:401-->
 +
Request URL: [site]/api/property/update/
  
Request params:
+
<!--T:401-->
 +
Параметры запроса:
  
token (required): string(64);
+
#(string) token  
 +
#(int) device_id
 +
#(int) code_id
 +
#(string) name // опционально
 +
#(int) active // опционально
 +
#(int) send_sms // опционально
 +
#(int) voice_call // опционально
  
place_id (required): int;
+
<!--T:401-->
 +
Пример запроса:
  
Response:
 
 
<pre>
 
<pre>
 
{
 
{
data:{"message": "OK"},
+
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
error: null
+
"device_id" : 111,
}  
+
"code_id" : 111,
 +
"send_sms": 1
 +
}
 
</pre>
 
</pre>
  
== Получение иконок мест (get-icons) ==
+
<!--T:402-->
 +
Ответ:
  
Request URL: [site]/api/places/get-icons
+
<!--T:402-->
 +
Пример ответа (data):
  
Response:
 
 
<pre>
 
<pre>
 
{
 
{
data:{
+
"result": "Ok"
"home":"Home",
 
"industry": "Factory",
 
...
 
},
 
error: null
 
 
}
 
}
 
</pre>
 
</pre>
  
 +
==  Получение кодов по типу сигнала (get-codes-by-subtype) == <!--T:402-->
  
 +
Запрос:
  
== Удаление устройства (remove-device) ==
+
<!--T:403-->
 +
Request URL: [site]/api/device/get-codes-by-subtype
  
Request URL: [site]/api/device/remove-device
+
<!--T:404-->
 +
Параметры запроса:
  
PARAMS:
+
<!--T:405-->
 +
#token (required): string(64)
 +
#device_subtype_id (optional): int, default 0.
  
token (required): string (64)
+
Ответ:
  
device_id (required): int
+
Пример ответа:
 
 
SUCCESS RESPONSE:  
 
  
 
<pre>
 
<pre>
 
{
 
{
data: {message: 'OK'},
+
"code"
error: null
+
"id":131,
}
+
"controller_id":109,
 +
"device_type_id":0,
 +
"device_subtype_id":1,
 +
"code":"655370",
 +
"protocol":1,
 +
"bit_len":24,
 +
"pulse_len":283,
 +
"freq":2,"address":null,
 +
"num":null,
 +
"date_create":"2019-03-13 17:35:05",
 +
"device_id":null
 +
},
 +
"devices":[
 +
{
 +
"id":"1684",
 +
"external_id":"64",
 +
"controller_id":"109",
 +
"name":"WS 1",
 +
"alias":null,
 +
"type_id":"12",
 +
"password":null,
 +
"codes":[178,179,180],
 +
"state":"1",
 +
"on_dashboard":"0",
 +
"active":"1",
 +
"new":"1",
 +
"family":"DEVICE_FAMILY_RADIO",
 +
"camera_id":null,
 +
"camera_host":null,
 +
"send_sms":"0",
 +
"voice_call":"0"
 +
},
 +
{
 +
"id":"1738",
 +
"external_id":"115",
 +
"controller_id":"109",
 +
"name":"Pult 123",
 +
"alias":null,
 +
"type_id":"3",
 +
"password":null,
 +
"codes":[280,281,282,283],
 +
"state":"1",
 +
"on_dashboard":"0",
 +
"active":"1",
 +
"new":"1",
 +
"family":"DEVICE_FAMILY_RADIO",
 +
"camera_id":null,
 +
"camera_host":null,
 +
"send_sms":"0",
 +
"voice_call":"0"
 +
}
 +
]
 +
}
 
</pre>
 
</pre>
  
 +
==  Получение списка кодов (get-codes) == <!--T:407-->
  
==  ?? Добавление кодов (??) ==
+
Запрос:
  
 +
<!--T:408-->
 +
Request URL: [site]/api/device/get-codes
  
=== ?? Получение списка кодов и подходящих устройств (get-codes) ===
+
<!--T:409-->
 +
Параметры:
  
Request URL: [site]/api/device/get-codes
+
#token (required): string 64
 +
#controller_id (required): int
  
PARAMS:
+
Ответ:
token (required): string 64
 
  
controller_id (required): int
+
<!--T:411-->
 +
Пример ответа:
  
SUCCESS RESPONSE:
 
 
<pre>
 
<pre>
 
{
 
{
Строка 1907: Строка 2583:
 
date_create: '2018-04-13 18:29:11"
 
date_create: '2018-04-13 18:29:11"
  
}
+
<!--T:412-->
 +
}
 
},  
 
},  
  
{
+
<!--T:413-->
 +
{
 
devices: [
 
devices: [
 
{
 
{
Строка 1958: Строка 2636:
 
date_create: '2018-04-13 18:29:11"
 
date_create: '2018-04-13 18:29:11"
  
}
+
<!--T:414-->
 +
}
 
},  
 
},  
 
},
 
},
Строка 1965: Строка 2644:
 
</pre>
 
</pre>
  
 +
== Добавление кода к устройству (set-code-to-device) == <!--T:415-->
  
=== Добавление кода к устройству (set-code-to-device) ===
+
Запрос:
  
 +
<!--T:416-->
 
Request URL: [site]/api/device/set-code-to-device
 
Request URL: [site]/api/device/set-code-to-device
  
PARAMS:
+
<!--T:417-->
 +
Параметры запроса:
  
token (required): string 64
+
<!--T:418-->
 +
#token (required): string 64
 +
#code_id (required): int
 +
#device_id (required): int
 +
#name (optional): string 256
  
code_id (required): int
+
<!--T:422-->
 +
Ответ:
  
device_id (required): int
+
Пример ответа:
 
 
name (optional): string 256
 
  
SUCCESS RESPONSE:
 
 
<pre>
 
<pre>
 
{
 
{
Строка 1997: Строка 2681:
 
</pre>
 
</pre>
  
 +
== Удаление кода (remove-code) == <!--T:423-->
  
=== Удаление устройства (remove-device) ===
+
Запрос:
  
Request URL: [site]/api/device/remove-device
+
<!--T:424-->
PARAMS:
+
Request URL: [site]/api/device/remove-code
  
token (required): string 64
+
Параметры запроса:
 +
 
 +
<!--T:425-->
 +
#token (required): string 64
 +
#code_id (required): int
 +
 
 +
<!--T:427-->
 +
Ответ:
  
device_id (required): int
+
Пример ответа:
  
SUCCESS RESPONSE:
 
 
<pre>
 
<pre>
 
{
 
{
Строка 2017: Строка 2708:
 
</pre>
 
</pre>
  
=== Удаление кода (remove-code) ===
+
= События = <!--T:428-->
 +
 
 +
== Нажатие кнопки на устройстве (event) == <!--T:429-->
 +
 
 +
<!--T:430-->
 +
Запрос:
  
Request URL: [site]/api/device/remove-code
+
<!--T:431-->
PARAMS:
+
Request URL: [site]/api/device/event/
 +
 
 +
Параметры запроса:
  
token (required): string 64
+
<!--T:432-->
 +
#(string) controller_name,
 +
#(int) device_external_id,
 +
#(int) cod_external_id,
 +
#(string) token,
 +
#(int) device_type
  
code_id (required): int
+
<!--T:437-->
 +
Пример запроса:  
  
SUCCESS RESPONSE:
+
<!--T:438-->
 
<pre>
 
<pre>
 
{
 
{
data: {
+
"controller_name": " AS_7F26335CCF4B" ,
message: "OK"
+
"device_external_id": 19,
},
+
"cod_external_id": 1,
error: null
+
"device_type": 1,
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 
}
 
}
 
</pre>
 
</pre>
  
 +
<!--T:439-->
 +
так как MQTT  односторонний - ответа быть не может. Может быть возвращён ответ, что запрос отправлен:
 +
response:
 +
 +
Ответ:
 +
 +
<!--T:441-->
 +
Пример ответа (data):
 +
 +
<!--T:442-->
 +
<pre>
 +
{
 +
"result": "Ok"
 +
}
 +
</pre>
  
 +
= Места = <!--T:443-->
  
== передача локального IP Контроллера (get-ip) ==
+
== Получение списка мест (places-list) == <!--T:444-->
  
Request URL: [site]/api/ctrl/get-ip
+
Запрос:
  
Request Params:
+
<!--T:445-->
 +
Request URL: [site]/api/places/places-list
  
token (required): string(64);
+
<!--T:446-->
 +
Параметры запроса: token (required): string, 64
  
controller_id (required): int;
+
<!--T:448-->
 +
Ответ:  
  
SUCCESS RESPONSE:  
+
Пример ответа:
  
 
<pre>
 
<pre>
 
{
 
{
data:'192.168.0.15',
+
"error":null,
error: null
+
"data":{
 +
"rooms":[
 +
{
 +
"id":1,
 +
"root_id":1,
 +
"user_id":424,
 +
"lvl":0,
 +
"name":"Дом",
 +
"icon":0,
 +
"icon_type":1,
 +
"color":"#fff2cc",
 +
"readonly":0,
 +
"visible":1
 +
},
 +
{
 +
"id":2,
 +
"root_id":1,
 +
"user_id":424,
 +
"lvl":1,
 +
"name":"Спальня",
 +
"icon":0,
 +
"icon_type":1,
 +
"color":"#b6d7a8",
 +
"readonly":0,
 +
"visible":1
 +
}
 +
]
 +
}
 
}
 
}
 
</pre>
 
</pre>
  
  
== ?? Активация подписки Ebus -  ==
+
== Создание места (create) == <!--T:449-->
  
 +
Запрос:
  
Получение состояния подписки на Контроллере - “in/subscription/get”:
+
<!--T:450-->
 +
Request URL: [site]/api/places/create
 +
 
 +
<!--T:451-->
 +
Параметры запроса:
 +
 
 +
<!--T:452-->
 +
#token (required): string, 64
 +
#root (optional): int, default 1
 +
#lft (optional): int, from 1 to 5 //В сумме с rgt должно быть 5
 +
#rgt (optional): int, from 1 to 5 //В сумме с lft должно быть 5
 +
#lvl (optional): int, default 0
 +
#name (optional): string, 64, default 'Simple name'
 +
#icon (optional): string, default '' //Допускаемые параметры -- ключи объекта выше
 +
#color (optional): string, default: '#ccc' //Любой цвет в формате HEX, решетка в начале обязательна
 +
#active (optional): int, default 1
 +
#selected (optional): int, default 0
 +
#disabled (optional): int, default 0
 +
#readonly (optional): int, default 0
 +
#visible (optional): int, default 1
 +
#collapsed (optional): int, default 0
 +
#movable_u (optional): int, default 1
 +
#movable_d (optional): int, default 1
 +
#movable_l (optional): int, default 1
 +
#movable_r (optional): int, default 1
 +
#removable (optional): int, default 1
 +
#removable_all (optional): int, default 0
 +
#inverse_text (optional): string, default 'black'
 +
 
 +
<!--T:473-->
 +
Ответ:
 +
 
 +
Пример ответа:
  
 
<pre>
 
<pre>
 
{
 
{
"id": 1, // ID подписки (см. ниже)
+
error:null,
"seq_id": 0
+
data: {'message': 'OK'}
 
}
 
}
 
</pre>
 
</pre>
  
 +
 +
==  Редактирование места (edit) == <!--T:474-->
 +
 +
Запрос:
 +
 +
<!--T:475-->
 +
Request URL: [site]/api/places/edit
 +
 +
<!--T:476-->
 +
Параметры запроса:
 +
 +
<!--T:477-->
 +
#token (required): string, 64
 +
#place_id (required): int
 +
#root (optional): int, default 1
 +
#lft (optional): int, from 1 to 5 //В сумме с rgt должно быть 5
 +
#rgt (optional): int, from 1 to 5 //В сумме с lft должно быть 5
 +
#lvl (optional): int, default 0
 +
#name (optional): string, 64, default 'Simple name'
 +
#icon (optional): string, default '' //Допускаемые параметры -- ключи объекта выше
 +
#color (optional): string, default: '#ccc' //Любой цвет в формате HEX, решетка в начале обязательна
 +
#active (optional): int, default 1
 +
#selected (optional): int, default 0
 +
#disabled (optional): int, default 0
 +
#readonly (optional): int, default 0
 +
#visible (optional): int, default 1
 +
#collapsed (optional): int, default 0
 +
#movable_u (optional): int, default 1
 +
#movable_d (optional): int, default 1
 +
#movable_l (optional): int, default 1
 +
#movable_r (optional): int, default 1
 +
#removable (optional): int, default 1
 +
#removable_all (optional): int, default 0
 +
#inverse_text (optional): string, default 'black'
 +
 +
<!--T:499-->
 
Ответ:
 
Ответ:
 +
 +
Пример ответа:
  
 
<pre>
 
<pre>
 
{
 
{
"seq_id": 0,
+
error:null,
"remain_time": 100, // оставшееся время в секундах, 4294967295 – неограниченно
+
data: {'message': 'OK'}
"success": 0/1
 
 
}
 
}
 
</pre>
 
</pre>
  
Установка подписки на Контроллере - “in/subscription/set”:
+
== Удаление места (delete) == <!--T:501-->
 +
 
 +
Запрос:
 +
<!--T:502-->
 +
Request URL: [site]/api/places/delete
 +
 
 +
<!--T:503-->
 +
Параметры запроса:
  
<pre>
+
<!--T:504-->
{
+
#token (required): string, 64
"seq_id": 0,
+
#place_id (required): int
"id": 1, // ID подписки (см. ниже)
 
"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
 
}
 
</pre>
 
  
 +
<!--T:506-->
 
Ответ:
 
Ответ:
 +
 +
Пример ответа:
 +
 
<pre>
 
<pre>
 
{
 
{
"seq_id": 0,
+
error:null,
"success": 0/1
+
data: {'message': 'OK'}
 
}
 
}
 
</pre>
 
</pre>
  
Идентификаторы подписок:
 
SUBSCRIPTION_EBUS = 1
 
  
Статус Контроллера
+
== Добавление устройства к месту, смена места у устройства (device-in-place) == <!--T:502-->
 +
 
 +
Запрос:
 +
 
 +
Request URL: [site]/api/places/device-in-place/
 +
 
 +
Параметры запроса:
 +
 
 +
#token (required): string 64
 +
#device_id (required): int
 +
#place_id (required): int
 +
#visible (not required): int
 +
 
 +
Ответ:
  
Контроллер отправляет информацию о своем онлайн/оффлайн статусе в топик “out/status”.
+
Пример ответа:
  
Формат сообщения:
 
 
<pre>
 
<pre>
 
{
 
{
"status": 1 // см. ниже
+
data: {result: "OK"},
 +
error: null
 
}
 
}
 
</pre>
 
</pre>
  
Поле “status” может принимать следующие значения:
 
  
• "0" – оффлайн
+
== Отвязать устройство от месту (device-out-place) == <!--T:509-->
  
• "1" – онлайн
+
Запрос:
  
• "2" – онлайн, после включения питания
+
Request URL: [site]/api/places/device-out-place/
  
При получении сообщения со статусом "2", портал должен отправить Контроллеру информацию о пользовательских подписках, как это описано в разделе «Подписки».
+
Параметры запроса:
  
 +
#token (required): string 64
 +
#device_id (required): int
 +
#place_id (required): int
  
 +
Ответ:
 +
 +
Пример ответа:
  
== ?? Установка подписки на Контроллере - “in/subscription/set”: ==
 
 
<pre>
 
<pre>
 
{
 
{
"seq_id": 0,
+
data: {
"id": 1, // ID подписки (см. ниже)
+
result: "OK"
"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
+
},
 +
error: null
 
}
 
}
<pre>
+
</pre>
  
==  Просмотр статуса подписки (get-subscribe-status) ==
 
  
Request URL: [site]/api/ctrl/get-subscribe-status
+
== Получить список связей устройство-место (device-place-list) == <!--T:519-->
  
params:
+
Запрос:
  
token (required): string(64)
+
Request URL: [site]/api/places/device-place-list/
  
controller_id (required): int
+
Параметры запроса:
  
response:
+
#token (required): string 64
  
{data:{id: 1, controller_id: 40, user_id: 424, remain_time: 100, request_time: 1355314332, response_time: 1355315332, success: 0}, error: ''}
+
Ответ:
  
 +
Пример ответа:
  
==  Активация/продление/покупка подписки (set-subscribe) ==
+
<pre>
 +
{
 +
"error":null,
 +
"data":{
 +
"0":{
 +
"device_id":1336,
 +
"device_name":"Camera test",
 +
"place_id":8,
 +
"place_name":"office"
 +
},
 +
...
 +
"10":{
 +
"device_id":1865,
 +
"device_name":"Meteo 9",
 +
"place_id":10,
 +
"place_name":"Box 1"
 +
}
 +
}
 +
}
 +
</pre>
  
 +
==  Активация подписки Ebus  == <!--T:507-->
  
Request URL: [site]/api/ctrl/set-subscribe
 
  
params:
+
<!--T:508-->
 +
Получение состояния подписки на Контроллере - “in/subscription/get”:
  
token (required): string(64)
+
<!--T:509-->
 +
<pre>
 +
{
 +
"id": 1, // ID подписки (см. ниже)
 +
"seq_id": 0
 +
}
 +
</pre>
  
controller_id (required): int
+
<!--T:510-->
 +
Ответ:
  
response:
+
<!--T:511-->
 
<pre>
 
<pre>
 
{
 
{
data:{
+
"seq_id": 0,
id: 1,
+
"remain_time": 100, // оставшееся время в секундах, 4294967295 – неограниченно
controller_id: 40,
+
"success": 0/1
user_id: 424,
 
remain_time: 100,
 
request_time: 1355314332,
 
response_time: 1355315332,
 
success: 0
 
},
 
error: ''
 
 
}
 
}
 
</pre>
 
</pre>
  
  
==  ? Метод получения списка телефонов (get-phones) ==
+
Установка подписки на Контроллере - “in/subscription/set”:
  
Request URL: [site]/api/ctrl/get-phones
+
<!--T:513-->
 
+
<pre>
Params:
+
{
 +
"seq_id": 0,
 +
"id": 1, // ID подписки (см. ниже)
 +
"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
 +
}
 +
</pre>
 +
 
 +
<!--T:514-->
 +
Ответ:
  
token (required): string, 64
+
<pre>
 +
{
 +
"seq_id": 0,
 +
"success": 0/1
 +
}
 +
</pre>
  
controller_id (required): int
+
<!--T:515-->
 +
Идентификаторы подписок:
 +
SUBSCRIPTION_EBUS = 1
  
type (optional): string,
+
<!--T:516-->
range ['recipient', 'authorized', 'all'], default 'all'
+
Статус Контроллера
  
Response:
+
<!--T:517-->
 +
Контроллер отправляет информацию о своем онлайн/оффлайн статусе в топик “out/status”.
  
 +
<!--T:518-->
 +
Формат сообщения:
 
<pre>
 
<pre>
 
{
 
{
'error': null,
+
"status": 1 // см. ниже
data: [
 
{'id': 5, 'phone': '+380123456789'},
 
{'id': 6, 'phone': '+380123334455'},
 
{'id': 7, 'phone': '+380112223344'}
 
]
 
 
}
 
}
 
</pre>
 
</pre>
  
 
+
<!--T:519-->
== Редактирование телефона (edit-phone) ==
+
Поле “status” может принимать следующие значения:
 
+
 
Request URL: [site]/api/ctrl/edit-phone
+
<!--T:520-->
 
+
• "0" – оффлайн
Params:
+
 
 
+
<!--T:521-->
token (required): string, 64
+
• "1" – онлайн
 
+
 
phone_id (required): int
+
<!--T:522-->
 
+
• "2" – онлайн, после включения питания
is_recipient (optional): int
+
 
 
+
<!--T:523-->
is_authorized (optional): int
+
При получении сообщения со статусом "2", портал должен отправить Контроллеру информацию о пользовательских подписках, как это описано в разделе «Подписки».
 
+
 
phone (optional): string
+
 
 
+
= Виджеты = <!--T:524-->
Response:  
+
 
<pre>
+
== Список виджетов пользователя (widget-list) == <!--T:525-->
{
+
 
"error":null,
+
<!--T:525-->
"data":{
+
Запрос:
"id":2,
+
 
"controller_id":81,
+
<!--T:526-->
"phone":"+380503334455",
+
Request URL: [site]/api/device/widget-list/
"is_recipient":"1",
+
 
"is_authorized":0
+
<!--T:527-->
 +
Параметры запроса:
 +
(string) token
 +
 
 +
<!--T:528-->
 +
Пример запроса:
 +
 
 +
<pre>
 +
{
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
 +
}
 +
 
 +
</pre>
 +
 
 +
<!--T:529-->
 +
Ответ:
 +
 
 +
<!--T:530-->
 +
Пример ответа (data):
 +
 
 +
<pre>
 +
{
 +
"widgets":[
 +
{
 +
"controller_id":111,
 +
"device_ids":[18,20,21,22],
 +
"device_id":"1824",
 +
"external_id":18,
 +
"device_type":3,
 +
"name":"Remote control",
 +
"widget_type":3,
 +
"state":1
 +
},
 +
{
 +
"controller_id":111,
 +
"device_ids":[18,20,21,22],
 +
"device_id":"1850",
 +
"external_id":20,
 +
"device_type":4,
 +
"name":"Sockets",
 +
"widget_type":4,
 +
"state":1
 +
}
 +
  ],
 +
"ctrl_widgets":[
 +
  {
 +
"controller_id":111,
 +
"name":"66D4E809EF0A",
 +
"hostname":"Test",
 +
"armed":0
 +
  }
 +
]
 +
}
 +
</pre>
 +
 
 +
== Добавить виджет (widget-add-home) == <!--T:525-->
 +
 
 +
<!--T:525-->
 +
Запрос:
 +
 
 +
<!--T:525-->
 +
Request URL: [site]/api/device/widget-add-home/
 +
 
 +
<!--T:525-->
 +
Параметры запроса:
 +
 
 +
<!--T:525-->
 +
#(string) token,
 +
#(int) device_id,
 +
#(int) controller_id
 +
 
 +
<!--T:525-->
 +
Пример запроса:
 +
 
 +
<pre>
 +
{
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"controller_id": 1862
 +
}
 +
</pre>
 +
 
 +
<!--T:525-->
 +
Ответ:
 +
 
 +
<!--T:525-->
 +
Пример ответа (полный):
 +
 
 +
<pre>
 +
{
 +
"error":null,
 +
"data":{
 +
"result":"Ok"
 +
}
 +
}
 +
</pre>
 +
 
 +
== Удалить виджет пользователя (widget-remove-home) == <!--T:525-->
 +
 
 +
<!--T:525-->
 +
Запрос:
 +
 
 +
Request URL: [site]/api/device/widget-remove-home/
 +
 
 +
<!--T:525-->
 +
Параметры запроса:
 +
 
 +
#(string) token,
 +
#(int) device_id,
 +
#(int) controller_id
 +
 
 +
<!--T:525-->
 +
Пример запроса:
 +
 
 +
<pre>
 +
{
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"device_id": 1862
 +
}
 +
</pre>
 +
 
 +
<!--T:525-->
 +
Ответ:
 +
 
 +
<!--T:525-->
 +
Пример ответа (полный):
 +
 
 +
<pre>
 +
{
 +
"error":null,
 +
"data":{
 +
"result":"Ok"
 +
}
 +
}
 +
</pre>
 +
 
 +
 
 +
= Неклассифицируемые методы = <!--T:524-->
 +
 
 +
== Список доступных стран (countries) ==
 +
 
 +
<!--T:525-->
 +
Запрос:
 +
 
 +
<!--T:526-->
 +
Request URL: [site]/api/profile/countries/
 +
 
 +
<!--T:527-->
 +
Параметры запроса:
 +
#(string) token
 +
#(string) lang // en , ua, ru
 +
 
 +
<!--T:528-->
 +
Пример запроса:
 +
 
 +
<pre>
 +
{
 +
"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
 +
"lang" : "en"
 +
}
 +
</pre>
 +
 
 +
<!--T:529-->
 +
Ответ:
 +
 
 +
<!--T:530-->
 +
Пример ответа (data):
 +
 
 +
<pre>
 +
[
 +
{
 +
"id":"1",
 +
"code":"AF",
 +
"name":"Afghanistan"
 +
},
 +
{
 +
"id":"2",
 +
"code":"AL",
 +
"name":"Albania"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
= Ошибки = <!--T:524-->
 +
 
 +
<!--T:525-->
 +
параметры ошибки:
 +
 +
пример:
 +
 
 +
<!--T:526-->
 +
<pre>
 +
{
 +
"errors":{
 +
"password": [
 +
"Incorrect username."
 +
]
 
}
 
}
 
}
 
}
Строка 2234: Строка 3307:
  
  
==  Удаление телефона (delete-phone) ==
 
 
Request URL: [site]/api/ctrl/delete-phone
 
 
Params:
 
 
token (required): string, 64
 
 
phone_id (required): int
 
 
Response:
 
<pre>
 
{
 
"error":null,
 
"data":{"response":"OK"}
 
}
 
</pre>
 
 
== Добавление телефона (add-phone) ==
 
 
Request URL: [site]/api/ctrl/add-phone
 
 
Params:
 
 
token (required): string, 64
 
 
controller_id (required): int
 
 
phone (required): string
 
 
is_recipient (optional): int
 
 
is_authorized (optional): int
 
  
Response:
 
  
<pre>
+
</translate>
{
 
"error":null,
 
"data":{
 
"id":2,
 
"controller_id":81,
 
"phone":"+380503334455",
 
"is_recipient":"1",
 
"is_authorized":0
 
}
 
}
 
</pre>
 
</pre>
 

Текущая версия на 16:12, 30 июля 2019

Другие языки:
English • ‎русский • ‎українська • ‎中文(中国大陆)‎
  • API v01 *

API ( json )

URL https://quadrobit.com/

Содержание

Общие сведения

Обмен данными между Пользователем и серверной частью системы Quadrobit Smart Home осуществляется путём отправки пакетов (запросов и ответов). Пакет отправляется по HTTP методом POST на указанный адрес Request URL.

Запрос может содержать JSON-структуру, включающую один или несколько параметров. После успешной авторизации Пользователя запрос всегда должен содержать параметр token.

В ответ на полученный запрос Сервер возвращает Пользователю следующую JSON-структуру:

{
	error: null,
	data: { ... }	
}

Параметр error содержит информацию о результате выполнения запроса. error: null - запрос выполнен успешно.

Структура и содержание параметра data определяется типом запроса.


Учётная запись

Авторизация (login)

Запрос:

Request URL: [site]/api/login

Параметры запроса:

  1. (string) email,
  2. (string) password

Пример запроса:

{
	"email":"aaaa@aaaa.aa",
	"password":"12345678"
}

Ответ:

Пример ответа (data):

{
	"user_id":1,
	"username":"Ivan Pupkin",
	"email":"aaaa@aaa.aa",
	"phone": "423546546546",
	"sex":2, 		// пол 0 - не указан , 1 - женский  , 2 - мужской
	"country":219,  		// код страны в базе
	"active_configuration":"1",
	"refcode":"JHE-1GD-T8B-9HB",
	"status":10,       		// 0 - неактивен , 10 - активен
	"token":"1Cyuvr9DKMbB6aFQ-mLPLeGZXFLyuK8d",
	"expired":1502586831 // метка времени до которой активен token
}


Регистрация (registration)

Запрос:

Request URL: [site]/api/registration

Параметры запроса:

  1. (string) email,
  2. (string) password

Пример запроса:

{
	"email":"aaaa@aaaa.aa",
	"password":"12345678"
}

Ответ:

Пример ответа (data):

{
    	"user_id": 43,
    	"username": "user_4383",
    	"email": "aaaa@aaa.aa",
    	"sex": null,
   	 "country": null,
   	 "active_configuration": null,
    	"refcode": "746-81O-0RJ-RJS",
    	"status": 10
}


Профиль пользователя (profile)

Запрос:

Request URL: [site]/api/profile/

Параметры запроса: (string) token

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"user_id":1,
	"username":"Ivan Pupkin",
	"email":"aaaa@aaa.aa",
	"phone": "423546546546",
	"sex":2, 		// пол 0 - не указан , 1 - женский  , 2 - мужской
	"send_email": 1,
              "send_sms": 0,
               "role": 1,
               "lang": 2,
	"country":219,  		// код страны в базе
	"active_configuration":"1",
	"refcode":"JHE-1GD-T8B-9HB",
	"status":10,       		// 0 - неактивен , 10 - активен
	"token":"1Cyuvr9DKMbB6aFQ-mLPLeGZXFLyuK8d",
}

Контроллеры

Список Контроллеров Пользователя (list)

Запрос:

Request URL: [site]/api/ctrl/list/

Параметры запроса: (string) token

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
"0":{
	"id": 651,
	"name": "AE439648F951",
	"ip": "192.168.10.135",
	"fw_id": "1",
	"hostname": "quadrobase",
	"armed": 0,
	"address": "",
	"lat": null,
	"lng": null,
	"timezone": 2,
	"online": 1,
	"last_online": "2019-06-17 19:36:48",
	"type_signal": "wifi",
	"wifi_param": -67,
	"gsm_param": 0,
	"phone": "",
	"pin": 0,
	"user_controller_name": "quadrobase",
	"on_dashboard": 0
}] 

Информация о Контроллере (info)

Запрос:

Request URL: [site]/api/ctrl/info/

Параметры запроса:

  1. (int) controller_id,
  2. (string) token

Пример запроса:

{
	"controller_id": 1 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"id":"6",
	"name":"66D4E809EF0A",
	"hostname":"Test Valera 34",
	"armed":0,
	"address":"",
	"lat":50.4156,
	"lng":30.5336,
	"ip":"192.168.1.155",
	"fw_id":1,
	"timezone":3,
	"online":1,
	"last_online":"2019-07-29 17:08:41",
	"type_signal":"wifi",
	"wifi_param":-78,
	"gsm_param":0,
	"phone":"",
	"pin":0,
	"user_controller_name":"Test Valera 34",
	"on_dashboard":0
}

Постановка/снятие Контроллера на охрану / с охраны (armed)

Запрос:

Request URL: [site]/api/ctrl/armed/

Параметры запроса:

№(int) controller_id, №(string) token

Пример запроса:

{
	"controller_id": 6 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Так как MQTT односторонний - ответа быть не может. Ответ что запрос ушел:

Ответ:

Пример ответа (data):

{
	"result": "Ok"
}


Добавление Контроллера (add)

Запрос:

Request URL: [site]/api/ctrl/add

Параметры запроса: (string) token

Пример:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа:

{
	"PIN":"7gDH"
}

После ввода пин-кода необходимо обновить список Контроллеров (/api/ctrl/list/)

Обновление списка устройств и действий на Контроллере (update)

Этап 1 - обновляем список IDS устройств на Контроллере

Запрос:

Request URL: [site]/api/ctrl/update/

Параметры запроса:

  1. (int) controller_id,
  2. (string) token

Пример запроса:

{
	"controller_id": 6 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"result": "Ok" // "Ok" = запрос отправлен
}

Этап 2 - обновляем информацию о каждом устройстве

Запрос:

Request URL: [site]/api/ctrl/update-devices/

Параметры запроса:

  1. (int) controller_id,
  2. (string) token

Пример запроса:

{
	"controller_id": 6 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
}

Ответ:

Пример ответа:

{
	"result": "Ok" // Запрос отправлен
}

Процесс происходит автоматически. Для получения результата требуется таймаут, после чего делается стандартный запрос на получение данных (контроллер, устройства)


Удаление Контроллера (delete)

Запрос:

Request URL: [site]/api/ctrl/delete

Пример запроса:

{
	"token":"8yE-VIQrYuZ2bTeho_lajxjOJPnIe_Yx",
	"controller_id":"81"	
}

Ответ:

Пример ответа:

{
	"error":null,
	"data":{"result":"Ok"}
}

Обновление статуса контроллера (update-status)

Запрос:

Request URL: [site]/api/ctrl/update-status/

Параметры запроса:

  1. (string) token,
  2. (int) controller_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"controller_id": 122
}

Ответ:

Пример ответа:

{
	"error":null,
	"data":{
		"result":"Ok"
		}
}

Получение актуального статуса Контроллера (get-status)

Запрос:

Request URL: [site]/api/ctrl/get-status/

Параметры запроса:

  1. (string) token,
  2. (int) controller_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"controller_id": 122
}

Ответ:

Пример ответа:

{
	"error":null,
	"data":{
		"status":1
		}
}

Поле “status” может принимать следующие значения: • 0 – офлайн

• 1 – онлайн

• 2 – онлайн, после включения питания

Получение конфигурации Контроллера (config)

Запрос:

Request URL: [site]/api/ctrl/config/

Параметры запроса:

  1. (string) token,
  2. (int) controller_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"controller_id" : 111
}

Ответ:

Пример ответа (data):

{
	"id":"1",   // id конфигурации
	"controller_id":"111",   // id контроллера
	"language":"ru-RU",
	"hostname":"alarm-system",
	"wifi_mode":1,   // 1 - STA, 2 - AP
	"wifi_sta_type":1, // 0 - STATIC, 1 - DHCP
	"wifi_sta_ssid":"SSID",
	"wifi_sta_pass":"PASSWORD",
	"wifi_sta_ip":"192.168.0.101",
	"wifi_sta_mask":"255.255.255.0",
	"wifi_sta_gw":"192.168.0.1",
	"wifi_sta_dns1":"208.67.222.222",
	"wifi_sta_dns2":"208.67.222.222",
	"wifi_ap_authmode": 3, // 0 - OPEN, 1 - WEP, 2 - WPA_PSK, 3 - WPA2_PSK, 4 - WPA_WPA2_PSK
	"wifi_ap_hidden":0, // 0/1
	"wifi_ap_channel":1, // 1...14
	"wifi_ap_ssid":"SMARTHOME_000000000000",
	"wifi_ap_pass":"00000000",
	"wifi_ap_ip":"192.168.4.1",
	"wifi_ap_mask":"255.255.255.0",
	"wifi_ap_gw":"192.168.4.1",
	"httpd_port":80, // 1...65535
	"httpd_auth":0, // 0/1
	"httpd_user":"admin",
	"httpd_pass":"admin",
	"ntp_enable":0, // 0/1
	"ntp_host":"time.windows.com",
	"ntp_tz":3, // -11...13
	"upnp_enable":1, // 0/1
	"advanced_mode":0, // 0/1 
	"app_afb_enable":1, // 0/1
	"app_leds_off":1, // 0/1
	"app_alarm_duration":10, // minutes
	"app_arming_delay":0, // seconds
	"app_portal_link":0, // 0/1
	"app_rf_freq":2, // 1 - 315Mhz, 2 - 433Mhz
	"app_rf_power":3, // 0 - 1DBM, 1 - 2DBM, 2 - 5DBM, 3 - 8DBM, 4 - 11DBM, 5 - 14DBM, 6 - 17DBM, 7 - 20DBM
	"app_button_action":1, // 0 - NONE, 1 - ARMING, 2 - RUN_ACTION, 3 - SEND_CODE
	"app_button_rec_id":0, // ID
	"gsm_pin":"1234",
	"gsm_allowed_phones":"", // список через запятую
	"gsm_sendto_phones":"", // список через запятую
	"gsm_callto_phones":"", // один номер
	"gsm_smsin_enable":"0", // 0/1
	"gsm_smsout_enable":"0", // 0/1
	"gsm_call_enable":"0", // 0/1
	"gprs_enable":"1", // 0/1
	"gprs_apn":"", "internet.mts.ru",
	"gprs_user":"mts",
	"gprs_pass":"mts",
	"gsm_enable":"0", // 0/1
	"ebus_enable":0, // 0/1
	"command":"xxx",
	"response":"0"
}


Изменение конфигурации контроллера(config-set)

Запрос:

Request URL: [site]/api/ctrl/config-set/

Параметры запроса:

  1. (string) token,
  2. (int) controller_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"controller_id" : 111,
	"command": "yyy"    // параметры контроллера смотри метод Получить конфигурацию контроллера(ctrl/config/)
}

Ответ:

Пример ответа (data):

{
	"result": "Ok"
}

Передача локального IP Контроллера (get-ip)

Запрос

Request URL: [site]/api/ctrl/get-ip

Request Params:

  1. token (required): string(64);
  2. controller_id (required): int;

Ответ:

Пример ответа:

{
	data:'192.168.0.15',
	error: null
}

Установка подписки на Контроллере

Запрос:

Request URL: [site]/in/subscription/set”

Ответ:

Пример ответа (data):

{
	"seq_id": 0,
	"id": 1, // ID подписки (см. ниже)
	"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
}

Просмотр статуса подписки (get-subscribe-status)

Запрос:

Request URL: [site]/api/ctrl/get-subscribe-status

Параметры:

  1. token (required): string(64)
  2. controller_id (required): int

Ответ:

Пример ответа (data):

{
	data:{
		id: 1,
		controller_id: 40,
		user_id: 424,
		remain_time: 100,
		request_time: 1355314332,
		response_time: 1355315332,
		success: 0
	},
	error: ''
}

Активация/продление/покупка подписки (set-subscribe)

Запрос:

Request URL: [site]/api/ctrl/set-subscribe

Параметры:

  1. token (required): string(64)
  2. controller_id (required): int

Ответ:

{
	data:{
		id: 1,
		controller_id: 40,
		user_id: 424,
		remain_time: 100,
		request_time: 1355314332,
		response_time: 1355315332,
		success: 0
	},
	error: ''
}

Метод получения списка телефонов (get-phones)

Запрос:

Request URL: [site]/api/ctrl/get-phones

Параметры:

  1. token (required): string, 64
  2. controller_id (required): int
  3. type (optional): string,
  4. range ['recipient', 'authorized', 'all'], (default: 'all')

Ответ:

Пример ответа:

{
	'error': null,
	data: [
		{'id': 5, 'phone': '+380123456789'},
		{'id': 6, 'phone': '+380123334455'},
		{'id': 7, 'phone': '+380112223344'}
	]
}


Редактирование телефона (edit-phone)

Запрос:

Request URL: [site]/api/ctrl/edit-phone

Параметры:

  1. token (required): string, 64
  2. phone_id (required): int
  3. is_recipient (optional): int
  4. is_authorized (optional): int
  5. phone (optional): string

Ответ:

Пример ответа:

{
	"error":null,
	"data":{
		"id":2,
		"controller_id":81,
		"phone":"+380503334455",
		"is_recipient":"1",
		"is_authorized":0
	}
}


Удаление телефона (delete-phone)

Запрос:

Request URL: [site]/api/ctrl/delete-phone

Параметры:

  1. token (required): string, 64
  2. phone_id (required): int

Ответ:

Пример ответа:

{
	"error":null,
	"data":{"response":"OK"}
}

Добавление телефона (add-phone)

Запрос:

Request URL: [site]/api/ctrl/add-phone

Params:

  1. token (required): string, 64
  2. controller_id (required): int
  3. phone (required): string
  4. is_recipient (optional): int
  5. is_authorized (optional): int

Ответ:

Пример ответа:

{
	"error":null,
	"data":{
		"id":2,
		"controller_id":81,
		"phone":"+380503334455",
		"is_recipient":"1",
		"is_authorized":0
	}
}

Информация о версии прошивки контроллера (fw-version-current)

Запрос:

Request URL: [site]/api/ctrl/fw-version-current/

Параметры запроса:

  1. (int) controller_id,
  2. (string) token

Пример запроса:

{
	"controller_id": 1 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"version_id":1,
	"version_name":"0.01",
	"tag":"OLD",
	"url":"\/controllers_fw\/NULL.bin",
	"date":"16.10.2018",
	"new_version_id":38   // если "new_version_id" != "version_id" значит имеется новая версия.
}


Информация о последней версии прошивки контроллера (get-new-fw-version)

Запрос:

Request URL: [site]/api/ctrl/get-new-fw-version/

Параметры запроса:

  1. (int) controller_id,
  2. (string) token
Пример запроса:

{
	"controller_id": 1 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"version_id":38,
	"version_name":"0.14",
	"tag":"0.14 \/ Oct 5 2018 16:49:04",
	"url":"\/controllers_fw\/tls-smarthome-hw-9_0.14.bin",
	"date":"16.10.2018"
}

Устройства

Получение списка устройств пользователя (list)

Запрос:

Request URL: [site]/api/device/list

Параметры запроса:

  1. (int) controller_id,
  2. (string) token

Пример запроса:

{
	"controller_id": 1 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
"0":{
	"id":"122",
	"external_id":"19", //id на контроллере
	"controller_id":"6",
	"name":"Сирена",
	"type_id":"2",  //тип устройства
	"codes":":{     //коды (кнопки)
		"0":{
		"id":"218",
		"external_cod_id":"32",
		"device_id":"122",
		"name":"ON",
		"code":"3675192",
		"protocol":"1",
		"pulse_len":null,
		"group_1":"1",
		"group_2":"0",
		"group_3":"0",
		"group_4":"0",
		"group_5":"0",
		"group_6":"0",
		"group_7":"0",
		"group_8":"0",
		"active":"1"
		}, 
		"1":{ ... }
	},
	"state":"1",
	"on_dashboard":"1", //показывать на главной
	"active":"1"  
},
"1":{
	"id":"120",
	"external_id":"22",
	"controller_id":"6",
	"name":"Пульт 4кн бел",
	"type_id":"3",
	"codes": ... ,
	"state":"1",
	"on_dashboard":"0",
	"active":"1"
	}
}  


Информация об устройстве (info)

Запрос:

Request URL: [site]/api/device/info/

Параметры запроса:

  1. (int) controller_id,
  2. (int) device_id,
  3. (string) token

Пример запроса:

{
	"controller_id": 1 ,
	"device_id": 122,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"id":"122",
	"external_id":"19",
	"controller_id":"6",
	"name":"Сирена",
	"type_id":"2",
	"codes"
		"0"
			"id":"218",
			"external_cod_id":"32",
			"device_id":"122",
			"name":"ON",
			"code":"3675192",
			"protocol":"1",
			"pulse_len":null,
			"group_1":"1",
			"group_2":"0",
			"group_3":"0",
			"group_4":"0",
			"group_5":"0",
			"group_6":"0",
			"group_7":"0",
			"group_8":"0",
			"active":"1",
		},
		"1"
			"id":"219",
			"external_cod_id":"33",
			"device_id":"122",
			"name":"OFF",
			"code":"3675186
		...
		}
	},
	"state":"1",
	"on_dashboard":"1",
	"active":"1",
	"alias":"xxx",
	"send_sms ":0,
	"voice_call":0,
	place"
		"name":null,
		"color":null
		}
}

Обновление информации об устройстве (update)

Запрос:

Request URL: [site]/api/device/update/

Параметры запроса:

  1. (int) device_id,
  2. (string) name,
  3. (int) active,
  4. (string) token,

Пример запроса (data):

{
	"device_id": 107,   // local device id
	"name": "New name", // new name
	"active": 1,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"result" : "Ok"
}

Удаление устройства (delete)

Запрос:

Request URL: [site]/api/device/delete/

Параметры запроса:

  1. (int) device_id,
  2. (string) token

Пример запроса:

{
	"device_id": 107,   // local device id
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"result" : "Ok"
}

Получение метеоданных (last)

Запрос:

Request URL: [site]/api/device/meteo-last/

Параметры запроса:

  1. (string) token,
  2. (int) device_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"device_id": 130
}

Ответ:

Пример ответа (data):

{
	"id":"4046",
	"controller_name":"AS_7FD6785CCF5D",
	"internal_id":"55",
	"device_id":"130",
	"name":"7",
	"temp":"240",
	"hum":"245",
	"illum":"0",
	"pres":"1239",
	"volt":"32",
	"date_time":"2016-03-02 21:09:40",
	"new":"0"  
}

Получение метеоданных за период (period)

Запрос:

Request URL: [site]/api/device/meteo-period/

Параметры запроса:

  1. (string) token,

(int) device_id,

  1. (int) period

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"device_id": 130,
	"period": 1 // количество дней 
}

Ответ:

параметры ответа (array to objects):

Пример ответа (data):

[
	{
	"id":"4065",
	"controller_name":"AS_7FD6785CCF5D",
	"internal_id":"55",
	"device_id":"130",
	"name":"7",
	"temp":"240",
	"hum":"523",
	"illum":"0",
	"pres":"1239",
	"volt":"32",
	"date_time":"2017-07-30 21:11:07",
	"new":"0"
	},
	{
	"id":"4067",
	"controller_name":"AS_7FD6785CCF5D
	...
	},
]

Получение данных электропитания (last)

Запрос:

Request URL: [site]/api/device/electro-last/

Параметры запроса:

  1. (string) token,
  2. (int) device_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"device_id": 130
}

Ответ:

Пример ответа (data):

{
	"id":"318",
	"controller_id":"11",
	"external_id":"2",
	"device_id":"125",
	"name":"23",
	"token":"747D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
	"last_seen":"2017-07-21 04:20:27",
	"available":"1",
	"voltage":"24",
	"have_voltage":"1",
	"current":"2147483647",
	"have_current":"1",
	"supp_voltage":"33",
	"date_create":"2017-07-21 01:20:33",
	"new":"0"
}

Получение данных электропитания за период (period)

Запрос:

Request URL: [site]/api/device/electro-period/

Параметры запроса:

  1. (string) token,
  2. (int) device_id,
  3. (int) period

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"device_id": 130,
	"period": 1 // количество дней 
}

Ответ:

Параметры ответа: (array to objects)

Пример ответа (data):

[
	{
	"id":"318",
	"controller_id":"11",
	"external_id":"2",
	"device_id":"125",
	"name":"23",
	"token":"747D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
	"last_seen":"2017-07-21 04:20:27",
	"available":"1",
	"voltage":"24",
	"have_voltage":"1",
	"current":"2147483647",
	"have_current":"1",
	"supp_voltage":"33",
	"date_create":"2017-07-21 01:20:33",
	"new":"0"
	},
	{
	"id":"318",
	"controller_id":"11",
	...
	},
]

Получение данных о сторонних устройствах (other-last)

Метод возвращает информацию о последнем обнаруженном стороннем устройстве.

Запрос:

Request URL: [site]/api/device/other-last/

Параметры запроса:

  1. (string) token,
  2. (int) device_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"device_id": 118
}

Ответ:

Пример ответа (data):

{
	"id":"1301",
	"controller_id":"6",
	"device_id":"118",
	"name":"Розетка",
	"code":"81",
	"pulse_len":null,
	"bit_len":null,
	"protocol":null,
	"groups":null,
	"type":null,
	"date_time":"2017-08-21 04:55:18",
	"active":null,
	"new":"1"
}


Получение данных о сторонних устройствах за период (other-period)

Запрос:

Request URL: [site]/api/device/other-period/

Параметры запроса:

  1. (string) token,
  2. (int) device_id,
  3. (int) period

Пример запроса:

 
{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"device_id": 118,
	"period": 1 // количество дней 
}

Ответ:

Пример ответа (data):

{
	"id":"1301",
	"controller_id":"6",
	"device_id":"118",
	"name":"Розетка",
	"code":"81",
	"pulse_len":null,
	"bit_len":null,
	"protocol":null,
	"groups":null,
	"type":null,
	"date_time":"2017-08-21 04:55:18",
	"active":null,
	"new":"1"
	},
	{
	"id":"4067",
	"controller_id":"6",
	...
}

Wizard добавления устройств

Датчик открытия двери (create-door-open-sensor)

Запрос:

URL: [site]/api/wizard/create-door-open-sensor

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. device_name (optional): string, 256
  4. code_ready (optional): string, 64 //Название кода готовности
  5. code_alarm (optional): string, 64 //Название кода оповещания
  6. code_low_battery (optional): string, 64 //Название кода садящейся батареи

Ответ:

Пример ответа:

{
	data:{
		'response': 'OK'
		},
	error: null
}

После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.

Датчик затопления (create-flood-sensor)

Запрос:

Request URL: [site]/api/wizard/create-flood-sensor

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. device_name (optional): string, 256
  4. code_alarm (optional): string, 64 //Название кода оповещения
  5. code_tamper (optional): string, 64 //Название кода вмешательства
  6. code_low_battery (optional): string, 64 //Название кода садящейся батареи

Ответ:

Пример ответа:

{
	data: {
		'response': 'OK'
		},
	error: null
}

После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.


Пульт,4 кнопки (create-console)

Запрос:

Request URL: [site]/api/wizard/create-console

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. device_name (optional): string, 256
  4. code_lock (optional): string, 64 //Название кода блокировки
  5. code_unlock (optional): string, 64 //Название кода разблокировки
  6. code_s (optional): string, 64 //Название кода s
  7. code_alarm (optional): string, 64 //Название кода оповещения

Ответ:

Пример ответа:

{
	data: {
		'response': 'OK'
	},
	error: null
}

После отправки параметров ожидается срабатывание добавляемого устройства. При срабатывании происходит процесс добавления, и лишь после этого приходит ответ.


Сирена (create-siren)

Запрос:

Request URL: [site]/api/wizard/create-siren

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. device_name (optional): string, 256
  4. code_on (optional): string, 64 //Название кода включения
  5. code_off (optional): string, 64 //Название кода выключения
  6. code_blank (optional): string, 64 //Название кода blank

Ответ:

Пример ответа:

{
	data: {
		'response': 'OK'
		},
	error: null
}

Перед отправкой параметров необходимо перевести сирену в режим обучения.


Метеостанция: получение списка обнаруженных метеостанций за последние 10 минут (get-meteos)

Запрос:

Request URL: [site]/api/wizard/get-meteos

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64

Ответ:

Пример ответа:

{
	"error":null,
	"data":[
			{
			"id":"93",
			"controller_id":"79",
			"date":"1528389351",
			"type":"7",
			"family":"0",
			"rf_code":null,
			"rf_bit_len":null,
			"rf_pulse_len":null,
			"rf_protocol":null,
			"rf_freq":null,
			"ir_code":null,
			"ir_bit_len":null,
			"ir_address":null,
			"ir_protocol":null,
			"meteo_num":"0"
			}
		]
}

Метеостанция: добавление (create-meteo)

Запрос:

Request URL: [site][site]/api/wizard/create-meteo

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. meteo_num (required): int //Получается в списке выше
  4. device_name (optional): string, 256

Ответ:

Пример ответа:

{
	"error":null,
	"data":{
		"response":"OK"
		}
}

Водопроводный кран

Порядок добавления крана:

1) Сгенерировать коды

2) Зажать на кране кнопку, пока кран не мигнёт трижды

3) Отправить один код

4) Нажать на кране кнопку однократно

5) Зажать на кране кнопку, пока не мигнёт 4 раза

6) Отправить второй код из сгенерированных

7) Нажать на кране кнопку однократно

8) Отправить запрос на создание крана.


Генерация кодов

Запрос:

Request URL: [site]/api/wizard/create-codes

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64

Ответ:

Пример ответа:

{
	"error":null,
	"data":
		{
			"response":{
					"id":30,
					"masks":"[6,4,0,1]",
					"code_1":"9920950",
					"code_2":"9920948",
					"code_3":"9920944",
					"code_4":"9920945"
				}
		}
}


Выполнение кода

Запрос:

Request URL: [site]/api/wizard/execute-code

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. code (required): int // Берется из сгенерированных

Ответ:

Пример ответа:

{
	error: null,
	data: {
		"response":"OK"
		}
}

Добавление крана

Запрос:

Request URL: [site]/api/wizard/create-crane-by-codes

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. code_1 (required): int
  4. code_2 (required): int
  5. device_name (optional): string, 256
  6. code_open (optional): string, 64 //Название кода открытия
  7. code_close (optional): string, 64 //Название кода закрытия

Ответ:

Пример ответа:

{
	data:{'response': 'OK'},
	error: null
}

Добавление розетки

Порядок добавления розетки следующий:

1) Сгенерировать коды

2) Зажать на розетке кнопку, пока она не начнет мигать

3) Отправить один код

4) Зажать на розетке кнопку, пока она не начнет мигать

5) Отправить второй код из сгенерированых

6) Отправить запрос на создание розетки


Генерация кодов (create-codes)

Запрос:

Request URL: [site]/api/wizard/create-codes

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. socket (required): любое значение.

Ответ:

Пример ответа:

{
	"error":null,
	"data":{
		"response":{"id":30,"masks":"[257, 258]","code_1":"8737025","code_2":"8737026"}
		}
}

Выполнение кода (execute-code)

Запрос:

Request URL: [site]/api/wizard/execute-code

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. code (required): int // Берется из сгенерированных

Ответ:

Пример ответа:

{
	error: null,
	data: {'response' => 'OK'}
}


Добавление розетки (create-socket)

Запрос:

Request URL: [site]/api/wizard/create-socket

Параметры запроса:

  1. controller_id (required): int
  2. token (required): string, 64
  3. code_1 (required): int
  4. code_2 (required): int
  5. device_name (optional): string, 256
  6. code_off (optional): string, 64 //Название кода открытия
  7. code_on (optional): string, 64 //Название кода закрытия

Ответ:

Пример ответа:

{
	data: {'response':'OK'},
	error: null
}

Сценарии

Получение списка сценариев (list)

Запрос:

Request URL: [site]/api/scheduler/list/

Параметры запроса: (string) token

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа:

{
"error":null,
"data"
	"schedulers":[
	{
		"id":83,
		"external_id":23,
		"name":"Test 444",
		"operation":"local",
		"armed":2,
		"type":"meteo",
		"active":0,
		"action"
			"action_id":1,
			"controller_id":109,
			"device_id":1747,
			"code_id":1100,
			"device_external_id":64,
			"armed":1,
			"groups":7,
			"sensor_type":"1",
			"date":"00:00",
			"repetition":"1",
			"logic_operation":"=",
			"value":"9"
		},
		"target"
			"target_id":2,
			"controller_id":109,
			"device_id":0,
			"device_external_id":0,
			"code_id":0,
			"external_cod_id":0,
			"armed":0,
			"groups":168
		}
		},
		{
		"id":84,
		"external_id":24,
		...
		}]
	}
}

Обновление/добавление сценариев (update)

Запрос осуществляется в 2 этапа: на первом этапе происходит при запросе на обновление Контроллера (см. "Обновление Контроллера"); на втором этапе обновляется информация о каждом действии.

Запрос:

Request URL: [site]/api/scheduler/update/

Параметры запроса:

  1. (int) controller_id,
  2. (string) token

Пример запроса:

{
	"controller_id": 6 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
}

Ответ:

Пример ответа:

{
	"result": "Ok" // ответ что запрос ушел
}

Процесс обновления происходит автоматически. Для получения результата требуется таймаут, после чего делается стандартный запрос на получение данных (Контроллер, действия)

Информация о сценарии (info)

Запрос:

Request URL: [site]/api/scheduler/info/

Параметры запроса:

  1. (int) scheduler_id,
  2. (string) token

Пример запроса:

{
	"scheduler_id": 122,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
"id":107,
"external_id":6,
"name":"Test 1.1.1",
"operation":"local",
"armed":1,
"type":"device",
"active":1,
"action":{
	"action_id":1,
	"controller_id":111,
	"device_id":1824,
	"code_id":1399,
	"device_external_id":18,
	"armed":0,
	"groups":0,
	"sensor_type":"0",
	"date":null,
	"repetition":"0",
	"logic_operation":"=",
	"value":null
},
"targets":[
		{
		"id":87,
		"type_id":3,
		"controller_id":111,
		"device_id":0,
		"code_id":0,
		"device_external_id":0,
		"armed":1,
		"groups":0
		},
		{
		"id":88,
		"type_id":1,
		"controller_id":113,
		"device_id":13,
		"code_id":123,
		"device_external_id":1234,
		"armed":0,
		"groups":0
		},
	]
}


Обновление сценариев (update)

Обновление состоит из двух запросов: 1) обновление действия, вызывающего событие; 2) обновления целей сработки. При этом запросы можно делать независимо друг от друга.

Обновление/добавление действий и событий сценария (Update-action)

Request URL: [site]/api/scheduler/update-action/

Параметры запроса:

  1. (int) scheduler_id,
  2. (string) token,
  3. (string) name,
  4. (int) "active"
  5. (int) "send_sms" // 1 - отправлять / 0 - не отправлять
  6. (int) "make_call" // 1 - отправлять / 0 - не отправлять
  7. (int) "armed" // 0 - в любом режиме, 1 - в режиме охраны, 2 - без режима охраны
  8. (int) "action_id",
  9. (int) "action_device_id",
  10. (int) "action_code_id",
  11. (int) "action_armed",
  12. (int) "action_groups", // битовая маска группы от 1 до 8
  13. (string) "action_repetition", // только для расписания: номер дней повторения через запятую от 1 до 7
  14. (string) "action_event_time", // только для расписания: время повторения
  15. (int) "action_sensor_type", // только для метео устройств: 1 - напряжение, 2 - температура, 3 - влажность, 4 - Атм. давление, 5 - Освещенность , 0 - не выбрано
  16. (string) "action_logic_operation", // логическая операция : '=', '!=', '<', '>', '<=', '>=', 'in', 'like'
  17. (int) "action_value"

Пример запроса:

{
	"scheduler_id": 6 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"name": "New name",
	"active": 1,
	"send_sms": 0, 
	"make_call": 1,
	"armed": 2,    
	"action_id" : 2,
	"action_device_id" : 2,
	"action_code_id" : 4,
	"action_armed" : 0,
	"action_groups" : 7,   
	"action_repetition" : "1,3",  
	"action_event_time" : "10:00",   
	"action_sensor_type" : 2, 
	"action_logic_operation" : "=",   
	"action_value" : 35,   
}

Ответ:

Пример ответа:

{
	"result": "Ok" // ответ о том, что запрос отправлен.
}

Обновление цели события (Update-target)

Request URL: [site]/api/scheduler/update-target/

Параметры запроса:

  1. (int) target_id,
  2. (string) token,
  3. (int) "target_type_id",
  4. (int) "target_device_id",
  5. (int) "target_code_id",
  6. (int) "target_armed",
  7. (int) "target_groups", // битовая маска группы от 1 до 8

Пример запроса:

{
	"target_id": 6 ,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",   
	"target_type_id" : 2,
	"target_device_id" : 2,
	"target_code_id" : 4,
	"target_armed" : 0,
	"target_groups" : 7
}

Ответ:

Пример ответа:

{
	"result": "Ok" // ответ о том, что запрос отправлен.
}


Логи пользователя (logs)

Запрос:

Request URL: [site]/api/profile/logs/

Параметры запроса: (string) token, (int) page, (int) limit

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"page": 1 // номер страницы лога
	"limit": 20 // количество логов на странице , по умолчанию 20, максимум 100
}

Ответ:

Пример ответа:

[
	{
	"id":15,
	"controller":"Test Valera",
	"action_name":"",
	"device":"",
	"cod":"",
	"action_pack":"",
	"date_create":"2019-06-20 15:57:26",
	"status":0
	},
	{
	"id":14,
	"controller":"Test Valera",
	"action_name":"",
	"device":"",
	"cod":"",
	"action_pack":"",
	"date_create":"2019-06-20 15:57:18",
	"status":0	
        }
]

Коды

Получение информации о коде (info)

Запрос:

Request URL: [site]/api/property/info/

Параметры запроса:

  1. (int) controller_id,
  2. (int) device_id,
  3. (int) code_id,
  4. (string) token

Пример запроса:

{
	"controller_id": 6,
	"device_id": 109, 
	"code_id": 192,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
	"id":"1465",
	"external_cod_id":"59",
	"device_id":"1866",
	"name":"alarm",
	"alias":"xxx",
	"code":"15779537",
	"msg_cod":"003001",
	"send_armed":"INFO",
	"send_disarmed":"INFO",
	"protocol":"1",
	"pulse_len":null,
	"group_1":"0",
	"group_2":"0",
	"group_3":"0",
	"group_4":"0",
	"group_5":"0",
	"group_6":"0",
	"group_7":"0",
	"group_8":"0",
	"active":"1",
	"send_sms":"0",
	"voice_call":"0"
}

Изменение имени кода (update-code-name)

Запрос: Request URL: [site]/api/device/update-code-name

Параметры запроса:

  1. token (required): string(64)
  2. code_id (required): int
  3. name (optional): string(255)

Ответ:

Пример ответа:

{
	data: {
		'message': "OK"
		},
	error: null
}

Редактирование параметров кода (update)

Запрос:

Request URL: [site]/api/property/update/

Параметры запроса:

  1. (string) token
  2. (int) device_id
  3. (int) code_id
  4. (string) name // опционально
  5. (int) active // опционально
  6. (int) send_sms // опционально
  7. (int) voice_call // опционально

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"device_id" : 111,
	"code_id" : 111,
	"send_sms": 1
}

Ответ:

Пример ответа (data):

{
	"result": "Ok"
}

Получение кодов по типу сигнала (get-codes-by-subtype)

Запрос:

Request URL: [site]/api/device/get-codes-by-subtype

Параметры запроса:

  1. token (required): string(64)
  2. device_subtype_id (optional): int, default 0.

Ответ:

Пример ответа:

{
	"code"
	"id":131,
	"controller_id":109,
	"device_type_id":0,
	"device_subtype_id":1,
	"code":"655370",
	"protocol":1,
	"bit_len":24,
	"pulse_len":283,
	"freq":2,"address":null,
	"num":null,
	"date_create":"2019-03-13 17:35:05",
	"device_id":null
	},
	"devices":[
	{
		"id":"1684",
		"external_id":"64",
		"controller_id":"109",
		"name":"WS 1",
		"alias":null,
		"type_id":"12",
		"password":null,
		"codes":[178,179,180],
		"state":"1",
		"on_dashboard":"0",
		"active":"1",
		"new":"1",
		"family":"DEVICE_FAMILY_RADIO",
		"camera_id":null,
		"camera_host":null,
		"send_sms":"0",
		"voice_call":"0"
	},
	{
		"id":"1738",
		"external_id":"115",
		"controller_id":"109",
		"name":"Pult 123",
		"alias":null,
		"type_id":"3",
		"password":null,
		"codes":[280,281,282,283],
		"state":"1",
		"on_dashboard":"0",
		"active":"1",
		"new":"1",
		"family":"DEVICE_FAMILY_RADIO",
		"camera_id":null,
		"camera_host":null,
		"send_sms":"0",
		"voice_call":"0"
	}
	]
}

Получение списка кодов (get-codes)

Запрос:

Request URL: [site]/api/device/get-codes

Параметры:

  1. token (required): string 64
  2. controller_id (required): int

Ответ:

Пример ответа:

{
	data: [
		{
			devices:	[
			{
				id:	13
				external_id:	7,
				controller_id:	5,
				name:	"Simple device",
				type_id:	2,
				password:	null,
				codes:	"a:4:{i:0;i:46;i:1;i:47;i:2;i:48;i:3;i:45;}",
				state:	1,
				on_dashboard:	0,
				active:	1,
				new:	1,
				family:	DEVICE_FAMILY_RADIO,
				camera_id:	null,
				camera_host:	null
			},
			{
				id:	14
				external_id:	8,
				controller_id:	5,
				name:	"Simple device",
				type_id:	2,
				password:	null,
				codes:	"a:4:{i:0;i:46;i:1;i:47;i:2;i:48;i:3;i:45;}",
				state:	1,
				on_dashboard:	0,
				active:	1,
				new:	1,
				family:	DEVICE_FAMILY_RADIO,
				camera_id:	null,
				camera_host:	null
			},
		],
		code: {
			id:	12,
			controller_id: 5,
			device_type_id:	2,
			code: 498654,
			protocol: 1,
			bit_len: 32,
			pulse_len:	86,
			freq:	77,
			address:	94,
			num:	1,
			date_create: '2018-04-13 18:29:11"

		}
		}, 

		{
			devices:	[
			{
				id:	13
				external_id:	7,
				controller_id:	5,
				name:	"Simple device",
				type_id:	2,
				password:	null,
				codes:	"a:4:{i:0;i:46;i:1;i:47;i:2;i:48;i:3;i:45;}",
				state:	1,
				on_dashboard:	0,
				active:	1,
				new:	1,
				family:	DEVICE_FAMILY_RADIO,
				camera_id:	null,
				camera_host:	null
			},
			{
				id:	14
				external_id:	8,
				controller_id:	5,
				name:	"Simple device",
				type_id:	2,
				password:	null,
				codes:	"a:4:{i:0;i:46;i:1;i:47;i:2;i:48;i:3;i:45;}",
				state:	1,
				on_dashboard:	0,
				active:	1,
				new:	1,
				family:	DEVICE_FAMILY_RADIO,
				camera_id:	null,
				camera_host:	null
			},
		],
		code: {
			id:	12,
			controller_id: 5,
			device_type_id:	2,
			code: 498654,
			protocol: 1,
			bit_len: 32,
			pulse_len:	86,
			freq:	77,
			address:	94,
			num:	1,
			date_create: '2018-04-13 18:29:11"

		}
		}, 
	},
	error: null,
}

Добавление кода к устройству (set-code-to-device)

Запрос:

Request URL: [site]/api/device/set-code-to-device

Параметры запроса:

  1. token (required): string 64
  2. code_id (required): int
  3. device_id (required): int
  4. name (optional): string 256

Ответ:

Пример ответа:

{
	data:	{
		id: 5,
		external_cod_id: 15,
		device_id: 14,
		name: "Name"
		code: 8463517,
		protocol: 0,
		pulse_len:	86, 
		active: 1,
	},
	error: null
}

Удаление кода (remove-code)

Запрос:

Request URL: [site]/api/device/remove-code

Параметры запроса:

  1. token (required): string 64
  2. code_id (required): int

Ответ:

Пример ответа:

{
	data:	{
		message: "OK"
	},
	error: null
}

События

Нажатие кнопки на устройстве (event)

Запрос:

Request URL: [site]/api/device/event/

Параметры запроса:

  1. (string) controller_name,
  2. (int) device_external_id,
  3. (int) cod_external_id,
  4. (string) token,
  5. (int) device_type

Пример запроса:

{
	"controller_name": " AS_7F26335CCF4B" ,
	"device_external_id": 19,
	"cod_external_id": 1,
	"device_type": 1,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

так как MQTT односторонний - ответа быть не может. Может быть возвращён ответ, что запрос отправлен: response:

Ответ:

Пример ответа (data):

{
	"result": "Ok"
}

Места

Получение списка мест (places-list)

Запрос:

Request URL: [site]/api/places/places-list

Параметры запроса: token (required): string, 64

Ответ:

Пример ответа:

{
	"error":null,
	"data":{
		"rooms":[
				{
				"id":1,
				"root_id":1,
				"user_id":424,
				"lvl":0,
				"name":"Дом",
				"icon":0,
				"icon_type":1,
				"color":"#fff2cc",
				"readonly":0,
				"visible":1
				},
				{
				"id":2,
				"root_id":1,
				"user_id":424,
				"lvl":1,
				"name":"Спальня",
				"icon":0,
				"icon_type":1,
				"color":"#b6d7a8",
				"readonly":0,
				"visible":1
				}
			]
		}
}


Создание места (create)

Запрос:

Request URL: [site]/api/places/create

Параметры запроса:

  1. token (required): string, 64
  2. root (optional): int, default 1
  3. lft (optional): int, from 1 to 5 //В сумме с rgt должно быть 5
  4. rgt (optional): int, from 1 to 5 //В сумме с lft должно быть 5
  5. lvl (optional): int, default 0
  6. name (optional): string, 64, default 'Simple name'
  7. icon (optional): string, default //Допускаемые параметры -- ключи объекта выше
  8. color (optional): string, default: '#ccc' //Любой цвет в формате HEX, решетка в начале обязательна
  9. active (optional): int, default 1
  10. selected (optional): int, default 0
  11. disabled (optional): int, default 0
  12. readonly (optional): int, default 0
  13. visible (optional): int, default 1
  14. collapsed (optional): int, default 0
  15. movable_u (optional): int, default 1
  16. movable_d (optional): int, default 1
  17. movable_l (optional): int, default 1
  18. movable_r (optional): int, default 1
  19. removable (optional): int, default 1
  20. removable_all (optional): int, default 0
  21. inverse_text (optional): string, default 'black'

Ответ:

Пример ответа:

{
	error:null,
	data: {'message': 'OK'}
}


Редактирование места (edit)

Запрос:

Request URL: [site]/api/places/edit

Параметры запроса:

  1. token (required): string, 64
  2. place_id (required): int
  3. root (optional): int, default 1
  4. lft (optional): int, from 1 to 5 //В сумме с rgt должно быть 5
  5. rgt (optional): int, from 1 to 5 //В сумме с lft должно быть 5
  6. lvl (optional): int, default 0
  7. name (optional): string, 64, default 'Simple name'
  8. icon (optional): string, default //Допускаемые параметры -- ключи объекта выше
  9. color (optional): string, default: '#ccc' //Любой цвет в формате HEX, решетка в начале обязательна
  10. active (optional): int, default 1
  11. selected (optional): int, default 0
  12. disabled (optional): int, default 0
  13. readonly (optional): int, default 0
  14. visible (optional): int, default 1
  15. collapsed (optional): int, default 0
  16. movable_u (optional): int, default 1
  17. movable_d (optional): int, default 1
  18. movable_l (optional): int, default 1
  19. movable_r (optional): int, default 1
  20. removable (optional): int, default 1
  21. removable_all (optional): int, default 0
  22. inverse_text (optional): string, default 'black'

Ответ:

Пример ответа:

{
	error:null,
	data: {'message': 'OK'}
}

Удаление места (delete)

Запрос: Request URL: [site]/api/places/delete

Параметры запроса:

  1. token (required): string, 64
  2. place_id (required): int

Ответ:

Пример ответа:

{
	error:null,
	data: {'message': 'OK'}
}


Добавление устройства к месту, смена места у устройства (device-in-place)

Запрос:

Request URL: [site]/api/places/device-in-place/

Параметры запроса:

  1. token (required): string 64
  2. device_id (required): int
  3. place_id (required): int
  4. visible (not required): int

Ответ:

Пример ответа:

{
	data:	{result: "OK"},
	error: null
}


Отвязать устройство от месту (device-out-place)

Запрос:

Request URL: [site]/api/places/device-out-place/

Параметры запроса:

  1. token (required): string 64
  2. device_id (required): int
  3. place_id (required): int

Ответ:

Пример ответа:

{
	data:	{
		result: "OK"
	},
	error: null
}


Получить список связей устройство-место (device-place-list)

Запрос:

Request URL: [site]/api/places/device-place-list/

Параметры запроса:

  1. token (required): string 64

Ответ:

Пример ответа:

{
	"error":null,
	"data":{
		"0":{
			"device_id":1336,
			"device_name":"Camera test",
			"place_id":8,
			"place_name":"office"
			},
			...
		"10":{
			"device_id":1865,
			"device_name":"Meteo 9",
			"place_id":10,
			"place_name":"Box 1"
			}
		}
}

Активация подписки Ebus

Получение состояния подписки на Контроллере - “in/subscription/get”:

{
	"id": 1, // ID подписки (см. ниже)
	"seq_id": 0
}

Ответ:

{
	"seq_id": 0,
	"remain_time": 100, // оставшееся время в секундах, 4294967295 – неограниченно
	"success": 0/1
}


Установка подписки на Контроллере - “in/subscription/set”:

{
	"seq_id": 0,
	"id": 1, // ID подписки (см. ниже)
	"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
}

Ответ:

{
	"seq_id": 0,
	"success": 0/1
}

Идентификаторы подписок: SUBSCRIPTION_EBUS = 1

Статус Контроллера

Контроллер отправляет информацию о своем онлайн/оффлайн статусе в топик “out/status”.

Формат сообщения:

{
	"status": 1 // см. ниже
}

Поле “status” может принимать следующие значения:

• "0" – оффлайн

• "1" – онлайн

• "2" – онлайн, после включения питания

При получении сообщения со статусом "2", портал должен отправить Контроллеру информацию о пользовательских подписках, как это описано в разделе «Подписки».


Виджеты

Список виджетов пользователя (widget-list)

Запрос:

Request URL: [site]/api/device/widget-list/

Параметры запроса: (string) token

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

Ответ:

Пример ответа (data):

{
"widgets":[
	{
	"controller_id":111,
	"device_ids":[18,20,21,22],
	"device_id":"1824",
	"external_id":18,
	"device_type":3,
	"name":"Remote control",
	"widget_type":3,
	"state":1
	},
	{
	"controller_id":111,
	"device_ids":[18,20,21,22],
	"device_id":"1850",
	"external_id":20,
	"device_type":4,
	"name":"Sockets",
	"widget_type":4,
	"state":1
	}
   ],
"ctrl_widgets":[
   {
	"controller_id":111,
	"name":"66D4E809EF0A",
	"hostname":"Test",
	"armed":0
   }
]
}

Добавить виджет (widget-add-home)

Запрос:

Request URL: [site]/api/device/widget-add-home/

Параметры запроса:

  1. (string) token,
  2. (int) device_id,
  3. (int) controller_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"controller_id": 1862
}

Ответ:

Пример ответа (полный):

{
	"error":null,
	"data":{
	"result":"Ok"
	}
}

Удалить виджет пользователя (widget-remove-home)

Запрос:

Request URL: [site]/api/device/widget-remove-home/

Параметры запроса:

  1. (string) token,
  2. (int) device_id,
  3. (int) controller_id

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"device_id": 1862
}

Ответ:

Пример ответа (полный):

{
	"error":null,
	"data":{
		"result":"Ok"
	}
}


Неклассифицируемые методы

Список доступных стран (countries)

Запрос:

Request URL: [site]/api/profile/countries/

Параметры запроса:

  1. (string) token
  2. (string) lang // en , ua, ru

Пример запроса:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae",
	"lang" : "en"
}

Ответ:

Пример ответа (data):

[
	{
		"id":"1",
		"code":"AF",
		"name":"Afghanistan"
	},
	{
		"id":"2",
		"code":"AL",
		"name":"Albania"
	}
]


Ошибки

параметры ошибки:

пример:

{
	"errors":{
		"password": [
			"Incorrect username."
		]
	}
}