NAV Navbar
Logo
curl python php

Введение

API системы ZONT позволяет получать информацию о состоянии устройств марки ZONT и Mega SX и управлять ими из собственного приложения или сайта. Через API доступны все функции системы, и всё, что вы можете сделать через веб-интерфейс, также доступно и через API. В то же время, эта документация пока не является полной, поэтому если вам потребуются какие-то функции, которые здесь не описаны, то напишите нам, и мы дополним документацию.

Примеры

# $ pip install requests

import requests
<?php
require_once 'Requests.php';
Requests::register_autoloader();

В правой части страницы вы найдёте готовые работающие примеры кода на разных языках, которые делают соответствующие запросы к API. Язык примеров можно переключить с помощью кнопок справа вверху.

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

POST https://zont-online.ru/api/set_io_port HTTP/1.1
Host: zont-online.ru
Content-Type: application/json
Content-Length: 88
Authorization: Basic ZWxvbjptYXJzNGV2ZXI=
X-ZONT-Client: elon@tesla.com

{
  "device_id": 1209,
  "portname": "siren",
  "type": "bool",
  "value": true
}

Обращения к API производятся с помощью POST-запросов на адрес https://zont-online.ru/api/method, где method – названия метода API. Некоторые методы вызываются с помощью метода GET, это оговаривается отдельно в описании этих методов.

В каждом запросе должен быть указан заголовок X-ZONT-Client. Укажите в этом заголовке ваш e-mail или иной контакт, по которому мы сможем связаться с вами в случае планируемых изменений в API.

Параметры запроса передаются одним из способов:

Аутентификация

curl 'https://zont-online.ru/api/some_method' \
  -u 'login:password'                         \
  -H 'X-ZONT-Client: your@email'
import requests

requests.post('https://zont-online.ru/api/method', auth=('login', 'password'),
              headers={'X-ZONT-Client': 'your@email'}).json()
<?php
require_once 'Requests.php';
Requests::register_autoloader();

$headers = array('X-ZONT-Client' => 'your@email', 'Content-Type' => 'application/json');
$options = array('auth' => array('login', 'password'));
$request = Requests::post($url, $headers, json_encode($data), $options);

Не забудьте заменить login, password и your@email на ваш логин, пароль и адрес электронной почты

Большинство запросов к API требуют аутентификации.

При обращении к API укажите логин и пароль пользователя с помощью HTTP Basic Authentication. Это можно сделать либо встроенными средствами вашей http-библиотеки, либо указав заголовок:

Authorization: Basic XXX

где XXX – это строка логин:пароль, закодированная в Base64.

Результат запроса

{
  "ok": false,
  "error": "no_such_device",
  "error_ui": "Устройство не найдено"
}

Если не оговорено иное, сервер отвечает на запрос результатом в формате JSON. В возвращаемом объекте всегда присутствует поле "ok", которое равно true в случае успеха или false в случае ошибки. Если поле "ok" равно false, то в ответе также будут присутствовать поля "error" с кодом ошибки и "error_ui" с её описанием на русском языке. "error_ui" может содержать либо строку, либо массив строк если возникло несколько ошибок.

Устройства

devices – Запрос устройств

curl 'https://zont-online.ru/api/devices' \
  -u 'demo:demo'                          \
  -H 'X-ZONT-Client: your@email'          \
  -H 'Content-Type: application/json'     \
  -d '{"load_io": true}'
import requests

url = 'https://zont-online.ru/api/devices'
data = {'load_io': True}

headers = {'X-ZONT-Client': 'your@email'}
result = requests.post(url, json=data, auth=('demo', 'demo'), headers=headers).json()
<?php
require_once 'Requests.php';
Requests::register_autoloader();

$url = 'https://zont-online.ru/api/devices';
$data = array('load_io' => true);

$headers = array('X-ZONT-Client' => 'your@email', 'Content-Type' => 'application/json');
$options = array('auth' => array('demo', 'demo'));
$request = Requests::post($url, $headers, json_encode($data), $options);
$response = json_decode($request->body, true);

Результат:

{
  "ok": true,
  "devices": [
    {
      "device_id": 1209
      ...
    }
  ]
}

POST https://zont-online.ru/api/devices

Возвращает список всех устройств пользователя, а также их параметров.

Параметры

Имя Тип Описание
load_io bool возвращать ли в поле io Состояния устройства (см. Параметры устройств)

Результат

В поле devices возвращается массив объектов, описывающих устройства. Порядок элементво в массиве соответствует порядку устройств в личном кабинете пользователя.

Каждый объект, описывающий устройство, может иметь поля, описанные в разделе Параметры устройств.

add_device – Добавить устройство

curl 'https://zont-online.ru/api/add_device'                                            \
  -u 'demo:demo'                                                                        \
  -H 'X-ZONT-Client: your@email'                                                        \
  -H 'Content-Type: application/json'                                                   \
  -d '{"devtype": "ZTC-700, "name": "my car", "serial": "012345678915", "timezone": 3}'
