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

Материал из wiki.quadrobit.com
Перейти к навигации Перейти к поиску
 
Строка 807: Строка 807:
 
Адрес: [site] /api/
 
Адрес: [site] /api/
 
параметры запроса:  
 
параметры запроса:  
пример:  
+
пример:
 +
<pre> 
 
{
 
{
 
 
 
}
 
}
 +
</pre>
 +
 
response:
 
response:
 
параметры ответа:  
 
параметры ответа:  
 
пример:  
 
пример:  
 +
<pre>
 
{
 
{
  
 
}
 
}
 +
</pre>
  
 
=== (update) ===
 
=== (update) ===
Строка 823: Строка 828:
 
параметры запроса:  
 
параметры запроса:  
 
пример:  
 
пример:  
 +
<pre>
 
{
 
{
 
 
 
}
 
}
 +
</pre>
 +
 
response:
 
response:
 
параметры ответа:  
 
параметры ответа:  
 
пример:  
 
пример:  
 +
<pre>
 
{
 
{
  
 
}
 
}
 +
</pre>
  
 
=== (delete)===
 
=== (delete)===
Строка 838: Строка 848:
 
параметры запроса:  
 
параметры запроса:  
 
пример:  
 
пример:  
 +
<pre>
 
{
 
{
 
 
 
}
 
}
 +
</pre>
 +
 
response:
 
response:
 
параметры ответа:  
 
параметры ответа:  
 
пример:  
 
пример:  
 +
 +
<pre>
 
{
 
{
  
 
}
 
}
 +
</pre>
  
 
= Логи пользователя (logs) =
 
= Логи пользователя (logs) =
Строка 1647: Строка 1663:
  
  
== ?? методы управлениями places ==
+
== ???? методы управлениями places ==
 +
 
 +
Request URL: [site]/api/places/index (дубликат метода /api/profile/rooms)
  
/api/places/index -- Дубликат метода /api/profile/rooms =======================================================
 
Add Place:
 
  
/api/places/create
+
=== Создание места (create) ===
 +
 
 +
Request URL: [site]/api/places/create
  
 
Request params:
 
Request params:
 
token (required) : string(64);
 
token (required) : string(64);
 +
 
root (optional): int, default 1;
 
root (optional): int, default 1;
 +
 
lft (optional): int, default 1;
 
lft (optional): int, default 1;
 +
 
rgt (optional): int, default 4;
 
rgt (optional): int, default 4;
 +
 
lvl (optional): int, default 0;
 
lvl (optional): int, default 0;
 +
 
name (optional): string(255), default "Simple name";
 
name (optional): string(255), default "Simple name";
 +
 
icon (optional): string(255), default "";
 
icon (optional): string(255), default "";
 +
 
icon_type (optional): int, default 1;
 
icon_type (optional): int, default 1;
 +
 
color (optional): string(8), default "#ccc";
 
color (optional): string(8), default "#ccc";
 +
 
active (optional): int, default 1;
 
active (optional): int, default 1;
 +
 
selected (optional): int, default 0;
 
selected (optional): int, default 0;
 +
 
disabled (optional): int, default 0;
 
disabled (optional): int, default 0;
 +
 
readonly (optional): int, default 0;
 
readonly (optional): int, default 0;
 +
 
visible (optional): int, default 1;
 
visible (optional): int, default 1;
 +
 
collapsed (optional): int, default 0;
 
collapsed (optional): int, default 0;
 +
 
movable_u (optional): int, default 1;
 
movable_u (optional): int, default 1;
 +
 
movable_d (optional): int, default 1;
 
movable_d (optional): int, default 1;
 +
 
movable_l (optional): int, default 1;
 
movable_l (optional): int, default 1;
 +
 
movable_r (optional): int, default 1;
 
movable_r (optional): int, default 1;
 +
 
removable (optional): int, default 1;
 
removable (optional): int, default 1;
 +
 
removable_all (optional): int, default 0;
 
removable_all (optional): int, default 0;
 +
 
inverse_text (optional): string(6), default "black";
 
inverse_text (optional): string(6), default "black";
  
