Ke-Облако: API




Что такое API?


Помимо WEB интерфейса, Ke-Облако предоставляет возможность использовать API (Application Programming Interface) позволяющего интегрировать управление модулями через Облако в ваш софт / программный продукт используя HTTPS GET запросы. Что же это такое? Автоматизация!

С помощью API запросов к Облаку можно узнать текущие показания датчиков или отправить команду на включение реле на модуль используя простую HTTPS ссылку, сохраненную в заметках вашего смартфона.

API Ke-Облака позволяет автоматизировать все рутинные операции контроля / управления группой модулей размещенных в разных физических / географических местах (за NAT, когда нет прямого доступа к модулям) и свести все данные в один программный продукт.

HTTPS запросы позволяют управлять модулями через API Ke-Облака из любого софта / программы / скрипта поддерживающего выполнение GET запросов вне зависимости от типа операционной системы (Linux, Windows, Android, iOS). Более того, для мобильных ОС (например, Apple iOS) можно избежать трудоемкой разработки приложения и использовать для этих целей кросс-платформенный HTML+JavaScript код в виде HTML страницы сохраненной в памяти устройства.





Обращение к API


API запрос к Ke-Облаку осуществляется по протоколу HTTPS используя метод GET передачи данных. Ответ сервера на запрос выдается в формате JSON. В самом запросе URI указывается уникальный ключ модуля, команда (тип действия) и дополнительные параметры.


Пример API запроса для получения информации о времени последнего подключения модуля к Облаку:


https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=last_con

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "last_con",
		"time":  "1677333213"
	},
	"data": {
		"t_last": "1677353261"
	}
}




Безопасность API


Взаимодействие с Облаком по API производится по протоколу HTTPS (защищенный, зашифрованный канал).


Дополнительно, предусмотрены различные опции и возможности защиты:

  • Можно запретить выполнение любых API запросов к модулю (значение по умолчанию при добавлении нового модуля в Облако)
  • Можно разрешить только условно безопасные запросы / команды чтения запретив выполнение запросов связанных с управлением ресурсами модуля
  • Так же предусмотрен дополнительный API пароль передаваемый в теле запроса. Пароль можно регулярно менять что бы повысить уровень безопасности использования сервиса API

В будущем, планируется добавить возможность разрешать / запрещать API запросы от определенных IP (или диапазонов IP адресов).





Формат запроса



Общий формат API запроса выглядит следующим образом:

https://kecloud.ru/api.php?key=KEY&act=ACTION[&psw=PASS][...]

API запрос адресован скрипту api.php сервера Ke-Облака. Параметры передаются в виде связки ИМЯ_ПАРАМЕТРА = ЗНАЧЕНИЕ_ПАРАМЕТРА разделеных между собой символом апперсанда (&). В квадратных скбках [] представлены опциональные параметры.


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

key - уникальный ключ модуля для работы с Облаком (генерируется самим Облаком при добавлении нового модуля). По данному ключу Облако определяет к какому модулю идет обращение в API запросе.
act - тип действия (API команда). Возможные варианты см. Команды API ниже
psw - опциональный параметр. Пароль доступа к API для конкретного модуля (устанавливается пользователем)
[...] - дополнительные опциональные параметры, специфичные для конкретных типов запросов


Команды API

mod_inf - Запрос общей информации о модуле (серийный номер, MAC адрес, время добавления в Облако и время последнего подключения).
last_con - запрос информации о времени последнего подключения модуля к Облаку.
list_data - Получить информацию о том на какие дни в течение года в хранилище Облака есть данные по датчикам модуля
data - Получить информацию о датчиках модуля (всех или конкретных) за указанный временной интервал (самые "свежие" данные, за последний день и т.д.)
cmd_run - Добавить в очередь на выполнение Ke-команды из ранее созданного элемента управления. Данные команды будут отправлены на модуль для выполнения (например, включение реле) при ближайшем подключении модуля к Облаку.
cmd_rem - Удалить ранее добавленный элемент управления из очереди на отправку на модуль.
cmd_sts - Получить статистику об элементе управления (время, когда был отправлен на модуль последний раз и т.д.)

Порядок следования параметров в API запросе не важен. Оба запроса ниже будут эквивалентны:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=last_con