import requests

url = 'https://zont-online.ru/api/add_device'
data = {
    'devtype': 'ZTC-700',
    'name': 'my car',
    'serial': '012345678915',
    'timezone': 3
}

headers = {'X-ZONT-Client': 'your@email'}
result = requests.post(url, json=data, auth=('demo', 'demo'), headers=headers).json()
<?php
require_once 'Requests.php';
Requests::register_autoloader();

$url = 'https://zont-online.ru/api/add_device';
$data = array(
    'devtype' => "ZTC-700",
    'name' => "my car",
    'serial' => "012345678915",
    'timezone' => 3
);

$headers = array('X-ZONT-Client' => 'your@email', 'Content-Type' => 'application/json');
$options = array('auth' => array('demo', 'demo'));
$request = Requests::post($url, $headers, json_encode($data), $options);
$response = json_decode($request->body, true);

Результат:

{
  "ok": true,
  "device_id": 1209
}

POST https://zont-online.ru/api/add_device

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

Параметры

Имя Тип Обязательный Описание
devtype string да Тип устройства. Один из идентификаторов, описанных в разделе Типы устройств.
name string да Название устройства для пользователя.
serial string да Серийный номер
timezone int да Часовой пояс
tel_password string нет Телефонный пароль (для GSM-устройств). Телефонный пароль запрашивается устройством при дозвоне на него с номера, не являющегося доверенным. Строка должна состоять только из цифр.
notes string нет Произвольные заметки об устройстве (например, номер его SIM-карты, чтобы не забыть)
wifi_credentials array нет Параметры Wi-Fi-сети (только для устройств с Wi-Fi). Массив объектов вида {"ssid": "имя_сети", "password": "пароль_сети"}. ZONT H-2 поддерживает не более одной сети.
boiler_vendor string нет Производитель котла (для отопительных устройств)
boiler_model string нет Модель котла (для отопительных устройств)

Результат

Возвращается объект с полем device_id равным ID нового устройства.

delete_device – Удалить устройство

curl 'https://zont-online.ru/api/delete_device' \
  -u 'demo:demo'                                \
  -H 'X-ZONT-Client: your@email'                \
  -H 'Content-Type: application/json'           \
  -d '{"device_id": 1209, "clear_data": true}'
import requests

url = 'https://zont-online.ru/api/delete_device'
data = {
    'device_id': 1209,
    'clear_data': True
}

headers = {'X-ZONT-Client': 'your@email'}
result = requests.post(url, json=data, auth=('demo', 'demo'), headers=headers).json()
<?php
require_once 'Requests.php';
Requests::register_autoloader();

$url = 'https://zont-online.ru/api/delete_device';
$data = array(
    'device_id' => 1209,
    'clear_data' => true
);

$headers = array('X-ZONT-Client' => 'your@email', 'Content-Type' => 'application/json');
$options = array('auth' => array('demo', 'demo'));
$request = Requests::post($url, $headers, json_encode($data), $options);
$response = json_decode($request->body, true);

Результат:

{
  "ok": true
}

POST https://zont-online.ru/api/delete_device

Удалить устройство из аккаунта пользователя.

Параметры

Имя Тип Обязательный Описание
device_id int да ID устройства
transfer bool нет Передать устройство другому пользователю вместо удаления
transfer_username string нет Логин пользователя, которому передать устройство. Применяется только если параметр transfer равен true.
clear_access bool нет Отозвать доступ других пользователей к этому устройству. Если поле transfer не равно true, то доступ других пользователей к устройству отзывается независимо от значения этого параметра.
clear_data bool нет Удалить все накопленные данные по этому устройству

Результат

{"ok": true}

update_device – Изменение настроек устройства

curl 'https://zont-online.ru/api/update_device'                      \
  -u 'demo:demo'                                                     \
  -H 'X-ZONT-Client: your@email'                                     \
  -H 'Content-Type: application/json'                                \
  -d '{"device_id": 1580, "thermostat_mode_temps": {"comfort": 21}}'
import requests

url = 'https://zont-online.ru/api/update_device'
data = {
    'device_id': 1580,
    'thermostat_mode_temps': {
        'comfort': 21
    }
}

headers = {'X-ZONT-Client': 'your@email'}
result = requests.post(url, json=data, auth=('demo', 'demo'), headers=headers).json()
<?php
require_once 'Requests.php';
Requests::register_autoloader();

$url = 'https://zont-online.ru/api/update_device';
$data = array(
    'device_id' => 1580,
    'thermostat_mode_temps' => array(
        'comfort' => 21
    )
);

$headers = array('X-ZONT-Client' => 'your@email', 'Content-Type' => 'application/json');
$options = array('auth' => array('demo', 'demo'));
$request = Requests::post($url, $headers, json_encode($data), $options);
$response = json_decode($request->body, true);

Результат:

{
  "ok": true,
  "thermostat_mode_temps": {
    "comfort": 21,  // только это поле было изменено
    "econom": 16,
    "idle": 5,
    "full_off": false
  }
}

POST https://zont-online.ru/api/update_device

Изменяет параметры устройства. Если устройство на связи, обновлённые параметры будут сразу же отправлены ему. Если связи с устройством в данные момент нет, то настройки будут отправлены при следующем выходе на связь.

Параметры

Имя Тип Описание
device_id int ID устройства

Все остальные параметры в запросе обозначают настройки устройства, которым нужно установить соответствующие значения. Возможные имена, значения и форматы настроек описаны в разделе Параметры устройств.

В случае составного параметра, имеющего внутренние поля, в запросе могут быть указаны только некоторые поля этого параметра. Остальные поля сохранят своё прежнее значение. Так, в примере справа была изменена только целевая температура режима Комфорт, а температуры других режимов остались прежними.

Результат

В возвращаемом объекте указываются все параметры, которые были изменены по запросу, и их новые значения.

set_io_port – Управление состоянием устройства

curl 'https://zont-online.ru/api/set_io_port'         \
  -u 'demo:demo'                                      \
  -H 'X-ZONT-Client: your@email'                      \
  -H 'Content-Type: application/json'                 \
  -d '{"device_id": 1209, "portname": "guard-state",
       "type": "string", "value": "enabled"}'
import requests

url = 'https://zont-online.ru/api/set_io_port'
data = {
    'device_id': 1209,
    'portname': 'guard-state',
    'type': 'string',
    'value': 'enabled'
}

headers = {'X-ZONT-Client': 'your@email'}
result = requests.post(url, json=data, auth=('demo', 'demo'), headers=headers).json()
<?php
require_once 'Requests.php';
Requests::register_autoloader();

$url = 'https://zont-online.ru/api/set_io_port';
$data = array(
    'device_id' => 1209,
    'portname' => 'guard-state',
    'type' => 'string',
    'value' => 'enabled'
);

$headers = array('X-ZONT-Client' => 'your@email', 'Content-Type' => 'application/json');
$options = array('auth' => array('demo', 'demo'));
$request = Requests::post($url, $headers, json_encode($data), $options);
$response = json_decode($request->body, true);

Результат:

{
  "ok": true
}

POST https://zont-online.ru/api/set_io_port

Посылает устройству команду на изменение одного из следующих Состояний:

Отправка команды возможна только тогда, когда устройство на связи. Метод всегда возвращает успешное значение, даже в случае, когда связи с устройством нет или если отправка команды не удалась.

Параметры

Имя Тип Описание
device_id int ID устройства
portname string Имя состояния. Допустима одна из строк: "guard-state", "siren", "engine-block", "webasto" или "auto-ignition"
type string Тип значения. Нужные значения описаны в следующей таблице
value Требуемое значение состояния

Значение параметров type и value:

Имя состояния type value
"guard-state" "string" "enabled" для постановки на охрану, "disabled" для снятия с охраны
"auto-ignition" "auto-ignition" объект с полем state, равным: "enabled" для нормального включения автозапуска, "engine" для запуска только двигателя (без подогревателя), "webasto" для включения только подогревателя, "disabled" для выключения автозапуска, "delay" для продления автозапуска. При использовании state: "delay" также должно быть указано поле time с количеством секунд, до которых нужно продлить автозапуск.
прочие "bool" true для включения или false для выключения соответствующего состояния

Результат

Возвращается объект с единственным полем ok.

send_custom_command – Отправка пользовательской команды

curl 'https://zont-online.ru/api/send_custom_command' \
  -u 'demo:demo'                                      \
  -H 'X-ZONT-Client: your@email'                      \
  -H 'Content-Type: application/json'                 \
  -d '{"device_id": 18945, "command_id": 1}'
import requests

url = 'https://zont-online.ru/api/send_custom_command'
data = {
    'device_id': 18945,
    'command_id': 1
}

headers = {'X-ZONT-Client': 'your@email'}
result = requests.post(url, json=data, auth=('demo', 'demo'), headers=headers).json()
<?php
require_once 'Requests.php';
Requests::register_autoloader();

$url = 'https://zont-online.ru/api/send_custom_command';
$data = array(
    'device_id' => 18945,
    'command_id' => 1
);

$headers = array('X-ZONT-Client' => 'your@email', 'Content-Type' => 'application/json');
$options = array('auth' => array('demo', 'demo'));
$request = Requests::post($url, $headers, json_encode($data), $options);
$response = json_decode($request->body, true);

Результат:

{
  "ok": true
}

POST https://zont-online.ru/api/send_custom_command

Посылает устройству одну из пользовательских команд, которые задаются для ZTC-7xx и Mega SX в настроечной утилите.

Отправка команды возможна только тогда, когда устройство на связи. Метод всегда возвращает успешное значение, даже в случае, когда связи с устройством нет или если отправка команды не удалась.