Строка 1681: Строка 1720:
 
<pre>
 
<pre>
 
{
 
{
data: {"message" => "OK"},
+
data: {"message" => "OK"},
error: null
+
error: null
 
}
 
}
 
</pre>  
 
</pre>  
  
  
=== Edit Place ===
+
=== Редактирование места (edit) ===
  
/api/places/edit
+
Request URL: [site]/api/places/edit
  
 
Request params:
 
Request params:
 +
 
token (required) : string(64);
 
token (required) : string(64);
 +
 
place_id (required) : int;
 
place_id (required) : int;
 +
 
root (optional): int, default 1;
 
root (optional): int, default 1;
 +
 
lft (optional): int, default 1;
 
lft (optional): int, default 1;
 +
 
rgt (optional): int, default 4;
 
rgt (optional): int, default 4;
 +
 
lvl (optional): int, default 0;
 
lvl (optional): int, default 0;
 +
 
name (optional): string(255), default "Simple name";
 
name (optional): string(255), default "Simple name";
 +
 
icon (optional): string(255), default "";
 
icon (optional): string(255), default "";
 +
 
icon_type (optional): int, default 1;
 
icon_type (optional): int, default 1;
 +
 
color (optional): string(8), default "#ccc";
 
color (optional): string(8), default "#ccc";
 +
 
active (optional): int, default 1;
 
active (optional): int, default 1;
 +
 
selected (optional): int, default 0;
 
selected (optional): int, default 0;
 +
 
disabled (optional): int, default 0;
 
disabled (optional): int, default 0;
 +
 
readonly (optional): int, default 0;
 
readonly (optional): int, default 0;
 +
 
visible (optional): int, default 1;
 
visible (optional): int, default 1;
 +
 
collapsed (optional): int, default 0;
 
collapsed (optional): int, default 0;
 +
 
movable_u (optional): int, default 1;
 
movable_u (optional): int, default 1;
 +
 
movable_d (optional): int, default 1;
 
movable_d (optional): int, default 1;
 +
 
movable_l (optional): int, default 1;
 
movable_l (optional): int, default 1;
 +
 
movable_r (optional): int, default 1;
 
movable_r (optional): int, default 1;
 +
 
removable (optional): int, default 1;
 
removable (optional): int, default 1;
 +
 
removable_all (optional): int, default 0;
 
removable_all (optional): int, default 0;
 +
 
inverse_text (optional): string(6), default "black";
 
inverse_text (optional): string(6), default "black";
  
 
Response:
 
Response:
 
<pre>
 
<pre>
{
+
{
data: {"message": "OK"},
+
data: {"message": "OK"},
error: null
+
error: null
} </pre>
+
}
 +
</pre>
  
  
===Delete Place ===
+
=== Удаление места (delete) ===
  
/api/places/delete
+
Request URL: [site]/api/places/delete
  
 
Request params:
 
Request params:
token (required) : string(64);
 
place_id (required) : int;
 
  
Response: {
+
token (required): string(64);
data: {"message": "OK"},
+
 
error: null
+
place_id (required): int;
 +
 
 +
Response:
 +
<pre>
 +
{
 +
data:{"message": "OK"},
 +
error: null
 
}  
 
}  
 +
</pre>
  
 +
== Получение иконок мест (get-icons) ==
  
== Get Icons ==
+
Request URL: [site]/api/places/get-icons
 
 
/api/places/get-icons
 
  
 
Response:  
 
Response:  
 
<pre>
 
<pre>
 
{
 
{
data: {"home": "Home", "industry": "Factory", ...},
+
data:{
error: null
+
"home":"Home",
 +
"industry": "Factory",
 +
...
 +
},
 +
error: null
 
}
 
}
 
</pre>
 
</pre>
Строка 1752: Строка 1823:
  
  
== Удаление уствройств ==
+
== Удаление устройства (remove-device) ==
 +
 
 +
Request URL: [site]/api/device/remove-device
  
REQUEST URL: /api/device/remove-device
 
 
PARAMS:
 
PARAMS:
  
 
token (required): string (64)
 