https://kecloud.ru/api.php?act=last_con&key=vePRX4K1foD2kwd3m2GOBCLv03byddFM





Формат ответа



Общий формат API ответа в формате JSON выглядит следующим образом:

{
	"response": {
		"error": "ERR_CODE",
		"type":  "ACTION",
		"time":  "RESPONSE_TIME"
	},
	"data": {
		DATA
	}
}

Поля ответа:

error - статус выполнения API запроса. 0 - запрос выполнен успешно. В противном случае - запрос не выполнен, код ошибки равен ERR_CODE. См. Коды ошибок API
type - тип действия (API команда). Копия соответствующего поля из запроса.
time - UNIX метка времени в секундах (UTC) на момент выполнения API запроса сервером Ke-Облака
data - данные характерные для конкретного действия / команды (объект JSON). В ответе некоторых команд данное поле может отсутствовать.


Коды ошибок API

0 - API запрос выполнен успешно, ошибок нет
1 - запрос отклонен в виду очень частых (подозрительных) обращений с конкретного IP адреса. Следует повторить запрос чуть позже
2 - в запросе отсутствует обязательный параметр KEY (ключ модуля в Облаке)
4 - в запросе отсутствует обязательный параметр ACT (API команда)
5 - значение параметра ACT некорректное
6 - API запрещен для данного модуля
7 - API запросы на управление ресурсами модуля запрещены
10 - API команда на управление ресурсами модуля (элемент управления) но не предоставлен параметр AKA
11 - API команда на управление ресурсами модуля (элемент управления), значение параметра AKA некорректное
12 - не предоставлен параметр FROM
13 - некорректные значения параметров TO и/или FROM
14 - значение параметра FROM больше чем TO
15 - объем выборки данных по времени (параметры TO и FROM) слишком большой
16 - значение параметра UTC некорректное
17 - значение параметра SNS некорректное
18 - значение параметра SID некорректное
19 - в процессе чтения данных по датчикам для модуля возникла ошибка
20 - API запрос отклонен т.к. запросы для данного модуля осуществляются слишком часто. Следует попробовать выполнить запрос чуть позже
21 - неудачная авторизация (неверные либо отсутствующие параметры KEY и/или PSW)
22 - API запрос отклонен. IP адрес с которого поступают API запросы был добавлен в "черный" список в виду черезмерно частых обращений (похоже на DDOS) в течении определенного временного интервала. Пожалуйста, сообщите нам об этом если вы считаете что произошла ошибка и факта DDOS атаки не было.
255 - произошла неизвестная ошибка на стороне сервера Облака

Например, если выполнить API запрос следующего вида (очевидно, некорректный) будет выдан соответствующий код ошибки:

https://kecloud.ru/api.php?kex=vePRX4FM&act=last_cm
{
	"response": {
		"error": "2"
	}
}




Запрос mod_inf



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

https://kecloud.ru/api.php?key=KEY&act=mod_inf[&psw=PASS]

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

Предположим, что ключ модуля равен vePRX4K1foD2kwd3m2GOBCLv03byddFM, API разрешен, API пароль доступа не установлен.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=mod_inf

Если API пароль задан и он, например, равен mypassword:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=mod_inf&psw=mypassword

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "mod_inf",
		"time":  "1677331759"
	},
	"data": {
		"sn":     "K38J-KX8C-2T51-B2V1",
		"mac":    "02:04:B3:00:07:9B",
		"txt":    "Котельная",
		"model":  "5",
		"kkey":   "vePRX4K1foD2kwd3m2GOBCLv03byddFM",
		"t_add":  "1633957686",
		"t_last": "1633958721"
	}
}

Поля объекта data:

sn - серийный номер модуля
mac - MAC адрес модуля
txt - Текстовое описание модуля
model - Модель (тип / марка модуля, цифровой код)
kkey - ключ модуля для работы с Облаком
t_add - UNIX метка времени в секундах (UTC) когда модуль был добавлен в Облако
t_last - UNIX метка времени в секундах (UTC) когда модуль последний раз подключался к Облаку






Запрос last_con



Позволяет получить метку времени, когда модуль совершил последнее подключение к Облаку.

https://kecloud.ru/api.php?key=KEY&act=last_con[&psw=PASS]

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

Предположим, что ключ модуля равен vePRX4K1foD2kwd3m2GOBCLv03byddFM, API разрешен, API пароль доступа не установлен.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=last_con