Параметры

Имя Тип Описание
device_id int ID устройства
command_id int ID команды

Идентификтор команды соответствует полю commands[...].id одного из элементов массива в настройке custom_controls (см. Пользовательские команды и статусы).

Результат

Возвращается объект с одним лишь полем ok.

Загрузка данных

Устройства ZONT накапливают и отправляют на сервер различные виды данных, которые могут быть получены с сервера через API.

raw_events — История событий

curl 'https://zont-online.ru/api/raw_events'                            \
  -u 'demo:demo'                                                        \
  -H 'X-ZONT-Client: your@email'                                        \
  -H 'Content-Type: application/json'                                   \
  -d '{"device_id": 1209, "only": ["GuardOn", "GuardOff"],
       "mintime": 1486252800, "maxtime": 1486339200}'
import requests

url = 'https://zont-online.ru/api/raw_events'
data = {
    'device_id': 1209,
    'mintime': 1486252800,
    'maxtime': 1486339200,
    'only': ['GuardOn', 'GuardOff']
}

headers = {'X-ZONT-Client': 'your@email'}
result = requests.post(url, json=data, auth=('demo', 'demo'), headers=headers).json()
<?php
require_once 'Requests.php';
Requests::register_autoloader();

$url = 'https://zont-online.ru/api/raw_events';
$data = array(
    'device_id' => 1209,
    'mintime' => 1486252800,
    'maxtime' => 1486339200,
    'only' => array('GuardOn', 'GuardOff')
);

$headers = array('X-ZONT-Client' => 'your@email', 'Content-Type' => 'application/json');
$options = array('auth' => array('demo', 'demo'));
$request = Requests::post($url, $headers, json_encode($data), $options);
$response = json_decode($request->body, true);

Результат:

{
  "ok": true,
  "events": [
    [
      "GuardOn-1486253766",  // id
      1486253766,            // время
      "GuardOn",             // тип
      43.871066,             // долгота
      56.166916,             // широта
      null,                  // продолжительность
      {                      // данные
          "reason": "fob",   //   причина постановки на охрану
          "fob_number": 1    //   номер брелока
      },
      false                  // тревожное?
    ],

    ...
  ]
}

POST https://zont-online.ru/api/raw_events

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

Параметры

Имя Тип Обязательный Описание
device_id int да ID устройства
mintime int да Начало временного диапазона (включительно)
maxtime int да Конец временного диапазона (включительно)
only array нет Интересующие типы событий
except array нет Не интересующие типы событий

Время указывается в целых секундах, прошедших с 1970-01-01 00:00:00 (UTC). Не забудьте сделать поправку на нужный часовой пояс!

С помощью параметров only и except можно отфильтровать возвращаемый список событий. Каждый из этих необязательных параметров может содержать массив типов событий (строк). Если указан параметр only, то возвращаются только события типов, указанных в нём. Если указан except, то события типов, указанных в нём, не возвращаются. Если оба парамтера не указаны, возвращаются все события.

Результат

Ответ будет содержать поле events, содержащее массив событий, отсортированных по времени. Каждое событие — это массив, содержащий следующие элементы:

Индекс Тип Описание
0 string Идентификатор события. Мы решили отказаться от уникальных идентификаторов событий, поэтому это поле существует только для совместимости со старыми версиями клиентов и не является в действительности уникальным. Не рекомендуем использовать это поле, оно будет удалено в будущих версиях API.
1 int Время события (в секундах с 1970-01-01 00:00:00 UTC)
2 string Тип события
3 float Долгота местоположения события в градусах (null если неизвестно)
4 float Широта местоположения события в градусах (null если неизвестно)
5 int Длительность события в секундах (null если неизвестно). Указывается только для некоторых типов событий, например "Stop" (остановка).
6 object Дополнительная информация о событии (null если отсутствует). Формат этого поля определяется типом события.
7 bool Является ли событие тревожным («важным»)

Типы событий

Тип Тревожное Описание Доп. данные
"Stop" нет Остановка устройства с GPS. Продолжительность остановки в секундах передаётся не в поле дополнительных данных, а в поле длительности. null
"PowerOn" нет Включение устройства. В поле длительности — время в секундах, в течении которого устройство было выключено. null
"PowerOff" нет Выключение устройства null
"MainPowerLost" да Пропадание основного питания null
"MainPowerFound" да Появление основного питания null
"GPSLost" нет Потеря сигнала GPS null
"GPSFound" нет Нахождение сигнала GPS null
"GSMLost" нет Потеря сигнала GSM null
"GSMFound" нет Регистрация в сети GSM null
"connected" нет Соединение с сервером null
"disconnected" нет Отключение от сервера "reason" — причина отключения (строка)
"reconnected" нет Переподключение к серверу null
"GuardOn" нет Постановка на охрану "reason" — причина постановки:
  • "fob" — брелок
  • "call" — голосовое меню
  • "sms" — СМС
  • "app" — веб-интерфейс или приложение
  • "autoguard" — автопостановка
  • "centrallock" — центральный замок
  • "handsfree" — радиометка
  • "pin" — ПИН-код