token (required): string (64)
 +
 
device_id (required): int
 
device_id (required): int
  
 
SUCCESS RESPONSE:  
 
SUCCESS RESPONSE:  
 +
 
<pre>
 
<pre>
 
{
 
{
data: {message: 'OK'},
+
data: {message: 'OK'},
error: null
+
error: null
 
}
 
}
 
 
</pre>
 
</pre>
  
  
 +
==  ?? Добавление кодов (??) ==
  
  
 +
=== ?? Получение списка кодов и подходящих устройств (get-codes) ===
  
==  Добавление кодов ==
+
Request URL: [site]/api/device/get-codes
 
 
  
=== Получение списка кодов и подходящих устройств: ===
 
 
REQUEST URL: /api/device/get-codes
 
 
PARAMS:
 
PARAMS:
 
token (required): string 64
 
token (required): string 64
 +
 
controller_id (required): int
 
controller_id (required): int
  
Строка 1894: Строка 1966:
  
  
=== Добавление кода к устройству: ===
+
=== Добавление кода к устройству (set-code-to-device) ===
 +
 
 +
Request URL: [site]/api/device/set-code-to-device
  
REQUEST URL: /api/device/set-code-to-device
 
 
PARAMS:
 
PARAMS:
 +
 
token (required): string 64
 
token (required): string 64
 +
 
code_id (required): int
 
code_id (required): int
 +
 
device_id (required): int
 
device_id (required): int
 +
 
name (optional): string 256
 
name (optional): string 256
  
Строка 1921: Строка 1998:
  
  
=== Удаление устройства: ===
+
=== Удаление устройства (remove-device) ===
REQUEST URL: /api/device/remove-device
+
 
 +
Request URL: [site]/api/device/remove-device
 
PARAMS:
 
PARAMS:
 +
 
token (required): string 64
 
token (required): string 64
 +
 
device_id (required): int
 
device_id (required): int
  
Строка 1937: Строка 2017:
 
</pre>
 
</pre>
  
=== Удаление кода: ===
+
=== Удаление кода (remove-code) ===
REQUEST URL: /api/device/remove-code
+
 
 +
Request URL: [site]/api/device/remove-code
 
PARAMS:
 
PARAMS:
 +
 
token (required): string 64
 
token (required): string 64
 +
 
code_id (required): int
 
code_id (required): int
  
Строка 1955: Строка 2038:
  
  
==  передача локального ип контролера  ==
+
==  передача локального IP Контроллера (get-ip) ==
 +
 
 +
Request URL: [site]/api/ctrl/get-ip
  
Request URI
+
Request Params:
/api/ctrl/get-ip
 
  
Request Params
 
 
token (required): string(64);
 
token (required): string(64);
 +
 
controller_id (required): int;
 
controller_id (required): int;
  
Строка 1967: Строка 2051:
  
 
<pre>
 
<pre>
{data:'192.168.0.15', error: null}
+
{
 +
data:'192.168.0.15',
 +
error: null
 +
}
 
</pre>
 
</pre>
  
  
 +
==  ?? Активация подписки Ebus -  ==
  
  
==  Ebus - активация подписки. ==
+
Получение состояния подписки на Контроллере - “in/subscription/get”:
  
 +
<pre>
 +
{
 +
"id": 1, // ID подписки (см. ниже)
 +
"seq_id": 0
 +
}
 +
</pre>
  
 +
Ответ:
  
Подписки
+
<pre>
Получение состояния подписки на контроллере - “in/subscription/get”:
 
 
 
 
{
 
{
"id": 1, // ID подписки (см. ниже)
+
"seq_id": 0,
"seq_id": 0
+
"remain_time": 100, // оставшееся время в секундах, 4294967295 – неограниченно
 +
"success": 0/1
 
}
 
}
 +
</pre>
  
Ответ: {
+
Установка подписки на Контроллере - “in/subscription/set”:
"seq_id": 0,
 
"remain_time": 100, // оставшееся время в секундах, 4294967295 – неограниченно
 
"success": 0/1
 
}
 
 
 
Установка подписки на контроллере - “in/subscription/set”:
 
  
 +