Если API пароль задан и он, например, равен mypassword:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=last_con&psw=mypassword

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "last_con",
		"time":  "1677333213"
	},
	"data": {
		"t_last": "0"
	}
}

Поля объекта data:

t_last - UNIX время в секундах (UTC) когда модуль подключался к Облаку последний раз. Если равен 0 - модуль еще ни разу не выходил на связь с Облаком






Запрос list_data



Информация о том на какие дни каждого месяца года в хранилище Облака есть доступные данные по датчикам / ресурсам модуля.

https://kecloud.ru/api.php?key=KEY&act=list_data[&psw=PASS]

JSON ответ:

{
	"response": {
		"error": "ERR_CODE",
		"type":  "ACTION",		
		"time":  "RESPONSE_TIME"
	},
	"data": [
	{
		"y": "YEAR_1", 
		"ms": 
		[
		{"m": "1",  "val": "DAYS"},
		{"m": "2",  "val": "DAYS"},
			.....
		{"m": "12", "val": "DAYS"}
		]
	},
		....		
	{
		"y": "YEAR_N", 
		"ms": 
		[
		{"m": "1",  "val": "DAYS"},
		{"m": "2",  "val": "DAYS"},
			.....
		{"m": "12", "val": "DAYS"}
		]
	}
	]
}

Поля объекта response:

error - статус выполнения API запроса. 0 - запрос выполнен успешно. В противном случае - запрос не выполнен, код ошибки равен ERR_CODE. См. Коды ошибок API
type - тип действия (API команда). Копия соответствующего поля из запроса.
time - UNIX метка времени в секундах (UTC) на момент выполнения API запроса сервером Ke-Облака

Поля объекта data:

y - номер года в формате YYYY. Даты представлены в шкале времени UTC.
m - номер месяца в течение года, где x = [1-12]
val - строка с числом символов равной числу дней в месяце m года y. Первый символ в строке соответствует 1-ому дню, второй символ - второму дню и т.д. Возможны два символа - 0 и 1. 1 - в данный день в хранилище Облака есть хотя бы один набор данных от модуля. 0 - данных нет.



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

Предположим, что ключ модуля равен vePRX4K1foD2kwd3m2GOBCLv03byddFM, API разрешен, API пароль доступа не установлен.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=list_data

Если API пароль задан и он, например, равен mypassword:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=list_data&psw=mypassword

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "list_data",
		"time":  "1678360037"
	},
	"data": [{
		"y": "2023",
		"ms": [{
			"m": "1",
			"val": "0000000000000000000000000000000"
		}, {
			"m": "2",
			"val": "0000001111100001000000000011"
		}, {
			"m": "3",
			"val": "1000000000000000000000000000000"
		}, {
			"m": "4",
			"val": "000000000000000000000000000000"
		}, {
			"m": "5",
			"val": "0000000000000000000000000000000"
		}, {
			"m": "6",
			"val": "000000000000000000000000000000"
		}, {
			"m": "7",
			"val": "0000000000000000000000000000000"
		}, {
			"m": "8",
			"val": "0000000000000000000000000000000"
		}, {
			"m": "9",
			"val": "000000000000000000000000000000"
		}, {
			"m": "10",
			"val": "0000000000000000000000000000000"
		}, {
			"m": "11",
			"val": "000000000000000000000000000000"
		}, {
			"m": "12",
			"val": "0000000000000000000000000000000"
		}]
	}]
}

Данный ответ означает что для модуля за 2023 год в хранилище есть данные за Февраль (7-11, 16, 27-28 Февраля) и Март (1-ое Марта).







Запрос data



Информация о датчиках и аппаратных ресурсах модуля (всех или конкретных) за указанный временной интервал (например, за конкретный день). Интервал времени задается параметрами FROM и TO. Выбор типа аппаратного ресурса / датчика (все или конкретный, например, реле) определяется опциональным параметром SNS. Номер датчика определяется опциональным параметром SID.


https://kecloud.ru/api.php?key=KEY&act=data[&psw=PASS]
[&from=FROM][&to=TO][&sns=SNS][&sid=SID]

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

from -

Необязательный параметр. Метка времени (UTC) начиная с которой необходимо найти / выдать данные о датчиках модуля.