"fob_number" — номер брелока
"phonenumber" — номер телефона.
"GuardOff" нет Снятие с охраны (см. "GuardOn")
"AlarmButton" да Нажатие тревожной кнопки null
"Shock1" нет Слабый удар null
"Shock2" да Сильный удар null
"Door" да Тревога по открытию двери null
"Door1", "Door2", "Door3", "Door4", "Door5", "Door6" да Тревога по открытию соответствующей двери null
"HoodTrunk" да Тревога по открытию капота/багажника null
"Hood" да Тревога по открытию капота null
"Trunk" да Тревога по открытию багажника null
"AutoIgnition" нет Автозапуск двигателя "reason" — причина ("manual" — по команде, "temperature" — по температуре, "timer" — по таймеру, "schedule" — по расписанию)
"result" — результат ("success" — успешно, "fail" — неуспешно, "breakdown" — двигатель заглох)
"EngineBreakdown" да Аварийная остановка двигателя null
"SoftwareUpgrade" нет Обновление ПО "firmware_version" — версия прошивки, "profile_version" — версия профиля
"Alarm" да Тревога null
"AlarmIgnition" да Тревога по зажиганию null
"AlarmTilt" да Тревога по датчику наклона null
"AlarmBrake" да Тревога по педали тормоза null
"EngineBlock" да Сработала блокировка двигателя null
"Moving" да Тревога по движению null
"Blackout" да Глушение сигнала GSM null
"GSMLostAlarm" да Тревога по пропаданию сигнала GSM null
"EngineStarted" нет Двигатель заведён null
"EngineStopped" нет Двигатель остановлен null
"DriverCallButton" да Кнопка вызова водителя null
"OutCallTone" нет Дозвон: гудок "number" — номер телефона
"OutCallConnection" нет Дозвон: соединение "number" — номер телефона
"OutCallEnd" нет Дозвон: завершение "number" — номер телефона
"OutSMS" нет Исходящее SMS "number" — номер телефона, "text" — текст
"InCall" нет Входящий вызов "number" — номер телефона
"InCallConnection" нет Входящий вызов: соединение "number" — номер телефона
"InCallEnd" нет Входящий вызов: завершение "number" — номер телефона
"InSMS" нет Входящее SMS "number" — номер телефона, "text" — текст
"ThermometerUpdate" нет Найден термодатчик "slot" — номер слота (с нуля), "type" — тип ("wired" — проводной, "radio" — радио), "serial" — серийный номер
"TemperatureHigh" да Температура выше порога "message" — текстовое сообщение (название датчика)
"TemperatureLow" да Температура ниже порога "message" — текстовое сообщение (название датчика)
"ThermometerMalfunction" да Термодатчик недоступен "message" — текстовое сообщение (название датчика)
"BatteryLow" да Разряд аккумулятора "voltage" — напряжение в вольтах
"RadioFOBAdded" нет Добавлен брелок или радиореле "slot" — номер слота
"BoilerFail" да Авария котла null
"BoilerFailCancel" да Авария котла устранена null
"Landmark" нет Метка (ZONT Трекер) "label" — имя метки
"ZoneAlarm" да Срабатывание охранной зоны "message" — сообщение, "zone" — номер зоны
"ZoneAlarmCancel" нет Восстановление охранной зоны "message" — сообщение, "zone" — номер зоны
"OTFail" да Авария котла или её устранение (OpenTherm). Аварии нет если поле "c" равно нулю, а массив "f" пуст "c" — код ошибки OEM
"f" — массив флагов сбоя:
  • "sr" — необходимо обслуживание
  • "lr" — требуется ручной сброс
  • "wp" — низкое давление воды
  • "gf" — сбой газа/горелки
  • "ap" — сбой давления воздуха
  • "wot" — перегрев воды
"OTLost" да Потеря связи по OpenTherm null
"OTFound" да Восстановление связи по OpenTherm null
"UploadSuccess" нет Файлы успешно загружены
"UploadFailed" да Не удалось загрузить файлы
"UserEvent" нет Пользовательское событие "message" — сообщение
"UserAlarm" да Пользовательское тревожное событие "message" — сообщение
"ExtSensorWarning" да Предупредительная зона доп. датчика
"ExtSensorAlarm" да Тревожная зона доп. датчика
"CurrentECUErrors" да Текущие ошибки ЭБУ (диагностика двигателя автомобиля) "errors" — коды ошибок OBD-II (массив чисел)
"SavedECUErrors" да Сохранённые ошибки ЭБУ (диагностика двигателя автомобиля) "errors" — коды ошибок OBD-II (массив чисел)

Типы устройств

В рамках системы ZONT выпускается множество устройств с различным назначением. Каждой модели соответствует свой идентификатор.