<pre>
 
{
 
{
"seq_id": 0,
+
"seq_id": 0,
"id": 1, // ID подписки (см. ниже)
+
"id": 1, // ID подписки (см. ниже)
"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
+
"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
 
}
 
}
 +
</pre>
  
Ответ: {
+
Ответ:
"seq_id": 0,
+
<pre>
"success": 0/1
+
{
 +
"seq_id": 0,
 +
"success": 0/1
 
}
 
}
 +
</pre>
  
 
Идентификаторы подписок:
 
Идентификаторы подписок:
 
SUBSCRIPTION_EBUS = 1
 
SUBSCRIPTION_EBUS = 1
  
Статус контроллера
+
Статус Контроллера
Контроллер отправляет информацию о своем онлайн/офлайн статусе в топик “out/status”. Формат: {
+
 
"status": 1 // см. ниже
+
Контроллер отправляет информацию о своем онлайн/оффлайн статусе в топик “out/status”.
 +
 
 +
Формат сообщения:
 +
<pre>
 +
{
 +
"status": 1 // см. ниже
 
}
 
}
 +
</pre>
 +
 
Поле “status” может принимать следующие значения:
 
Поле “status” может принимать следующие значения:
• 0 – офлайн
 
• 1 – онлайн
 
• 2 – онлайн, после включения питания
 
При получении сообщения со статусом 2, портал должен отправить контроллеру информацию о пользовательских подписках, как это описано в разделе «Подписки».
 
  
 +
• "0" – оффлайн
 +
 +
• "1" – онлайн
 +
 +
• "2" – онлайн, после включения питания
 +
 +
При получении сообщения со статусом "2", портал должен отправить Контроллеру информацию о пользовательских подписках, как это описано в разделе «Подписки».
  
  
==  Установка подписки на контроллере - “in/subscription/set”: ==
 
  
 +
== ?? Установка подписки на Контроллере - “in/subscription/set”: ==
 +
<pre>
 
{
 
{
"seq_id": 0,
+
"seq_id": 0,
"id": 1, // ID подписки (см. ниже)
+
"id": 1, // ID подписки (см. ниже)
"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
+
"remain_time": 100 // оставшееся время в секундах, 4294967295 - неограниченно
 
}
 
}
 +
<pre>
  
 +
==  Просмотр статуса подписки (get-subscribe-status) ==
  
==  Просмотр статуса подписки: ==
+
Request URL: [site]/api/ctrl/get-subscribe-status
  
/api/ctrl/get-subscribe-status
+
params:
  
params:
 
 
token (required): string(64)
 
token (required): string(64)
 +
 
controller_id (required): int
 
controller_id (required): int
  
response: {data:{id: 1, controller_id: 40, user_id: 424, remain_time: 100, request_time: 1355314332, response_time: 1355315332, success: 0}, error: ''}
+
response:
  
 +
{data:{id: 1, controller_id: 40, user_id: 424, remain_time: 100, request_time: 1355314332, response_time: 1355315332, success: 0}, error: ''}
  
==  Активация/продление/покупка подписки: ==
 
  
 +
==  Активация/продление/покупка подписки (set-subscribe) ==
  
/api/ctrl/set-subscribe
+
 
 +
Request URL: [site]/api/ctrl/set-subscribe
  
 
params:
 
params:
 +
 
token (required): string(64)
 
token (required): string(64)
 +
 
controller_id (required): int
 
controller_id (required): int
  
response: {data:{id: 1, controller_id: 40, user_id: 424, remain_time: 100, request_time: 1355314332, response_time: 1355315332, success: 0}, error: ''}
+
response:
 +
<pre>
 +
{
 +
data:{
 +
id: 1,
 +
controller_id: 40,
 +
user_id: 424,
 +
remain_time: 100,
 +
request_time: 1355314332,
 +
response_time: 1355315332,
 +
success: 0
 +
},
 +
error: ''
 +
}
 +
</pre>
  
  
 +
==  ? Метод получения списка телефонов (get-phones) ==
  