Метка времени может быть представлена в виде UNIX метки времени в секундах или в формате YYYYMMDDhhmmss (где YYYY - год, MM - месяц [1-12], DD - день месяца [1-31], hh - час [0-23], mm - минута [0-59], ss - секунда [0-59]).

Например, можно использовать как запись from=1677340807 так и from=20230225160007 (в обоих случаях, Облако начнет поиск показаний датчиков в хранилище начиная с 25-го февраля 2023, 16:00:07 UTC)

Если оба параметра FROM и TO (см. ниже) не заданы в запросе - будут выданы данные полученные во время последнего сеанса связи модуля с Облаком (самые "свежие" данные).

to -

необязательный параметр. Метка времени (UTC) на которой нужно закончить поиск / выдачу показаний датчиков модуля. Формат аналогичен таковому параметра FROM. Если параметр TO не указан - используется текущее время сервера (UTC).

Если оба параметра TO и FROM (см. выше) не заданы в запросе - будут выданы данные полученные во время последнего сеанса связи модуля с Облаком (самые "свежие" данные).

sns - опциональный параметр. Имя аппаратного ресурса / датчика модуля. Если параметр SNS не указан - по умолчанию выдаются все показания / все датчики модуля. Например, SNS=rele приведет к выдаче данных только по состоянию реле модуля. Возможные варианты см. Значения SNS ниже
sid - опциональный параметр. Номер датчика / аппаратного ресурса модуля. Например, если SNS=rele а SID=2 то в ответе будет предоставлено состояние только 2-го реле модуля (RELE_2). В случае если SNS=owi_temp (показания датчиков температуры DS18B20) в качестве значения SID можно указать ID датчика. Если параметр SID не указан - по умолчанию выдаются данные по всем датчикам класса SNS.


JSON ответ:

{
	"response": {
		"error": "ERR_CODE",
		"type":  "ACTION",
		"from":  "TIME_FROM",
		"to":    "TIME_TO",
		"sns":   "SNS",
		"sid":   "SID",
		"utc":   "1",
		"time":  "RESPONSE_TIME"
	},
	"data": [		
		{"t": "time1", "dd": "value1"},
		{"t": "time2", "dd": "value2"},
		....
		{"t": "timeN", "dd": "valueN"}
	]	
}

Поля объекта response:

error - статус выполнения API запроса. 0 - запрос выполнен успешно. В противном случае - запрос не выполнен, код ошибки равен ERR_CODE. См. Коды ошибок API
type - тип действия (API команда). Копия соответствующего поля из запроса.
from - UNIX метка времени (UTC) начиная с которой осуществляется поиск данных на сервере Облака. Копия соответствующего поля FROM из запроса. Если параметр FROM и TO в запросе отсутствовали - выводится значение "0".
to - UNIX метка времени (UTC) заканчивая на которой осуществляется поиск данных на сервере Облака. Копия соответствующего поля TO из запроса. Если параметр TO в запросе отсутствовал (а FROM присутствовал) - выводится текущее время сервера Облака на момент запроса. Если параметр TO и FROM в запросе отсутствовали - выводится значение "0".
sns - Копия соответствующего поля из запроса. Если параметр SNS в запросе отсутствовал, выводится значение "all" (значение по умолчанию).
sid - Копия соответствующего поля из запроса. Если параметр SID в запросе отсутствовал, выводится значение "-1".
utc - "1" - Метки времени в объекте data ответа представлены в UTC
time - UNIX метка времени в секундах (UTC) на момент выполнения API запроса сервером Ke-Облака

Поля объекта data:

t - UNIX метка времени (UTC) сервера которой соответствуют данные value. Другими словами, ранее модуль совершил сеанс связи с Облаком в момент времени t и передал в Облако данные value. Эти данные были сохранены в хранилище Облака и теперь возвращаются в составе ответа на API запрос как подходящие по критерию входных параметров (TO, FROM, SNS, SID).
dd - значение искомого параметра определяемого параметрами SNS и SID. Может быть JSON объектом, строкой (зависит от модели модуля, значений SNS и SID).



Значения параметра SNS:

Параметр SNS Для каких моделей Laurent применим * Описание
all 2, 112, 128, 5, 5G Значение по умолчанию (если параметр SNS явно не указан). Выдаются данные по всем датчикам и аппаратным ресурсам модуля.
sys_time 2, 112, 128, 5, 5G системное время модуля в секундах (время с момента старта модуля)
rtc 5, 5G дата и время RTC (часы реального времени)
rele 2, 112, 128, 5, 5G сводная строка состояния реле (0 - включено, 1- включено). Первый символ в строке - RELE_1, 2-ой символ - RELE_2 И т.д.
in 2, 5, 5G сводная строка состояния оптоизолированных входных линий IN (0 - нет сигнала на входе, 1- есть сигнал). Первый символ в строке - линия IN_1, 2-ой символ - IN_2 И т.д.
io_in 5, 5G сводная строка состояния двунаправленных линий общего назначения IO настроенных "на вход" (0 - нет сигнала на входе, 1- есть сигнал).
io_out 5, 5G сводная строка состояния двунаправленных линий общего назначения IO настроенных "на выход" (0 - на выходе линии нет сигнала, 1 - есть сигнал).
out 2, 5, 5G сводная строка состония силовых выходных линий OUT
adc 2, 5, 5G массив показаний каналов АЦП (цифровой код 0-1023 / напряжение в Вольтах)
owi_temp 2, 5, 5G массив показаний датчиков 1-Wire DS18B20 (номер шины 1-Wire / ID датчика DS18B20 / температура Сo)
pwm 2, 5, 5G массив уровней каналов ШИМ
dht_hum 5, 5G показания влажности цифрового датчика типа DHT-11/DHT-22
dht_tmp 5, 5G показания температуры цифрового датчика типа DHT-11/DHT-22
impl_in 2, 5, 5G массив значений счетчиков импульсов совмещенных с входными оптоизолированными линиями IN
impl_io 5, 5G массив значений счетчиков импульсов совмещенных с линиями общего назначения IO настроенными на "вход"
flm_in 5, 5G массив значений измерителя физических величин совмещенных со входными оптоизолированными линиями IN
flm_io 5, 5G массив значений измерителя физических величин совмещенных с линиями общего назначения IO настроенными на "вход"
acs 5, 5G массив показаний датчиков тока
ma420 5, 5G массив показаний датчиков "токовая петля" 4-20 мА
uvars 5, 5G массив значений пользовательских переменных

* - указывает на то какие модели модулей Laurent KernelChip поддерживают тот или иное значение параметра SNS. "2" - означает Laurent-2, "128" - Laurent-128, "5" - Laurent-5 и т.д.




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

Предположим, что ключ модуля равен vePRX4K1foD2kwd3m2GOBCLv03byddFM, API разрешен, API пароль доступа не установлен. Необходимо получить информацию о состоянии реле модуля с 2023-02-10 00:00:00 по 2023-02-10 00:10:00 UTC.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=data
&from=20230210000000&to=20230210001000&sns=rele

Если API пароль задан и он, например, равен mypassword:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=data
&from=20230210000000&to=20230210001000&sns=rele&psw=mypassword

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "data",
		"from":  "1675987200",
		"to":    "1675987260",
		"sns":   "rele",
		"sid":   "0",
		"utc":   "1",
		"time":  "1678435006"
	},
	"data": [{
		"t":  "1675987238",
		"dd": "1100"
	}, {
		"t":  "1675987200",
		"dd": "0000"
	}, {
		"t":  "1675987203",
		"dd": "0000"
	}, {
		"t":  "1675987206",
		"dd": "0000"
	}, {
		"t":  "1675987209",
		"dd": "0000"
	}, {
		"t":  "1675987212",
		"dd": "0000"
	}, {
		"t":  "1675987215",
		"dd": "0000"
	}, {
		"t":  "1675987218",
		"dd": "1111"
	}]
}

В данном примере, ответ содержит 10 элементов в объекте slots. На момент времени 1675987238 (UNIX метка времени) состояния реле модуля были: RELE_1 - ON, RELE_2 - ON, RELE_3 и RELE_4 - OFF. На метку времени 1675987218 все реле были включены.




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