Идентификатор Модель Описание
T100 ZONT H-1/H-1V Домашний GSM-термостат
T102 ZONT H-2 Домашний Wi-Fi-термостат
L1000 ZONT L-1000 Многофункциональный программируемый GSM/Wi-Fi-термостат
ZTC-100 ZTC-100 Спутниковый поисковый модуль
ZTC-110 ZTC-110 Спутниковый охранно-поисковый модуль
ZTC-500 ZTC-500 Автомобильная сигнализация
ZTC-700 ZTC-700 Автомобильная сигнализация
ZTC-700M ZTC-700M Автомобильная сигнализация
ZTC-701M ZTC-701M Автомобильная сигнализация
ZTC-710 ZTC-710 Автомобильная сигнализация
ZTC-720 ZTC-720 Автомобильная сигнализация
tracker ZONT Трекер Приложение для Android
ZTA-110 ZTA-110 Объектовая сигнализация
SX250 Mega SX-LRW Объектовая сигнализация
SX170 Mega SX-170 Объектовая сигнализация
SX300 Mega SX-300 Объектовая сигнализация
SX350 Mega SX-350 Объектовая сигнализация

Параметры устройств

У каждого устройства есть Настройки и Состояния.

Настройками называют те параметры, значения которых обычно редко изменяются и которыми есть смысл управлять при отсутствии связи с устройством (например: список доверенных номеров, целевые температуры). Состояния – это параметры, описывающие устройство только в данный момент, значения которых могут меняться в зависимости от внешних воздействий (например: состояние охраны, уровень сигнала).

Получить текущие Настройки устройств можно с помощью метода devices. Если при запросе указать "load_io": true, то в каждом объекте, описывающем устройство, в поле "io" также будут возвращены Состояния устройств.

Изменить Настройки можно с помощью метода update_device. Управлять Состояниями – с помощью метода set_io_port.

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

Общие для всех типов устройств

Настройки

{
  "device_id": 1209,
  "serial": "973BF3309550",
  "name": "Сигнализация"

  ...
}
Название Тип Описание
device_id int Идентификатор устройства
serial string Серийный номер
name string Название

Состояние беспроводной сети

Настройки

{
  "balance": {
    "value": 56,
    "ussd": "*102#",
    "warning": true,
    "limit": 30
  },
  "trusted_phones": "+79082394312,+79102417612",
  "gsm_roaming": "same"

  ...
}
Название Тип Описание
balance object

Настройки отслеживания баланса SIM-карты

Поле Тип Описание
value int|null Текущее значение баланса
ussd string USSD-команда для запроса
warning bool Предупреждать ли при снижении ниже порога
limit int|null Порог, ниже которого происходит оповещение
trusted_phones string Доверенные номера телефонов, разделённые запятой
gsm_roaming string

Разрешение использования интернета в роуминге

  • "no" – запрет роуминга
  • "same" – разрешено во внутресетевом роуминге
  • "any" – разрешено в любом роуминге

Состояния

{
  "io": {
    "gsm-state": {
      "level": 29,
      "operator": "MTS",
      "state": "home-network"
    }
    ...
  }

  ...
}
Название Тип Описание
gsm-state object

Состояние GSM/Wi-Fi

Поле Тип Описание
level int Уровень сигнала [0..31]
operator string Название сети (имя оператора)
state string
  • not-registered – не зарегистрирован
  • home-network – в домашней сети
  • searching – поиск сети
  • rejected – сеть отказала в регистрации
  • roaming – в роуминге

Охрана (ZTC, Mega SX, ZONT H)

Состояния

{
  "io": {
    "guard-state": "enabled",
    "siren": false
    ...
  }

  ...
}
Название Тип Описание
guard-state string "enabled" если охрана активна, "disabled" если не активна или "enabling" если выполняется постановка на охрану
siren bool сирена активна в данный момент

Взаимодействие с автомобилем (ZTC)

Состояния

{
  "io": {
    "engine-block": false,
    "webasto": false,
    "auto-ignition": {
      "available": true,
      "state": "enabled",
      "configuration": {
        "engine": true,
        "webasto": false
      },
      "current_mode": {
        "engine": true,
        "webasto": false
      },
      "until": 1478811896
    },
    "ignition-state": true,
    "engine-state": true,
    "doors": false,
    "door-1": null,
    "door-2": null,
    "door-3": null,
    "door-4": null,
    "hood-trunk": null,
    "hood": false,
    "trunk": false,
    "ecu-diagnostics-enabled": true
    ...
  }

  ...
}
Название Тип Описание
engine-block bool активна ли блокировка двигателя
webasto bool включен ли предпусковой подогреватель (ZTC-1xx)
auto-ignition object

состояние автозапуска (ZTC-7xx, ZTC-5xx)

Поле Тип Описание
available bool Доступность автозапуска
state string