==  Метод получения списка телефонов: ==
+
Request URL: [site]/api/ctrl/get-phones
 
 
api/ctrl/get-phones
 
  
 
Params:
 
Params:
  
 
token (required): string, 64
 
token (required): string, 64
 +
 
controller_id (required): int
 
controller_id (required): int
type (optional): string, range ['recipient', 'authorized', 'all'], default 'all'
+
 
 +
type (optional): string,
 +
range ['recipient', 'authorized', 'all'], default 'all'
  
 
Response:
 
Response:
  
 
<pre>
 
<pre>
{'error': null, data: [{'id': 5, 'phone': '+380123456789'}, {'id': 6, 'phone': '+380123334455'}, {'id': 7, 'phone': '+380112223344'}]}
+
{
 +
'error': null,
 +
data: [
 +
{'id': 5, 'phone': '+380123456789'},
 +
{'id': 6, 'phone': '+380123334455'},
 +
{'id': 7, 'phone': '+380112223344'}
 +
]
 +
}
 
</pre>
 
</pre>
  
  
 +
==  Редактирование телефона (edit-phone) ==
  
 +
Request URL: [site]/api/ctrl/edit-phone
  
==  Редактирование телефона: ==
+
Params:
  
api/ctrl/edit-phone
+
token (required): string, 64
  
Params:
 
token (required): string, 64
 
 
phone_id (required): int
 
phone_id (required): int
 +
 
is_recipient (optional): int
 
is_recipient (optional): int
 +
 
is_authorized (optional): int
 
is_authorized (optional): int
 +
 
phone (optional): string
 
phone (optional): string
  
 
Response:  
 
Response:  
 
<pre>
 
<pre>
{"error":null,"data":{"id":2,"controller_id":81,"phone":"+380503334455","is_recipient":"1","is_authorized":0}}
+
{
 +
"error":null,
 +
"data":{
 +
"id":2,
 +
"controller_id":81,
 +
"phone":"+380503334455",
 +
"is_recipient":"1",
 +
"is_authorized":0
 +
}
 +
}
 
</pre>
 
</pre>
  
  
 +
==  Удаление телефона (delete-phone) ==
  
==  Удаление телефона: ==
+
Request URL: [site]/api/ctrl/delete-phone
  
api/ctrl/delete-phone
+
Params:
  
Params:
 
 
token (required): string, 64
 
token (required): string, 64
 +
 
phone_id (required): int
 
phone_id (required): int
  
 
Response:  
 
Response:  
 
<pre>
 
<pre>
{"error":null,"data":{"response":"OK"}}
+
{
 +
"error":null,
 +
"data":{"response":"OK"}
 +
}
 
</pre>
 
</pre>
  
 +
== Добавление телефона (add-phone) ==
  
 +
Request URL: [site]/api/ctrl/add-phone
  
 +
Params:
  
 +
token (required): string, 64
  
== Добавление телефона: ==
+
controller_id (required): int
  
api/ctrl/add-phone
+
phone (required): string
  
Params:
 
token (required): string, 64
 
controller_id (required): int
 
phone (required): string
 
 
is_recipient (optional): int
 
is_recipient (optional): int
 +
 
is_authorized (optional): int
 
is_authorized (optional): int
  
Строка 2120: Строка 2271:
  
 
<pre>
 
<pre>
{"error":null,"data":{"id":2,"controller_id":81,"phone":"+380503334455","is_recipient":"1","is_authorized":0}}
+
{
 +
"error":null,
 +
"data":{
 +
"id":2,
 +
"controller_id":81,
 +
"phone":"+380503334455",
 +
"is_recipient":"1",
 +
"is_authorized":0
 +
}
 +
}
 +
</pre>
 
</pre>
 
</pre>

Версия 13:53, 27 марта 2019

h1. API v01

API ( json )

URL https://quadrobit.com/

Содержание

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

request: Адрес: [site] /api/login параметры запроса: (string) email , (string) password пример:

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

response: параметры ответа: (object) пример:

{
	"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: Адрес: [site] /api/registration параметры запроса: (string) email , (string) password пример:

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

response: параметры ответа: (object) пример:

{
    	"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: Адрес: [site] /api/profile/ параметры запроса: (string) token пример:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

response: параметры ответа: (object) пример:

{
	"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",
}

Список помещений Пользователя (rooms)

request: Адрес: [site] /api/profile/rooms/ параметры запроса: (string) token пример:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

response: параметры ответа: (object) пример:

{
"0":{
	"id":19,  //ID дирректории
	"root_id":0,  //ID корневой дирректории, 0 - верхний уровень
	"user_id":10,
	"lvl":0, // уровень вложенности текущей дирректории
	"name":"Дом",
	"icon_id":21,
	"icon_type":1,
	"color":"#674ea7", //цвет фона
	"position":0,	//позиция сортировки
	"readonly":0,	// если 1 - только для чтения, нельзя изменять
	"visible":1	//активно/неактивно
},
"1":{
	"id":22,
	"root_id":19,
	...
	}
}


Информация о помещении (room-info)

request: Адрес: [site] /api/profile/room-info/ параметры запроса: (string) token, (int) room_id пример:

{
	"room_id":22,
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

response: параметры ответа: (object) пример:

{
	"id":19,  //ID локации
	"root_id":0,  //ID корневой локации, 0 - верхний уровень
	"user_id":10,
	"lvl":0, // уровень вложенности текущей локации
	"name":"Дом",
	"icon_id":21,
	"icon_type":1,
	"color":"#674ea7", //цвет фона
	"position":0,	//позиция сортировки
	"readonly":0,	// если 1 - только для чтения, нельзя изменять
	"visible":1	//активно/неактивно
	"devices_ids {  // IDs устройств прикрепленных к комнате
		"0":101,
		"1":103
		} 
}


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

request: Адрес: [site] /api/ctrl/list/ параметры запроса: (string) token пример:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

response: параметры ответа: (array) пример:

{
"0":{
	"id":"11",
	"name":"AS_A61301A020E4",
	"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 действий на контроллере
	"timezone":"3",
	"token":"747D3844ABD35B08F27D18D15D7178B7AF99A754D805633928D4362D19B4AEC2",
	"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"
}] 


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

request: Адрес: [site] /api/ctrl/info/ параметры запроса: (int) controller_id , (string) token пример:

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

response: параметры ответа: (object) пример:

{
	"id":"6",
	"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"
}

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

request: Адрес: [site] /api/ctrl/armed/ параметры запроса: (int) controller_id , (string) token пример:

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

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

{
	"result": "Ok"
}


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

request: Адрес: [site] /api/ctrl/add параметры запроса: (string) token пример:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

response: параметры ответа: пример:

{
	"PIN":"7gDH"
}

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

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

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

request: Адрес: [site] /api/ctrl/update/ параметры запроса: (int) controller_id , (string) token пример:

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

response: параметры ответа: пример:

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

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

request: Адрес: [site] /api/ctrl/update-devices/ параметры запроса:

(int) controller_id , (string) token пример:

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

response: параметры ответа: пример:

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

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


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

request: Адрес: [site] /api/ctrl/del параметры запроса: пример:

{
	
}

response: параметры ответа: пример:

{

}


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

request: Адрес: [site] /api/device/list/ параметры запроса: (int) controller_id , (string) token пример:

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

response: параметры ответа: пример:

{
"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: Адрес: [site] /api/device/info/ параметры запроса: (int) controller_id , (int) device_id , (string) token пример:

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

response: параметры ответа: пример:

{
	"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"
}

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

request: Адрес: [site] /api/device/event/ параметры запроса: (string) controller_name , (int) device_external_id, (int) cod_external_id, (string) token, (int) device_type пример:

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

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

{
	"result": "Ok"
}


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

request: Адрес: [site] /api/device/update/ параметры запроса: (int) device_id , (string) name, (int) active, (string) token, пример:

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

response: параметры ответа: пример:

{
	"resuls" : "Ok"
}

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

request: Адрес: [site] /api/device/delete/ параметры запроса: (int) device_id, (string) token пример:

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

response: параметры ответа: пример:

{
	"resuls" : "Ok"

}


Код:

Получение информации об устройстве(info)

request: Адрес: [site] /api/property/info/ параметры запроса: (int) controller_id, (int) device_id, (int) code_id, (string) token пример:

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

}

response: параметры ответа: пример:

{
	"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"
}


(create) ??

request: Адрес: [site] /api/ параметры запроса: пример:

{
	
}

response: параметры ответа: пример:

{

}

(update) ??

request:

Адрес: [site] /api/property/update/ параметры запроса: (int) device_id , (int) code_id, (string)name, (int) active, (string) token пример:

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

response: параметры ответа: пример:

{
	"resuls" : "Ok"
}

(delete) ??

request: Адрес: [site] /api/ параметры запроса: пример: {

} response: параметры ответа: пример: {

}


Список действий (list)

h3. (list) request: Адрес: [site] /api/scheduler/list/ параметры запроса: (string) token пример:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

response: параметры ответа: пример:

{
"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
	...
	} 
}


Обновление действий (update)

Запрос осуществляется в 2 этапа: на первом этапе происходит при запросе на обновление Контроллера (см. "Обновление Контроллера"); на втором этапе обновляется информация о каждом действии. request: Адрес: [site] /api/scheduler/update/ параметры запроса: (int) controller_id, (string) token пример:

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

response: параметры ответа: пример:

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

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


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

request: Адрес: [site] /api/scheduler/info/ параметры запроса: (int) scheduler_id, (string) token пример:

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

response: параметры ответа: пример:

{
	"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
}


(create)

request: Адрес: [site] /api/ параметры запроса: пример:

  
{
	
}

response: параметры ответа: пример:

 
{

}

(update)

request: Адрес: [site] /api/ параметры запроса: пример:

 
{
	
}

response: параметры ответа: пример:

{

}

(delete)

request: Адрес: [site] /api/login параметры запроса: пример:

{
	
}

response: параметры ответа: пример:

{

}

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

request: Адрес: [site] /api/profile/logs/ параметры запроса: (string) token пример:

{
	"token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae"
}

response: параметры ответа: (object) пример: {

} ________________________________________


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

request: Адрес: [site] /api/device/meteo-last/ параметры запроса: (string) token, (int) device_id пример:

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

response: параметры ответа: (object) пример:

{
	"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: Адрес: [site] /api/device/meteo-period/ параметры запроса: (string) token, (int) device_id, (int) period пример:

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

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

[
	{
	"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: Адрес: [site] /api/device/electro-last/ параметры запроса: (string) token, (int) device_id пример:

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

response: параметры ответа: (object) пример:

{
	"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: Адрес: [site] /api/device/electro-period/ параметры запроса: (string) token, (int) device_id, (int) period пример:

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

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

[
	{
	"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",
	...
	},
]

?? Остальные устройства данные (last)

request: Адрес: [site] /api/device/other-last/ параметры запроса: (string) token, , (int) device_id пример:

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

response: параметры ответа: (object) пример:

{
	"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"
}


?? (period)

request: Адрес: [site] /api/device/other-period/ параметры запроса: (string) token, (int) device_id, (int) period пример: { "token":"_zcX0_QceAqgP_seIvjG32EC3HMO34ae", "device_id": 118, "period": 1 // количество дней } response: параметры ответа: (array to objects) пример:

{
	"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",
	...
}

________________________________________

Ошибки:

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

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

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

Адрес: [site] /api/places/get-icons

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

{
	"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"}
}


= Получение списка созданных мест (index) =

Адрес: [site] /api/places/index

Request params:
token (required): string, 64

Response: 
<pre>
{
	"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)

Адрес: [site] /api/places/create

Request params:

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'


Response:

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


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

Адрес: [site] /api/places/edit

Request params:

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'


Response:

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

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

Адрес: [site] /api/places/delete

Request params:

token (required): string, 64

place_id (required): int

Response:

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

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

request: Адрес: [site] /api/ ctrl/update-status/

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

пример:

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

response: параметры ответа: пример:

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

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

request: Адрес: [site] /api/ ctrl/get-status/ параметры запроса: (string) token, (int) controller_id пример:

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

response: параметры ответа: пример:

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

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

Добавление устройств через wizard

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

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

Params: 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 //Название кода садящейся батареи

RESPONSE:

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

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


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

URL /api/wizard/create-flood-sensor

Params:

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 //Название кода садящейся батареи

RESPONSE:

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

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


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

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

Params: 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:

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

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


Сирена (create-siren)

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

Params:

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:

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

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


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

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

Params:

controller_id (required): int token (required): string, 64

RESPONSE:

{
	"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)

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

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

RESPONSE:

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


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

Порядок добавления крана: 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:

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


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

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

Params:

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

Response:

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

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

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

Params:

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 //Название кода закрытия

RESPONSE:

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

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

порядок добаления розетки следующий: 1) Сгенерировать коды 2) Зажать на розетке кнопку, пока она не начнет мигать 3) Отправить один код 4) Зажать на розетке кнопку, пока она не начнет мигать 5) Отправить второй код из сгенерированых 6) Отправить запрос на создание розетки


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

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

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

Response:

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


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

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

Params:

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

Response

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


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

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:

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


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

Request URL: [site]/api/device/update-code-name

Request Params:

token (required): string(64) code_id (required): int name (optional): string(255)

SUCCESS RESPONSE:

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


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

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

Request Params: token (required): string(64) device_subtype_id (optional): int, default 0.


???? методы управлениями places

Request URL: [site]/api/places/index (дубликат метода /api/profile/rooms)


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

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

Request params: token (required) : string(64);

root (optional): int, default 1;

lft (optional): int, default 1;

rgt (optional): int, default 4;

lvl (optional): int, default 0;

name (optional): string(255), default "Simple name";

icon (optional): string(255), default "";

icon_type (optional): int, default 1;

color (optional): string(8), default "#ccc";

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(6), default "black";

Response:

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


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

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

Request params:

token (required) : string(64);

place_id (required) : int;

root (optional): int, default 1;

lft (optional): int, default 1;

rgt (optional): int, default 4;

lvl (optional): int, default 0;

name (optional): string(255), default "Simple name";

icon (optional): string(255), default "";

icon_type (optional): int, default 1;

color (optional): string(8), default "#ccc";

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(6), default "black";

Response:

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


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

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

Request params:

token (required): string(64);

place_id (required): int;

Response:

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

Получение иконок мест (get-icons)

Request URL: [site]/api/places/get-icons

Response:

{
	data:{
		"home":"Home",
		"industry": "Factory",
		...
		},
	error: null
}


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

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

PARAMS:

token (required): string (64)

device_id (required): int

SUCCESS RESPONSE:

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


?? Добавление кодов (??)

?? Получение списка кодов и подходящих устройств (get-codes)

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

PARAMS: token (required): string 64

controller_id (required): int

SUCCESS RESPONSE:

{
	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

PARAMS:

token (required): string 64

code_id (required): int

device_id (required): int

name (optional): string 256

SUCCESS RESPONSE:

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


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

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

token (required): string 64

device_id (required): int

SUCCESS RESPONSE:

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

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

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

token (required): string 64

code_id (required): int

SUCCESS RESPONSE:

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


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

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

Request Params:

token (required): string(64);

controller_id (required): int;

SUCCESS RESPONSE:

{
	data:'192.168.0.15',
	error: null
}


?? Активация подписки 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", портал должен отправить Контроллеру информацию о пользовательских подписках, как это описано в разделе «Подписки».


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

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

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

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

params:

token (required): string(64)

controller_id (required): int

response:

{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

params:

token (required): string(64)

controller_id (required): int

response:
<pre>
{
	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

Params:

token (required): string, 64

controller_id (required): int

type (optional): string, range ['recipient', 'authorized', 'all'], default 'all'

Response:

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


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

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

Params:

token (required): string, 64

phone_id (required): int

is_recipient (optional): int

is_authorized (optional): int

phone (optional): string

Response:

{
	"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

Params:

token (required): string, 64

phone_id (required): int

Response:

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

Добавление телефона (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:

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