В продолжении запроса #1 (см. выше), выведем данные только по RELE_3. Для этого в запрос добавим параметр SID.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=data
&from=20230210000000&to=20230210001000&sns=rele&sid=3

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "data",
		"from":  "1675987200",
		"to":    "1675987260",
		"sns":   "rele",
		"sid":   "3",
		"utc":   "1",
		"time":  "1678435142"
	},
	"data": [{
		"t":  "1675987238",
		"dd": "0"
	}, {
		"t":  "1675987200",
		"dd": "0"
	}, {
		"t":  "1675987203",
		"dd": "0"
	}, {
		"t":  "1675987206",
		"dd": "0"
	}, {
		"t":  "1675987209",
		"dd": "0"
	}, {
		"t":  "1675987212",
		"dd": "0"
	}, {
		"t":  "1675987215",
		"dd": "0"
	}, {
		"t":  "1675987218",
		"dd": "1"
	}]
}

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

Необходимо получить информацию о состоянии датчиков температуры DS18B20 модуля с 2023-02-10 14:29:00 по 2023-02-10 14:30:00 UTC.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=data
&from=20230210142900&to=20230210143000&sns=owi_temp

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "data",
		"from":  "1676039340",
		"to":    "1676039400",
		"sns":   "owi_temp",
		"sid":   "0",
		"utc":   "1",
		"time":  "1678435430"
	},
	"data": [{
		"t": "1676039374",
		"dd": [
			["A", "28543BBC050000AE", "50.63"],
			["A", "28FF641E815C037A", "36.13"],
			["A", "28FF641E814E64E1", "32.63"],
			["A", "28FF641E817E2257", "30.81"]
		]
	}]
}

За указанный интервал времени, в хранилище сервера Ke-Облака была найден один набор данных переданных модулем в момент времени 1676039374 UTC по шкале времени сервера (UNIX метка времени). В наборе присутствуют 4 датчика температуры DS18B20 на шине "A" с ID = 28543BBC050000AE, 28FF641E815C037A, 28FF641E814E64E1 и 28FF641E817E2257. Показания составляют соответственно: 50.63, 36.13, 32.63 и 30.81 Co.




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

Необходимо получить информацию о состоянии датчика температуры DS18B20 ID=28FF641E815C037A модуля с 2023-02-10 14:29:00 по 2023-02-10 14:30:00 UTC.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=data
&from=20230210142900&to=20230210143000&sns=owi_temp&sid=28FF641E815C037A

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "data",
		"from":  "1676039340",
		"to":    "1676039400",
		"sns":   "owi_temp",
		"sid":   "28FF641E815C037A",
		"utc":   "1",
		"time":  "1678435518"
	},
	"data": [{
		"t":  "1676039374",
		"dd": "36.13"
	}]
}



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

Необходимо получить информацию о состоянии всех датчиков и аппаратных ресурсов модуля с 2023-02-10 00:00:00 по 2023-02-10 00:10:00 UTC. В этом случае, параметр SNS можно опустить.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=data
&from=20230210000000&to=2023021001000

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "data",
		"from":  "1675987200",
		"to":    "1675987800",
		"sns":   "all",
		"sid":   "0",
		"utc":   "1",
		"time":  "1678435744"
	},
	"data": [{
		"t": "1675987200",
		"dd": {
			"sys_time": "1249911",
			"rtc": {
				"year": "2000",
				"mon":  "0",
				"day":  "0",
				"wday": "0",
				"hour": "91",
				"min":  "11",
				"sec":  "51"
			},
			"rele":   "0000",
			"in":     "000000",
			"io_in":  "xxxxxxxx",
			"io_out": "00000000",
			"out": "00000",
			"adc": [
				["0",    "0.00"],
				["829",  "2.03"],
				["964",  "2.36"],
				["1023", "2.50"],
				["1023", "2.50"]
			],
			"owi_temp": [],
			"pwm": ["0", "0", "0", "0"],
			"dht": [
				["1wb", "0", "0", "0.0", "0.0"]
			],
			"impl_in": ["0", "0", "0", "0", "0", "0"],
			"impl_io": ["0", "0", "0", "0", "0", "0", "0", "0"],
			"flm_in": [
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"]
			],
			"flm_io": [
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"],
				["0.00", "0.00"]
			],
			"acs": ["0.00", "0.00", "0.00", "0.00"],
			"ma420": [
				["", ""],
				["", ""],
				["", ""],
				["", ""]
			],
			"uvars": [
      "0.00", 
      "0.00", 
      "0.00", 
      "0.00", 
      "0.00", 
      "0.00", 
      "0.00", 
      "0.00", 
      "0.00", 
      "0.00"]
		}
	}]
}

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