Состояние автозапуска

  • "disabled" – автозапуск выключен
  • "enabling" – запуск двигателя
  • "enabled" – двигатель заведён
  • "webasto" – включен предпусковой подогреватель
  • "webasto-confirmed" – включен предпусковой подогреватель и это подтверждено сигналом от подогревателя
configuration object Два булевых поля `“engine”` и `“webasto”` означают, настроен ли запуск соответственно двигателя и подогревателя
current_mode object Два булевых поля `“engine”` и `“webasto”` означают, используется ли запуск соответственно двигателя и подогревателя в текущей сессии автозапуска
until int|null Планируемое время отключения автозапуска
ignition-state bool Включено ли зажигание
engine-state bool Запущен ли двигатель
doors bool Открыта ли хотя бы одна дверь (при подключении дверей общим сигналом)
door-1, door-2, door-3, door-4 bool Открыта ли каждая из четырёх дверей
hood-trunk bool Открыт ли капот или багажник (при подключении их общим сигналом)
hood, trunk bool Открыты ли соответственно капот и багажник
ecu-diagnostics-active bool Активна ли диагностика двигателя

Управление отоплением (ZONT H, Mega SX)

Настройки

{
  "thermostat_mode": "comfort",

  "thermostat_mode_temps": {
    "econom": 15,
    "comfort": 21.5,
    "idle": 5,
    "full_off": false
  },

  "tempschedule": {
    "day": [23, 23, 23, ..., 23],
    "week": {
      "0": [16, 16, 16, ..., 16],
      ...
      "6": [21.5, 21.5, ..., 21.5]
    }
  },

  "thermometers": [
    {
      "uuid": "57d5c19005b605000bc4502b",
      "is_assigned_to_slot": true,
      "name": "Кухня",
      "color": "#a05be5",
      "function": "control",
      "limits": {
        "high": 30,
        "low": 16
      },
      "type": "wired",
      "last_value_time": 1478383975,
      "last_state": "ok",
      "last_value": 21.2
    }
    ...
  ],

  "ot_enabled": true,
  "ot_mode": "analog",
  "ot_max_setpoint": 80,
  "ot_min_setpoint": 5,
  "ot_max_ml": 100,
  "ot_dhw_setpoint": 46,
  "ot_min_wp": 0,
  "ot_config": ["ch", "dhw"],
  "ot_save_params": ["bt", "dt", "ot"]

  ...
}
Название Тип Описание
thermostat_mode string Режим термостата. Возможные значения:
  • "econom" – Эконом
  • "comfort" – Комфорт
  • "schedule" – Расписание
  • "idle" – Антизаморозка/выключен
thermostat_mode_temps object Целевая температура фиксированных режимов термостата. Объект имеет следующие поля:
  • econom (number) – целевая температура режима Эконом
  • comfort (number) – целевая температура режима Комфорт
  • idle (number) – целевая температура режима Антизаморозка
  • full_off (bool) – отключать регулирование в режиме Антизаморозка. Если равно true, то вместо режима Антизаморозка используется режим Выключен
tempschedule object Расписание температур. Применяется устройством когда выставлен режим «Расписание».
  • week (object) – недельное расписание. Имеет поля "0", "1", …, "6", соответствующие дням недели (0 – понедельник, 6 – воскресенье). Значениями являются массивы из 24 элементов с температурами для каждого.
  • day (array) – дневное расписание. В данный момент не используется устройствами.
thermometers array Данные о термодатчиках. Массив объектов, каждый из которых имеет следующие поля:
  • is_assigned_to_slot (bool) – если `true`, то этот термодатчик в данный момент зарегистрирован в термостате. Термодатчики с этим полем, равным `false` следует игнорировать при анализе. Они могут быть в массиве в том случае, если датчик был отключен от термостата, а затем был произведёт сброс датчиков.
  • serial (string) – серийный номер
  • name (string) – название
  • color (string) – цвет в веб-интерфейсе в html-нотации
  • function (string) – назначение. Возможные значения:
    • "control" – регулирование
    • "control-reserve" – резервное регулирование
    • "outside" – температура снаружи
    • "heat" – температура теплоносителя
    • null – не задано
  • limits (object) – пороги допустимых значений. Величины порогов указаны в дочерних полях low и high. Если порог не задан, то соответствующее поле равно null.
  • last_value_time (int) – время получения последней информации о показании датчика (полей `last_state` и `last_value`). Время в секундах с 1970-01-01 00:00:00 (UTC)
  • last_state (string) – состояние датчика. Возможные значения:
    • "ok" – датчик исправен
    • "malfunction" – датчик неисправен
  • last_value (number) – показание датчика, °C
ot_enabled bool OpenTherm включен
ot_mode string Режим работы OpenTherm: "analog" – обычный, "relay" – псевдорелейный
ot_max_setpoint float Максимальная установочная температура OpenTherm
ot_min_setpoint float Минимальная установочная температура OpenTherm
ot_max_ml float Максимальный уровень модуляции горелки в процентах (OpenTherm)
ot_dhw_setpoint float Установочная температура ГВС (OpenTherm)
ot_min_wp float Минимальное давление теплоносителя (OpenTherm)
ot_config array

Настройки функционала OpenTherm. Массив, содержащий строковые флаги:

  • "ch" – включение отопления
  • "dhw" – включение ГВС
  • "cl" – включение охлаждения
  • "ch2" – включение второго контура отопления
ot_save_params array

Параметры OpenTherm для ежеминутного сохранения. По выбранным параметрам можно будет увидеть графики в веб-интерфейсе и приложениях ZONT. Массив, содержащий строковые флаги:

  • "bt" – фактическая температура теплоносителя
  • "dt" – фактическая температура ГВС
  • "rwt" – температура обратного потока
  • "ot" – уличная температура
  • "rml" – уровень модуляции горелки
  • "wp" – давление теплоносителя
  • "fr" – скорость потока ГВС

Параметры "s" (статус), "cs" (установочная температура отопления) и "ff" (коды ошибок) сохраняются всегда, независимо от этого параметра.

Состояния

{
  "io": {
    "last-boiler-state": {
      "time": 1479881662,
      "boiler_work_time": 60,
      "thermostat_mode": "comfort",
      "target_temp": 22.0,
      "gate": false,
      "power": true,
      "fail": false,
      "pza_t": null,
      "ot": {
        "s": ["ch", "fl"],
        "cs": 37,
        "ff": {"f": [], "c": 0},
        "bt": 35,
        "dt": 32,
        "ot": -12.0
      }
    }
    ...
  }

  ...
}
Название Тип Описание
last-boiler-state object

Текущий статус термостата. Термостат присылает обновлённый статус раз в минуту. Имеет следующие поля:

  • time (int) – время получения статуса (в секундах с 1970-01-01 00:00:00 UTC)
  • boiler_work_time (int) – время работы котла в секундах за последнюю минуту. Неравенство нулю этого поля можно использовать как признак работы котла.
  • thermostat_mode (string) – режим термостата ("econom", "comfort", "schedule", "idle")
  • gate (bool) – включён ли режим шлюза для внешнего комнатного термостата
  • target_temp (float) – целевая температура
  • power (bool) – наличие внешнего питания
  • fail (bool) – присутствует ли авария котла
  • pza_t (float) – расчётная температура ПЗА
  • ot (object) – состояние OpenTherm
    • s (array) – массив флагов состояния
      • "f" – авария
      • "ch" – отопление включено
      • "dhw" – ГВС включено
      • "fl" – горелка работает
      • "cl" – охлаждение работает
      • "ch2" – второй контур отопления включен
      • "di" – диагностическая индикация
    • cs (float) – установочная температура отопления
    • ff (object) – состояние аварии
      • c (int) – OEM-код аварии
      • f (array) – флаги аварии
        • "sr" – требуется обслуживание
        • "lr" – требуется ручной сброс
        • "wp" – низкое давление воды
        • "gf" – сбой газа/горелки
        • "ap" – сбой давления воздуха
        • "wot" – превышение температуры
    • bt (float) – фактическая температура воды
    • dt (float) – фактическая температура ГВС
    • ot (float) – уличная температура
    • rwt (float) – температура обратного потока
    • rml (float) – относительный уровень модуляции в процентах
    • wp (float) – давление воды (бар)
    • fr (float) – скорость потока ГВС (литр/мин)

Пользовательские команды и статусы (ZTC-7xx, Mega SX)

{
  "custom_controls": [
    { // таких блоков может быть несколько
      "statuses": [
        {
          "id": 0,
          "type": "status",
          "name": "Насос"
        }
      ],
      "commands": [
        {
          "id": 0,
          "type": "command",
          "name": "Включить насос"
        },
        {
          "id": 1,
          "type": "command",
          "name": "Выключить насос"
        }
      ]
    }
  ],

  "io": {
    "custom_controls_state": {
      "0": 1,
      "1": 1
      ...
    }

    ...
  }

  ...
}

Настройки

Название Тип Описание
custom_controls array

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

Каждый объект имеет следующие поля:

  • commands – массив команд
  • statuses – массив статусов

Статус – это некоторое состояние устройства, которое может принимать значения 0 или 1 (например, 0 – свет не горит, 1 – свет горит). Команда – запрос устройству на выполнение какого-то действия (например, включить свет)

Каждая команда или статус имеют следующие поля:

  • id (int) – идентификатор
  • name (string) – название

Отправить устройству команду из списка можно с помощью метода send_custom_command.

Состояния

Название Тип Описание
custom_controls_state object Текущие значения пользовательских статусов (см. настройку custom_controls). Имеет форму {"0": 1, "1": 1, ...}. Каждому идентификатору статуса ставится в соответствие 0 или 1 в зависимости от текущего значения этого статуса в устройстве.