Необходимо получить самую "свежую" информацию о состоянии всех датчиков и аппаратных ресурсов модуля (т.е. полученную при последнем сеансе связи модуля с Облаком). В этом случае, необходимо пропустить оба параметра TO и FROM.

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=data

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "data",
		"from":  "0",
		"to":    "0",
		"sns":   "all",
		"sid":   "0",
		"utc":   "1",
		"time":  "1678435878"
	},
	"data": [{
		"t": "0",
		"dd": {
		"sys_time": "139140",
		"rtc": {
			"year": "2023",
			"mon":  "3",
			"day":  "1",
			"wday": "3",
			"hour": "12",
			"min":  "38",
			"sec":  "16"
		},
		"rele":   "0000",
		"in":     "000000",
		"io_in":  "xx111111",
		"io_out": "00xxxxxx",
		"out": "00000",
		"adc": [
			["0",   "0.00"],
			["365",  "0.89"],
			["1023", "2.50"],
			["1023", "2.50"],
			["999",  "2.44"]
		],
		"owi_temp": [
			["A", "28543BBC050000AE", "43.44"],
			["A", "28FF641E815C037A", "31.37"],
			["A", "28FF641E817E2257", "24.06"],
			["A", "28FF641E814944AC", "27.75"],
			["A", "28FF641E816946D1", "20.56"],
			["A", "28FF641E8159C670", "21.50"],
			["A", "28FF641E8165411F", "28.06"],
			["A", "28FF641E8155D542", "21.87"],
			["A", "28FF641E816DAAA0", "22.12"],
			["A", "28FF641E815BBC67", "25.06"],
			["A", "28FF5DCE011703D6", "43.13"],
			["B", "28FF641E8178C934", "25.25"],
			["B", "28FF641E814913F4", "30.31"],
			["B", "28FF641E8177D173", "22.37"],
			["B", "28FF641E817F4B6A", "29.56"]
		],
		"pwm": ["0", "33", "47", "0"],
		"dht": [
			["1wb", "0", "0", "0.0", "0.0"]
		],
		"impl_in": ["0", "0", "0", "0", "0", "0"],
		"impl_io": ["0", "0", "0", "0", "0", "0", "0", "0"],
		"flm_in": [
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"]
		],
		"flm_io": [
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"],
			["0.00", "0.00"]
	],
		"acs": ["8.88", "13.93", "15.18", "0.00"],
		"ma420": [
			["", ""],
			["", ""],
			["", ""],
			["", ""]
		],
		"uvars": [
		"41.00", 
		"43.00", 
		"0.00", 
		"0.00", 
		"0.00", 
		"0.00", 
		"-31.19", 
		"44.00", 
		"40.00", 
		"42.00"]
		}
	}]
}




Запрос cmd_run



Добавляет в очередь на выполнение Ke-команды из указанного элемента управления. Команды будут переданы на модуль во время его ближайшего сеанса связи с Облаком. Идентификатор конкретного элемента управления передается через параметр AKA API запроса.

https://kecloud.ru/api.php?key=KEY&act=cmd_run&aka=AKA[&psw=PASS]

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

Предположим, что ключ модуля равен vePRX4K1foD2kwd3m2GOBCLv03byddFM, API разрешен, API пароль доступа не установлен. Идентификатор AKA требуемого элемента управления равен tn2RAkXDcErkR50c

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=cmd_run&aka=tn2RAkXDcErkR50c

Если API пароль задан и он, например, равен mypassword:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=cmd_run&aka=tn2RAkXDcErkR50c&psw=mypassword

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "cmd_run",
		"time":  "1677334180"
	}
}

Поле DATA в ответе отсутствует.





Запрос cmd_rem



Удаляет из очереди на выполнение ранее добавленный элемент управления.

https://kecloud.ru/api.php?key=KEY&act=cmd_rem&aka=AKA[&psw=PASS]

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

Предположим, что ключ модуля равен vePRX4K1foD2kwd3m2GOBCLv03byddFM, API разрешен, API пароль доступа не установлен. Идентификатор AKA требуемого элемента управления равен tn2RAkXDcErkR50c

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=cmd_rem&aka=tn2RAkXDcErkR50c

Если API пароль задан и он, например, равен mypassword:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=cmd_rem&aka=tn2RAkXDcErkR50c&psw=mypassword

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "cmd_rem",
		"time":  "1677334499"
	}
}

Поле DATA в ответе отсутствует.





Запрос cmd_sts



Запрос статистики по элементу управления.

https://kecloud.ru/api.php?key=KEY&act=cmd_sts&aka=AKA[&psw=PASS]

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

Предположим, что ключ модуля равен vePRX4K1foD2kwd3m2GOBCLv03byddFM, API разрешен, API пароль доступа не установлен. Идентификатор AKA требуемого элемента управления равен tn2RAkXDcErkR50c

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=cmd_sts&aka=tn2RAkXDcErkR50c

Если API пароль задан и он, например, равен mypassword:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=cmd_sts&aka=tn2RAkXDcErkR50c&psw=mypassword

JSON ответ:

{
	"response": {
		"error": "0",
		"type":  "cmd_sts",
		"time":  "1677334576"
	},
	"data": {
		"aka": "tn2RAkXDcErkR50c",
		"txt": "Hello",
		"add": "0",
		"snt": "0"
	}
}

Поля объекта data:

aka - AKA идентификатор элемента управления (копия из запроса)
txt - текстовое имя элемента управления
add - Если не равен 0 - UNIX время (UTC) когда данный элемент был добавлен в очередь на выполнение (запрос сейчас активен, Облако ждет подключения модуля что бы отправить ему Ke-команды из элемента управления). 0 - элемент управления сейчас не активен.
snt - Если не равен 0 - UNIX время (UTC) когда данный элемент был последний раз отправлен на модуль.






 

Что такое элемент управления?


Элемент управления Ke-Облака - это группа Ke-команд объединенных в объект. Можно отправить Ke-команды из данного объекта в модуль когда он будет совершать ближайший сеанс связи с Облаком. С помощью API можно элемент управления активировать (поставить в очередь на отправку) или деактивировать (удалить из очереди на отправку).

Создание новых элементов управления следует осуществлять через WEB интерфейс Облака на странице конкретного модуля:



В список команд следует добавить необходимые Ke-команды управления которые будут переданы в модуль при его подключении к Облаку. Можно так же задать удобное текстовое имя для элемента управления.



После сохранения нового элемента его можно найти в списке всех элементов для данного модуля:



Каждому элементу присваивается уникальный идентификатор - AKA который может использоваться в API запросе.





 

Где найти AKA элемента управления?


Идентификатор AKA необходимый для обращения к API создается Облаком автоматически при добавлении какдого нового элемента управления (набора Ke-команд). Значение AKA представлено в WEB интерфейсе Облака на странице конкретного модуля:







 

Как включить / выключить API?


По умолчанию, возможность работы с модулем через API выключена. Для того что бы включить ее, необходимо перейти на страницу настроек модуля в WEB интерфейсе Облака.


В списке опций API выбрать один из требуемых вариантов.




Возможные варианты:

НЕТ: не использовать - все API запросы к данному модулю не будут обрабатываться
ДА: только команды на чтение - разрешены только условно безопасные команды не связанные с управлением аппаратными ресурсами модуля (все кроме: cmd_run, cmd_rem)
ДА: все команды - разрешены к обработке все API команды

Дополнительно, можно включить аутентификацию с использованием API пароля.





 

Пароль API


При работе с API предусмотрен дополнительный пароль для каждого из модулей. Пароль передается в теле запроса. Т.о. помимо шифрования HTTPS, ключа модуля нужно так же авторизоваться с помощью пароля. Пароль можно регулярно менять что бы повысить уровень безопасности использования сервиса API. Для того что бы установить пароль, необходимо перейти на страницу настроек модуля в WEB интерфейсе Облака.



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


Если установить API пароль и выполнить API запрос без указания пароля, Облако вернет соответствующее сообщение об ошибке:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM&act=mod_inf

JSON ответ:

{
	"response": {
		"error": "21"
	}
}

Если пароль в настройках модуля определен (задан), в API запросе необходимо передавать параметр PSW:

https://kecloud.ru/api.php?key=vePRX4K1foD2kwd3m2GOBCLv03byddFM
&act=mod_inf&psw=MyPassword




© 2021-2024 KERNELCHIP / Ke-CLOUD