├── .gitignore ├── rest ├── cityair500.md └── vector.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /rest/cityair500.md: -------------------------------------------------------------------------------- 1 | # REST API - VAKIO Cityait500 2 | 3 | ## Оглавление 4 | 5 | 1. [Информация](#Информация) 6 | 7 | 1. [Общая информация](#Общая-информация) 8 | 2. [Дополнительная информация](#Дополнительная-информация) 9 | 3. [Информация по REST](#Дополнительная-информация) 10 | 11 | 2. [Получение информации](#Получение-информации) 12 | 13 | 1. [Вся информация обо всех устройствах](#вся-информация-обо-всех-устройствах) 14 | 15 | 3. [Управление](#управление-cityair500) 16 | 1. [Управление режимом](#обновление-режима-работы) 17 | 2. [Управление настройками](#обновление-настроек) 18 | 19 | ## Информация 20 | 21 | ### Общая информация 22 | 23 | Прибор является умной приточной вентиляцией. Основной функционал — это регулировка скорости вентилятора и подогрева входящего воздуха, включение проветривания. На экране прибора отображается текущая скорость вентилятора и температура выходящего воздуха, с дополнительной индикацией о включенной авто яркости экрана, изменении положения заслонки, первоначальной настройки датчиков температуры и уведомление об ошибке. 24 | 25 | ### Дополнительная информация 26 | 27 | Подсветку нельзя регулировать при автоматической регулировке от датчика света. 28 | 29 | При включенном ночном режиме максимальная скорость вентилятора в умном режиме ограничивается. 30 | 31 | ### Информация по REST 32 | 33 | Авторизация производится по стандарту OAuth2 (Password Grant). 34 | 35 | Полученный в результате авторизации токен нужно использовать в Заголовках запросов: 36 | 37 | ``` 38 | Authorization: Bearer 39 | ``` 40 | 41 | ## Получение информации 42 | 43 | ### Вся информация обо всех устройствах 44 | 45 | Конечная точка - `/devices/{id}` 46 | 47 | Метод - `GET` 48 | 49 | #### Пример ответа 50 | 51 | ```json 52 | { 53 | "code": 200, 54 | "content": [ 55 | { 56 | "id": 4332386, 57 | "user_id": 331234, 58 | "device_name": "VakioCityair500_FFFFF", 59 | "device_group": "Нет группы", 60 | "device_type": { 61 | "name": "Vakio Cityair500", 62 | "slug": null, 63 | "image": null 64 | }, 65 | "uuid": "", 66 | "capabilities": { 67 | "on_off": "off", 68 | "mode": "inflow", 69 | "damper": 0, 70 | "speed": 1, 71 | "speed_pwm": 0, 72 | "heat": 15, 73 | "heat_pwm": 0 74 | }, 75 | "properties": { "temp_in": 22 }, 76 | "scenario": null, 77 | "master_device_id": null, 78 | "master_device_id_tmp": null, 79 | "optional": { 80 | "smart_mode_type": 43525 81 | }, 82 | "motominutes": 0, 83 | "registered": "", 84 | "verified": "1", 85 | "relation": { 86 | "on_off_dependence": "off", 87 | "dependence": { 88 | "smart_limit": 1550, 89 | "smart_step": 100, 90 | "smart_speed_off": 1, 91 | "smart_speed_on": 7, 92 | "device_id_master": 1 93 | } 94 | }, 95 | "version": "1.1.1", 96 | "device_mac": "FF:FF:FF:FF:FF:FF", 97 | "state": "1", 98 | "device_ip": "11.111.11.111", 99 | "settings": { 100 | "ten": 1, 101 | "damper": 1, 102 | "pult": 1, 103 | "sensor_block": 0, 104 | "real_speed": 0 105 | }, 106 | "device_subtype": "{\"series\": \"STM32\", \"subtype\": \"default\", \"xtal_freq\": \"168\"}", 107 | "errors": { 108 | "temp_hot": 0, 109 | "temp_cold": 0, 110 | "stop_hot": 0, 111 | "stop_cold": 0, 112 | "ds18_bus": 0, 113 | "fan": 0 114 | }, 115 | "device_group_id": 8551, 116 | "device_type_id": 8, 117 | "access_type": 0 118 | } 119 | ] 120 | } 121 | ``` 122 | 123 | ## Управление Cityair 500 124 | 125 | ### Обновление режима работы 126 | 127 | Конечная точка - `/devices/{id}` 128 | 129 | Метод - `PUT` 130 | 131 | - `{id}` - ID устройства 132 | 133 | #### Тело запроса 134 | 135 | ```json 136 | { 137 | "capabilities": [ 138 | { 139 | "instance": "heat", 140 | "value": 23 141 | } 142 | ] 143 | } 144 | ``` 145 | 146 | ``` 147 | capabilities.*.instance - свойство, для которого требуется обновить значение 148 | capabilities.*.value - новое значение для свойства 149 | { 150 | "on_off": "off", 151 | "mode": "inflow", 152 | "damper": 0, 153 | "speed": 1, 154 | "speed_pwm": 0, 155 | "heat": 15, 156 | "heat_pwm": 0 157 | } 158 | Свойства и их значения: 159 | - device_state: on/off, (Включить/выключить прибор) 160 | - speed: 1-7, (Скорость вентилятора) 161 | - heat: 10-25, (Температура выходного воздуха) 162 | - mode: inflow/smart, (Режим работы ручной и умный) 163 | 164 | Свойства только для чтения: 165 | - heat_pwm: мощность тэна в данный момент (0-100%) 166 | - speed_pwm: мощность работы вентилятора (0-100%) 167 | - damper: 0 - закрыта, 1 - открыта, 2/3 - В движении 168 | ``` 169 | 170 | ### Обновление настроек 171 | 172 | Конечная точка - `/devices/{id}` 173 | 174 | Метод - `PUT` 175 | 176 | - `{id}` - ID устройства 177 | 178 | #### Тело запроса 179 | 180 | ```json 181 | { 182 | "settings": [ 183 | { 184 | "instance": "ten", 185 | "value": 1 186 | } 187 | ] 188 | } 189 | ``` 190 | 191 | ``` 192 | capabilities.*.instance - свойство, для которого требуется обновить значение 193 | capabilities.*.value - новое значение для свойства 194 | 195 | Свойства и их значения: 196 | - ten: 1/0, (Работать ли тэну) 197 | - damper: 1/0 (Есть ли у прибора заслонка) 198 | - pult: 1/0 (Есть ли у прибора пульт) 199 | ``` 200 | -------------------------------------------------------------------------------- /rest/vector.md: -------------------------------------------------------------------------------- 1 | # REST API - VAKIO Vector 2 | 3 | ## Оглавление 4 | 5 | 1. [Информация](#Информация) 6 | 1. [Общая информация](#Общая-информация) 7 | 2. [Дополнительная информация](#Дополнительная-информация) 8 | 2. [Информация по REST](#Дополнительная-информация) 9 | 10 | 2. [Получение информации](#Получение-информации) 11 | 1. [Вся информация обо всех устройствах](#вся-информация-обо-всех-устройствах) 12 | 13 | 3. [Управление](#управление-vector) 14 | 1. [Управление режимом](#обновление-режима-работы) 15 | 2. [Управление настройками](#обновление-настроек) 16 | 17 | 18 | ## Информация 19 | 20 | ### Общая информация 21 | 22 | Прибор является умной приточной вентиляцией. Основной функционал — это регулировка скорости вентилятора и подогрева входящего воздуха, включение проветривания. На экране прибора отображается текущая скорость вентилятора и температура выходящего воздуха, с дополнительной индикацией о включенной авто яркости экрана, изменении положения заслонки, первоначальной настройки датчиков температуры и уведомление об ошибке. 23 | 24 | ### Дополнительная информация 25 | 26 | Подсветку нельзя регулировать при автоматической регулировке от датчика света. 27 | 28 | При включенном ночном режиме максимальная скорость вентилятора в умном режиме ограничивается. 29 | 30 | ### Информация по REST 31 | 32 | Авторизация производится по стандарту OAuth2 (Password Grant). 33 | 34 | Полученный в результате авторизации токен нужно использовать в Заголовках запросов: 35 | 36 | ``` 37 | Authorization: Bearer 38 | ``` 39 | 40 | ## Получение информации 41 | 42 | ### Вся информация обо всех устройствах 43 | 44 | Конечная точка - `/devices/{id}` 45 | 46 | Метод - `GET` 47 | 48 | #### Пример ответа 49 | 50 | ```json 51 | { 52 | "code": 200, 53 | "content": [ 54 | { 55 | "id": 4332386, 56 | "user_id": 331234, 57 | "device_name": "VakioVector_F854", 58 | "device_group": "Нет группы", 59 | "device_type": { 60 | "name": "Vakio Airflow", 61 | "slug": null, 62 | "image": null 63 | }, 64 | "uuid": "b233b452707ae01812623c8cb5ae26deec4ce543", 65 | "capabilities": { 66 | "on_off": "on", 67 | "speed": 3, 68 | "heat": 30, 69 | "mode": "manual", 70 | "blow": "off" 71 | }, 72 | "properties": { 73 | "in_temp": 27, 74 | "temperature": 23, 75 | "co2_level": 759 76 | }, 77 | "scenario": null, 78 | "master_device_id": null, 79 | "master_device_id_tmp": null, 80 | "optional": { 81 | "smart_mode_type": 43525 82 | }, 83 | "motominutes": 0, 84 | "registered": "2024-09-02 04:17:34.682958+00", 85 | "verified": "1", 86 | "relation": { 87 | "external": "on", 88 | "limit": 800, 89 | "device_id_master": 43525, 90 | "on_off_dependence": "on", 91 | "dependence": { 92 | "limit": 1250, 93 | "device_id_master": 43525 94 | } 95 | }, 96 | "version": "0.0.9", 97 | "device_mac": "94:3C:C6:B8:F8:54", 98 | "state": "1", 99 | "device_ip": "37.193.86.180", 100 | "settings": { 101 | "disp_bright": 100, 102 | "disp_mode": "off", 103 | "disp_rotate": 0, 104 | "disp_wakeup": "on", 105 | "always_on": "on", 106 | "night": "off", 107 | "heater_state": "on", 108 | "blow_time": 1, 109 | "sens_co2": "on" 110 | }, 111 | "device_subtype": "{\"series\": \"esp32\", \"subtype\": \"default\", \"xtal_freq\": \"40\"}", 112 | "errors": { 113 | "overheating": "off", 114 | "underheating": "off", 115 | "cold_in": "off", 116 | "internal_sens": "off" 117 | }, 118 | "device_group_id": 8551, 119 | "device_type_id": 8, 120 | "access_type": 0 121 | } 122 | ] 123 | } 124 | ``` 125 | 126 | ## Управление Vector 127 | 128 | ### Обновление режима работы 129 | 130 | Конечная точка - `/devices/{id}` 131 | 132 | Метод - `PUT` 133 | 134 | - `{id}` - ID устройства 135 | 136 | #### Тело запроса 137 | 138 | ```json 139 | { 140 | "capabilities": [ 141 | { 142 | "instance": "heat", 143 | "value": 23 144 | } 145 | ] 146 | } 147 | ``` 148 | ``` 149 | capabilities.*.instance - свойство, для которого требуется обновить значение 150 | capabilities.*.value - новое значение для свойства 151 | 152 | Свойства и их значения: 153 | - device_state: on/off, (Включить/выключить прибор) 154 | - fan: 0-7, (Скорость вентилятора) 155 | - heat: 10-25, (Температура выходного воздуха) 156 | - mode: manual/smart, (Режим работы ручной и умный) 157 | - blow: on/off (Включить/выключить проветривание) 158 | 159 | ``` 160 | 161 | 162 | 163 | 164 | #### Пример запроса 165 | 166 | ```json 167 | { 168 | "capabilities": [ 169 | { 170 | "instance": "on_off", 171 | "value": "off" 172 | } 173 | ] 174 | } 175 | ``` 176 | 177 | #### Пример ответа 178 | ```json 179 | { 180 | "code": 200, 181 | "device": { 182 | "id": 453823, 183 | "user_id": 15, 184 | "device_name": "Vakio Vector", 185 | "device_group": "Нет группы", 186 | "device_type": { 187 | "name": "Vakio Airflow", 188 | "slug": null, 189 | "image": null 190 | }, 191 | "uuid": "0b54af8257317d8bd8af823340fd0a49f98881cd", 192 | "capabilities": { 193 | "on_off": "off", 194 | "speed": 0, 195 | "heat": 20, 196 | "mode": "manual", 197 | "blow": "off" 198 | }, 199 | "properties": [], 200 | "scenario": null, 201 | "master_device_id": null, 202 | "master_device_id_tmp": null, 203 | "optional": [], 204 | "motominutes": 0, 205 | "registered": "2024-02-19 09:48:14.150952+00", 206 | "verified": "1", 207 | "relation": [], 208 | "version": null, 209 | "device_mac": null, 210 | "state": "1", 211 | "device_ip": null, 212 | "settings": [], 213 | "device_subtype": "{\"series\":\"esp32\",\"subtype\":\"nidec\",\"xtal_freq\":\"40\"}", 214 | "errors": [], 215 | "device_group_id": 2334, 216 | "device_type_id": 8, 217 | "access_type": 0 218 | } 219 | } 220 | ``` 221 | 222 | ### Обновление настроек 223 | 224 | Конечная точка - `/devices/{id}` 225 | 226 | Метод - `PUT` 227 | 228 | - `{id}` - ID устройства 229 | 230 | #### Тело запроса 231 | 232 | ```json 233 | { 234 | "settings": [ 235 | { 236 | "instance": "disp_bright", 237 | "value": 83 238 | } 239 | ] 240 | } 241 | ``` 242 | ``` 243 | capabilities.*.instance - свойство, для которого требуется обновить значение 244 | capabilities.*.value - новое значение для свойства 245 | 246 | Свойства и их значения: 247 | - disp_bright: 5-100, (Уровень подсветки экрана) 248 | - disp_mode: manual/auto (Переключатель автояркости) 249 | - disp_rotate: 0-2 (Поворот экрана 0 – портретная, 1 – горизонтальная, 2 – инвертированная горизонтальная) 250 | - disp_wakeup: on/off (Переключатель включения экрана при входящих настройках от сервера) 251 | - always_on: on/off (Переключатель постоянно включенного экрана) 252 | - night: on/off (Переключатель ночного режима) 253 | - heater_state: on/off (Переключатель нагревателя) 254 | - blow_time: 1-10 (Время проветривания) 255 | - sens_co2: on/off (Наличие датчика co2) 256 | ``` 257 | 258 | 259 | 260 | 261 | #### Пример запроса 262 | 263 | ```json 264 | { 265 | "settings": [ 266 | { 267 | "instance": "disp_bright", 268 | "value": 83 269 | } 270 | ] 271 | } 272 | ``` 273 | 274 | #### Пример ответа 275 | Ответ общего формата (как в примере с `capabilities`) 276 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Документация по REST API и MQTT Vakio и интеграциям с умными домами 2 | 3 | - MQTT API 4 | - [Подключение прибора](#connect) 5 | - [Управление VakioBaseSmart Rev2 (ESP32)](#basesmart) 6 | - [+/system](#basesystem) 7 | - [+/mode](#basemode) 8 | - [+/state](#basestate) 9 | - [+/workmode](#baseworkmode) 10 | - [+/speed](#basespeed) 11 | - [Управление VakioOpenair Rev2 (ESP32)](#openair) 12 | - [device/+/openair/system | server/+/openair/system](#openairsystem) 13 | - [device/+/openair/mode | server/+/openair/mode](#openairmode) 14 | - [+/state](#openairstate) 15 | - [+/workmode](#openairworkmode) 16 | - [+/gate](#openairgate) 17 | - [+/speed](#openairspeed) 18 | - [+/temp](#openairtemp) 19 | - [+/hud](#openairhud) 20 | - [Управление VakioAtmosphere](#atmosphere) 21 | - [+/system](#atmospheresystem) 22 | - [+/temp](#atmospheretemp) 23 | - [+/co2](#atmosphereco2) 24 | - [+/hud](#atmospherehud) 25 | - [Управление VakioCityAir (250, 500)](#cityair) 26 | - [+/+/lwt](#cityair_lwt) 27 | - [+/+/system](#cityair_system) 28 | - [+/+/log](#cityair_log) 29 | - [+/+/state](#cityair_state) 30 | - [+/+/ten_state](#cityair_ten_state) 31 | - [+/+/damper_state](#cityair_damper_state) 32 | - [+/+/target_temp](#cityair_target_temp) 33 | - [+/+/target_speed](#cityair_target_speed) 34 | - [+/+/speed](#cityair_speed) 35 | - [+/+/in_temp](#cityair_in_temp) 36 | - [+/+/out_temp](#cityair_out_temp) 37 | - [+/+/damper](#cityair_damper) 38 | - [+/+/filter](#cityair_filter) 39 | - [+/+/odometer](#cityair_odometer) 40 | - [+/+/error](#cityair_error) 41 | - [+/+/reset_error](#cityair_reset_error) 42 | - [+/+/reset_filter](#cityair_reset_filter) 43 | - [+/+/update](#cityair_update) 44 | - [Управление VakioVector](#vector) 45 | - [device/+/vector/mode](#vector) 46 | - [device/+/vector/mode](#vector) 47 | - REST API 48 | - [Регистрация](#register) 49 | - [Получение данных о приборах](#info) 50 | - [Управление VakioBaseSmart](#restbasesmart) 51 | - [Управление VakioOpenAir](#restopenair) 52 | - [Управление VakioVector](rest/vector.md) 53 | - [Управление VakioCityair500](rest/cityair500.md) 54 | - Интеграции с системами умных домов 55 | - Home Assistant 56 | - VAKIO Smart Series 57 | - VAKIO Openair 58 | - VAKIO Atmosphere 59 | - VAKIO Kiv Smart 60 | - MajorDOMO 61 | - Smart-устройства 62 | - Sprut.hub (от партнеров) 63 | - VAKIO Smart Series + Wirenboard 64 | 65 | --- 66 | 67 | ### Подключение прибора 68 | 69 | Подключение к локальному серверу c помощью MQTT для интеграции приборов Vakio c системами умного дома
70 | Инструкция по подключению приборов по MQTT. 71 | 72 | --- 73 | 74 | ### Управление VakioBaseSmart 75 | 76 | Команды для актуальной версии **(1.2.1)**, если они недоступны, обновите прибор 77 | 78 | "+" - Ваш топик по умолчанию (vakio/system) 79 | 80 | ``` 81 | topic: +/system 82 | message: 0609 83 | ``` 84 | 85 | #### Топик +/system 86 | 87 | "+" - Ваш топик по умолчанию (vakio/system) 88 | 89 | ##### Команды прибора PUBLISH (исходящие) 90 | 91 | _Регистрация прибора_ (Отправляется при каждом подключении) 92 | 93 | ``` 94 | 0601{series:esp32,subtype:"subtype","xtal_freq":"xtal_freq"} 95 | ``` 96 | 97 | ``` 98 | 060006versionmacaddress | 0600061.2.1FF:FF:FF:FF:FF 99 | ``` 100 | 101 | ##### Команды прибора SUBSCRIBE (входящие) 102 | 103 | _Запустить обновление прибора_ 104 | 105 | ``` 106 | 0609 107 | ``` 108 | 109 | _Повтор регистрации_ 110 | 111 | ``` 112 | 0687 113 | ``` 114 | 115 | Прибор отправит на +/system команды регистрации прибора и сообщение `0685` 116 | 117 | _Сброс к заводским настройкам_ 118 | 119 | ``` 120 | 0608 121 | ``` 122 | 123 | #### Топик +/mode 124 | 125 | "+" - Ваш топик по умолчанию (vakio/mode) 126 | 127 | ##### Команды прибора PUBLISH/SUBSCRIBE 128 | 129 | _Включить/Выключить прибор_ 130 | 131 | ``` 132 | 06000 - Выключить 133 | 06001 - Включить 134 | ``` 135 | 136 | _Режим рекуперации_ 137 | 138 | ``` 139 | 06010 - Рекуперация лето 140 | 06011 - Рекуперация зима 141 | ``` 142 | 143 | _Режим приток_ 144 | 145 | ``` 146 | 06021 - Приток 147 | 06022 - Приток MAX 148 | ``` 149 | 150 | _Режим вытяжка_ 151 | 152 | ``` 153 | 06031 - Вытяжка 154 | 06032 - Вытяжка MAX 155 | ``` 156 | 157 | _Режим ночной_ 158 | 159 | ``` 160 | 06041 161 | ``` 162 | 163 | _Скорость_ 164 | 165 | ``` 166 | 0650X (X - от 1 до 7) 167 | ``` 168 | 169 | #### Топик +/state 170 | 171 | "+" - Ваш топик по умолчанию (vakio/state) 172 | 173 | ##### Команды прибора PUBLISH/SUBSCRIBE 174 | 175 | Управление состояние прибора (Вкл/Выкл) 176 | 177 | Команда 178 | 179 | ``` 180 | on - Включить 181 | 0ff - Выключить 182 | ``` 183 | 184 | #### Топик +/workmode 185 | 186 | "+" - Ваш топик по умолчанию (vakio/workmode) 187 | 188 | ##### Команды прибора PUBLISH/SUBSCRIBE 189 | 190 | Управление режимом прибора 191 | 192 | Команда 193 | 194 | ``` 195 | inflow - Приток 196 | inflow_max - Приток MAX 197 | recuperator - Рекуперация лето 198 | winter - Рекуперация зима 199 | outflow - Вытяжка 200 | outflow_max - Вытяжка MAX 201 | night - Ночной 202 | ``` 203 | 204 | #### Топик +/speed 205 | 206 | "+" - Ваш топик по умолчанию (vakio/speed) 207 | 208 | ##### Команды прибора PUBLISH/SUBSCRIBE 209 | 210 | Управление скоростью прибора 211 | 212 | Команда 213 | 214 | ``` 215 | 1-7 (Номер скорости) 216 | ``` 217 | 218 | --- 219 | 220 | ### Управление Vakioopenair Rev2 221 | 222 | Команды для актуальной версии **(1.1.0)**, если они недоступны, обновите прибор 223 | 224 | **C версии 1.1.0 openair поддерживает команды в json с массивами, так и в формате объектов** 225 | 226 | "+" - Ваш топик по умолчанию (vakio/system) 227 | 228 | ``` 229 | Топик: server/+/openair/system 230 | ``` 231 | 232 | ```json 233 | { 234 | "firmware": [ 235 | { 236 | "domain": "service.vakio.ru" 237 | }, 238 | { 239 | "start": 1 240 | } 241 | ] 242 | } 243 | ``` 244 | 245 | #### device/+/openair/system | server/+/openair/system 246 | 247 | "+" - Ваш топик по умолчанию (vakio/system) 248 | 249 | ##### Команды прибора PUBLISH (исходящие) 250 | 251 | Топик для получения команд от прибора 252 | 253 | ``` 254 | device/+/openair/system 255 | ``` 256 | 257 | _Регистрация прибора_ (Отправляется при каждом подключении) 258 | 259 | ```jsonc 260 | { 261 | "type": "auth", 262 | "auth": { 263 | "device_mac": "FF:FF:FF:FF:FF", 264 | "version": "1.1.1" 265 | }, 266 | "device_subtype": { 267 | "exchange_type": "json", 268 | "series": "esp32", 269 | "subtype": "tmp8015-chip", 270 | "xtal_freq": "40" 271 | } 272 | } 273 | ``` 274 | 275 | _Ошибка переохладения_ (Отправляется при критически низкой температуры платы) 276 | 277 | ```jsonc 278 | { 279 | "errors": { 280 | "shutdown": 1 // 1 - Состояние переохлаждения | 0 - нормальное состояние 281 | } 282 | } 283 | ``` 284 | 285 | ##### Команды прибора SUBSCRIBE (входящие) 286 | 287 | Топик для отправки команд прибору 288 | 289 | ``` 290 | server/+/openair/system 291 | ``` 292 | 293 | _Настройка переохлаждения_ 294 | 295 | ```jsonc 296 | { 297 | "shutdown": { 298 | "limit": 0 // Значение температуры при котором войдет в состояние переохлаждения 299 | } 300 | } 301 | ``` 302 | 303 | _Сброс настроек_ 304 | 305 | ```jsonc 306 | { 307 | "reset": [ 308 | { 309 | "wireless": "reset" // Сброс настроек подключения 310 | }, 311 | { 312 | "device": "reset" // Сброс параметров режима работы 313 | }, 314 | { 315 | "all": "reset" // Полный сброс настроек 316 | } 317 | ] 318 | } 319 | ``` 320 | 321 | _Обновление прошивки_ 322 | 323 | ```json 324 | { 325 | "firmware": [ 326 | { 327 | "domain": "service.vakio.ru" 328 | }, 329 | { 330 | "start": 1 331 | } 332 | ] 333 | } 334 | ``` 335 | 336 | Актальная версия прибора (с 1.1.0) 337 | 338 | ```json 339 | { 340 | "firmware": { 341 | "domain": "service.vakio.ru", 342 | "start": 1 343 | } 344 | } 345 | ``` 346 | 347 | #### device/+/openair/mode | server/+/openair/mode 348 | 349 | "+" - Ваш топик по умолчанию (vakio/system) 350 | 351 | ##### Команды прибора PUBLISH (исходящие) 352 | 353 | Топик для получения команд от прибора 354 | 355 | ``` 356 | device/+/openair/mode 357 | ``` 358 | 359 | _Рабочий режим capabilities_ 360 | 361 | ```jsonc 362 | { 363 | "capabilities": { 364 | "mode": "manual", // Режим работы "manual", "super_auto" 365 | "on_off": "on", // Состояние прибора "on","off" 366 | "speed": 1, // 0-5 367 | "gate": 4 // 1 - 4 (4 - полностью открыт) 368 | } 369 | } 370 | ``` 371 | 372 | _Настройки settings_ 373 | 374 | ```jsonc 375 | { 376 | "settings": { 377 | "temperature_speed": [20, 5], // Настройка умного режима от ВНУТРЕННОГО датчика, 1 - темпераутра, 2 - скорость 378 | "emerg_shunt": 10, // Температура при который клапан прекратит работу (Для избежания образования росы на плате) 379 | "gate": 4 // 1 - 4 (4 - полностью открыт) Положение заслонки в умном режиме от ВНУТРЕННОГО датчика 380 | } 381 | } 382 | ``` 383 | 384 | ##### Команды прибора SUBSCRIBE (входящие) 385 | 386 | Топик для отправки команд прибору 387 | 388 | ``` 389 | server/+/openair/mode 390 | ``` 391 | 392 | _Управление прибором_ 393 | 394 | ```jsonc 395 | { 396 | "capabilities": [ 397 | { "speed": 2 }, 398 | { "gate": 4 }, 399 | { "on_off": "on" }, 400 | { "mode": "manual" } // "super_auto" 401 | ] 402 | } 403 | ``` 404 | 405 | Актальная версия прибора (с 1.1.0) 406 | 407 | ```jsonc 408 | { 409 | "capabilities": { 410 | "mode": "manual", // Режим работы "manual", "super_auto" 411 | "on_off": "on", // Состояние прибора "on","off" 412 | "speed": 1, // 1-5 413 | "gate": 4 // 1 - 4 (4 - полностью открыт) 414 | } 415 | } 416 | ``` 417 | 418 | _Настройка прибора_ 419 | 420 | ```jsonc 421 | { 422 | "settings": [ 423 | { "gate": 1 }, // 1-4 Положение заслонки в SMART режиме 424 | { "smart_speed": 1 }, // 1-5 Скорость в SMART режиме 425 | { "emerg_shunt": 5 } // Темперура отключения прибора 426 | ] 427 | } 428 | ``` 429 | 430 | Актальная версия прибора (с 1.1.0) 431 | 432 | ```jsonc 433 | { 434 | "settings": { 435 | "gate": 1, // 1-4 Положение заслонки в SMART режиме 436 | "smart_speed": 1, // 1-5 Скорость в SMART режиме 437 | "emerg_shunt": 5 // Темперура отключения прибора 438 | } 439 | } 440 | ``` 441 | 442 | #### Топик +/state 443 | 444 | "+" - Ваш топик по умолчанию (vakio/state) 445 | 446 | ##### Команды прибора PUBLISH/SUBSCRIBE 447 | 448 | Управление состояние прибора (Вкл/Выкл) 449 | 450 | Команда 451 | 452 | ``` 453 | on - Включить 454 | 0ff - Выключить 455 | ``` 456 | 457 | #### Топик +/workmode 458 | 459 | "+" - Ваш топик по умолчанию (vakio/workmode) 460 | 461 | ##### Команды прибора PUBLISH/SUBSCRIBE 462 | 463 | Управление режимом прибора 464 | 465 | Команда 466 | 467 | ``` 468 | manual - Ручной режим 469 | super_auto - SMART режим 470 | ``` 471 | 472 | #### Топик +/speed 473 | 474 | "+" - Ваш топик по умолчанию (vakio/speed) 475 | 476 | ##### Команды прибора PUBLISH/SUBSCRIBE 477 | 478 | Управление скоростью прибора 479 | 480 | Команда 481 | 482 | ``` 483 | 0-5 (Номер скорости) 484 | ``` 485 | 486 | #### Топик +/gate 487 | 488 | "+" - Ваш топик по умолчанию (vakio/gate) 489 | 490 | ##### Команды прибора PUBLISH/SUBSCRIBE 491 | 492 | Управление заслонкой прибора 493 | 494 | Команда 495 | 496 | ``` 497 | 1-4 (Позиция заслонки) 498 | ``` 499 | 500 | #### Топик +/temp 501 | 502 | "+" - Ваш топик по умолчанию (vakio/temp) 503 | 504 | ##### Команды прибора PUBLISH 505 | 506 | Показания внутренного датчика температуры 507 | 508 | ``` 509 | Пример: 510 | 20 511 | ``` 512 | 513 | #### Топик +/hud 514 | 515 | "+" - Ваш топик по умолчанию (vakio/hud) 516 | 517 | ##### Команды прибора PUBLISH 518 | 519 | Показания внутренного датчика влажности 520 | 521 | ``` 522 | Пример: 523 | 33 524 | ``` 525 | 526 | --- 527 | 528 | ### Управление VakioAtmosphere 529 | 530 | Команды для актуальной версии **(1.0.2)**, если они недоступны, обновите прибор 531 | 532 | "+" - Ваш топик по умолчанию (vakio/system) 533 | 534 | ``` 535 | topic: +/system 536 | message: 0709 537 | ``` 538 | 539 | #### Топик +/system 540 | 541 | "+" - Ваш топик по умолчанию (vakio/system) 542 | 543 | ##### Команды прибора PUBLISH (исходящие) 544 | 545 | _Регистрация прибора_ (Отправляется при каждом подключении) 546 | 547 | ``` 548 | 0701{"series":"esp8266","subtype":"subtype","xtal_freq":"xtal_freq"} 549 | ``` 550 | 551 | ``` 552 | 070007versionmacaddress | 0700061.2.1FF:FF:FF:FF:FF 553 | ``` 554 | 555 | ##### Команды прибора SUBSCRIBE (входящие) 556 | 557 | _Запустить обновление прибора_ 558 | 559 | ``` 560 | 0709 561 | ``` 562 | 563 | _Вкл/Выкл светодиодов_ 564 | 565 | ``` 566 | 0732X (X - 0/1) 567 | ``` 568 | 569 | _Ротация дисплея_ 570 | 571 | ``` 572 | 0731X (X - 0/1) 573 | ``` 574 | 575 | _Выбор режима подсветки_ 576 | 577 | ``` 578 | 0727x (X - 0-1) 579 | 0 - ручная настройка яркости подсветки 580 | 1 - яркость подсветки зависит от освещенности 581 | ``` 582 | 583 | _Яркость подсветки в ручном режиме_ 584 | 585 | ``` 586 | 0727x (X - 000-100) 3 символа 587 | ``` 588 | 589 | _Сброс настроек_ 590 | 591 | ``` 592 | 0708 593 | ``` 594 | 595 | _Проверка онлайна_ 596 | 597 | ``` 598 | 0787 599 | ``` 600 | 601 | #### Топик +/temp 602 | 603 | "+" - Ваш топик по умолчанию (vakio/temp) 604 | 605 | ##### Команды прибора PUBLISH 606 | 607 | Показания внутренного датчика температуры 608 | 609 | ``` 610 | Пример: 611 | 20 612 | ``` 613 | 614 | #### Топик +/hud 615 | 616 | "+" - Ваш топик по умолчанию (vakio/hud) 617 | 618 | ##### Команды прибора PUBLISH 619 | 620 | Показания внутренного датчика влажности 621 | 622 | ``` 623 | Пример: 624 | 33 625 | ``` 626 | 627 | #### Топик +/co2 628 | 629 | "+" - Ваш топик по умолчанию (vakio/hud) 630 | 631 | ##### Команды прибора PUBLISH 632 | 633 | Показания внутренного датчика CO2 634 | 635 | ``` 636 | Пример: 637 | 1000 638 | ``` 639 | 640 | --- 641 | 642 | ### Управление VakioCityair (250, 500) 643 | 644 | Команды для актуальной версии, если они недоступны, обновите прибор.
645 | Для данного прибора формирование топиков происходит по следующей схеме:
646 | +/+/..
647 | "+" - последние 2 байта мас адреса устройства
648 | "+" - ваш топик (по умолчанию cityair)
649 | .. - изменяемая часть 650 | 651 | #### Топик +/+/lwt (только на 250) 652 | 653 | ``` 654 | При отключении прибора от серверу происходит публикация сообщения "Offline" 655 | ``` 656 | 657 | #### Топик на подписку +/+/system (только на 250) 658 | 659 | ``` 660 | При получении прибором команды "GET" на сервер отправляются все настройки устройства 661 | ``` 662 | 663 | #### Топик на публикацию +/+/log 664 | 665 | ``` 666 | При каждом подключении прибора к серверу происходит публикация сообщения 667 | версии прибора, mac адреса прибора, ip прибора 668 | ``` 669 | 670 | #### Топик на подписку +/+/state/set
Топик на публикацию +/+/state 671 | 672 | ``` 673 | Команды вкл/выкл прибора: "on"/"off" 674 | ``` 675 | 676 | #### Топик на подписку +/+/ten_state/set
Топик на публикацию +/+/ten_state 677 | 678 | ``` 679 | Команды вкл/выкл тена прибора: "on"/"off" 680 | ``` 681 | 682 | #### Топик на подписку +/+/damper_state/set
Топик на публикацию +/+/damper_state 683 | 684 | ``` 685 | Команды использования/не использования заслонки: "on"/"off" 686 | ``` 687 | 688 | #### Топик на подписку +/+/target_temp/set
Топик на публикацию +/+/target_temp 689 | 690 | ``` 691 | Команды целевой температуры тена: 10..25 (в градусах) 692 | ``` 693 | 694 | #### Топик на подписку +/+/target_speed/set
Топик на публикацию +/+/target_speed 695 | 696 | ``` 697 | Команды целевой скорости вентилятора: 1..7 698 | ``` 699 | 700 | #### Топик на публикацию +/+/speed 701 | 702 | ``` 703 | Команды скорости вентилятора: 0..100 (в процентах) 704 | ``` 705 | 706 | #### Топик на публикацию +/+/in_temp 707 | 708 | ``` 709 | Команды температуры датчика температуры на входе: -55..+125 (в градусах) 710 | ``` 711 | 712 | #### Топик на публикацию +/+/out_temp 713 | 714 | ``` 715 | Команды температуры датчика температуры на выходе: -55..+125 (в градусах) 716 | ``` 717 | 718 | #### Топик на публикацию +/+/damper 719 | 720 | ``` 721 | Команды положения заслонки: "closed", "opened", "opens", "closes" 722 | ``` 723 | 724 | #### Топик на публикацию +/+/filter 725 | 726 | ``` 727 | Команды фильтра наработки моточасов (в часах) 728 | ``` 729 | 730 | #### Топик на публикацию +/+/odometer 731 | 732 | ``` 733 | Команды фильтра наработки часов (в часах) 734 | ``` 735 | 736 | #### Топик на публикацию +/+/error 737 | 738 | ``` 739 | Команды ошибок прибора: "temp_hot", "temp_cold", "stop_hot", "stop_cold", "ds18_bus", "ds18_lack", "no" 740 | ``` 741 | 742 | #### Топик на подписку +/+/reset_error 743 | 744 | ``` 745 | Команда сброса ошибок прибора: любое значение 746 | ``` 747 | 748 | #### Топик на подписку +/+/reset_filter 749 | 750 | ``` 751 | Команда сброса фильтра: любое значение 752 | ``` 753 | 754 | #### Топик на подписку +/+/update 755 | 756 | ``` 757 | Команда обновления прошивки прибора: любое значение 758 | ``` 759 | 760 | --- 761 | 762 | ### Управление VakioVector 763 | 764 | Команды актуальны для версии **(0.1.8)** и выше. 765 | 766 | Топики: 767 | device/+/vector/mode - отправка команд от прибора на сервер 768 | server/+/vector/mode - отправка команд от сервера на прибор 769 | 770 | "+" - Ваш топик по умолчанию (vakio) 771 | 772 | При подключении прибор отправляет два json объекта с настройками capabilities, settings. 773 | 774 | ##### Команды прибора capabilities 775 | 776 | Состояние прибора включить/выключить (on/off) (прием от сервера, отправка на сервер) 777 | 778 | ``` 779 | Пример: 780 | {"capabilities": {"on_off": "on"}} 781 | ``` 782 | 783 | Скорость вентилятора (1-7) (прием от сервера, отправка на сервер) 784 | 785 | ``` 786 | Пример: 787 | {"capabilities": {"speed": 3}} 788 | ``` 789 | 790 | Подогрев выходящего воздуха, в градусах цельсия (5-30) (прием от сервера, отправка на сервер) 791 | 792 | ``` 793 | Пример: 794 | {"capabilities": {"heat": 14}} 795 | ``` 796 | 797 | Режим работы, smart доступен только при настройке через приложение (manual/smart) (прием от сервера, отправка на сервер) 798 | 799 | ``` 800 | Пример: 801 | {"capabilities": {"mode": "manual"}} 802 | ``` 803 | 804 | Режим продувки вкл/выкл (on/off) (прием от сервера, отправка на сервер) 805 | 806 | ``` 807 | Пример: 808 | {"capabilities": {"blow": "on"}} 809 | ``` 810 | 811 | Состояние заслонки (0-3) (0 - открытие, 1 - открыта, 2 - закрывается, 3 - закрыта) (отправка на сервер) 812 | 813 | ``` 814 | Пример: 815 | {"capabilities": {"stepper": 2}} 816 | ``` 817 | 818 | ##### Команды прибора settings 819 | 820 | Яркость экрана, в процентах (5-100) (прием от сервера, отправка на сервер) 821 | 822 | ``` 823 | Пример: 824 | {"settings": {"disp_bright": 37}} 825 | ``` 826 | 827 | Режим автоматической яркости экрана вкл/выкл (on/off) (прием от сервера, отправка на сервер) 828 | 829 | ``` 830 | Пример: 831 | {"settings": {"disp_mode": "off"}} 832 | ``` 833 | 834 | Поворот экрана (0-3) (0 - портретный, 1 - портретный инвертированный, 2 - горизонтальный, 835 | 3 - горизонтальный инвертированный) (прием от сервера, отправка на сервер) 836 | 837 | ``` 838 | Пример: 839 | {"settings": {"disp_rotate": 2}} 840 | ``` 841 | 842 | Включение экрана при приеме команд от сервера вкл/выкл (on/off) (прием от сервера, отправка на сервер) 843 | 844 | ``` 845 | Пример: 846 | {"settings": {"disp_wakeup": "on"}} 847 | ``` 848 | 849 | Постоянно включенный экран вкл/выкл (on/off) (прием от сервера, отправка на сервер) 850 | 851 | ``` 852 | Пример: 853 | {"settings": {"always_on": "off"}} 854 | ``` 855 | 856 | Работа нагревателя вкл/выкл (on/off) (прием от сервера, отправка на сервер) 857 | 858 | ``` 859 | Пример: 860 | {"settings": {"heater_state": "on"}} 861 | ``` 862 | 863 | Время продувки, в минутах (1-10) (прием от сервера, отправка на сервер) 864 | 865 | ``` 866 | Пример: 867 | {"settings": {"blow_time": 6}} 868 | ``` 869 | 870 | Наличие датчика co2 (on/off) (отправка на сервер) 871 | 872 | ``` 873 | Пример: 874 | {"settings": {"sens_co2": "off"}} 875 | ``` 876 | 877 | Разные команды от одного объекта можно отправлять вместе 878 | 879 | ``` 880 | Пример: 881 | {"settings": {"speed": 2, "heat": 11}} 882 | ``` 883 | 884 | --- 885 | 886 | ## REST API () 887 | 888 | Открытый API для интеграции приборов Vakio c системами умного дома (для работы прибору необходим доступ к интернету) 889 | 890 | ### Регистрация 891 | 892 | 1. Загрузите приложение Vakio Smart Control с App Store или Google Play. 893 | 2. Зарегистрируйтесь и подтвердите Email. 894 | 3. Отправьте письмо на почту с пометкой "Регистрация индивидуального API", в тексте укажите Email, имя и номер телeфона, которые относятся к этому аккаунту. 895 | 4. Мы вышлем вам данные для авторизации. 896 | 897 | ### Получение токена для авторизации с помощью пароля 898 | 899 | _Адрес_ 900 | 901 | ``` 902 | POST https://api.vakio.ru/oauth/token 903 | ``` 904 | 905 | _Заголовки_ 906 | 907 | ``` 908 | 'Content-Type': 'application/json' 909 | ``` 910 | 911 | _Тело_ 912 | 913 | ```json 914 | { 915 | "client_id": "", 916 | "client_secret": "", 917 | "grant_type": "password", 918 | "username": "", 919 | "password": "" 920 | } 921 | ``` 922 | 923 | ### Получение Refresh токена 924 | 925 | _Адрес_ 926 | 927 | ``` 928 | POST https://api.vakio.ru/oauth/token 929 | ``` 930 | 931 | _Заголовки_ 932 | 933 | ``` 934 | 'Content-Type': 'application/json' 935 | ``` 936 | 937 | _Тело_ 938 | 939 | ```json 940 | { 941 | "client_id": "", 942 | "client_secret": "", 943 | "grant_type": "refresh_token", 944 | "refresh_token": "" 945 | } 946 | ``` 947 | 948 | _Успешный ответ_ 949 | 950 | ```json 951 | { 952 | "access_token": "f33e31633a2d70c29ef13adef639c36dc1445a93", 953 | "expires_in": 86400, 954 | "token_type": "Bearer", 955 | "scope": null, 956 | "refresh_token": "24bbee6297ee59d3b25e145da758cdf2b6504f39f" 957 | } 958 | ``` 959 | 960 | --- 961 | 962 | ### Получение данных о приборах 963 | 964 | ### Получение данных обо всех устройствах пользователя 965 | 966 | _Адрес_ 967 | 968 | ``` 969 | GET https://api.vakio.ru/devices 970 | ``` 971 | 972 | _Заголовки_ 973 | 974 | ``` 975 | 'Content-Type': 'application/json' 976 | 'Authorization': 'Bearer ' 977 | ``` 978 | 979 | _Успешный ответ_ 980 | 981 | ``` 982 | { 983 | "code": 200, 984 | "content": [ 985 | { 986 | "id": 19, 987 | "device_name": "Мой прибор 1", 988 | "device_type": { 989 | "name": "Vakio Plus Series", 990 | "slug": "vakio-window-plus", 991 | "image": "https://connect.vakio.ru/wp-content/uploads/vakio-window-plus.jpg", 992 | }, 993 | "device_group": "кухня", 994 | "capabilities": { 995 | "on_off": "off", 996 | "mode": "inflow", 997 | "speed": "5" 998 | }, 999 | "properties": { 1000 | *// Для устройств с датчиками (Atmosphere, Openair и др.)* 1001 | "humidity": 24, 1002 | "temperature": 345 1003 | }, 1004 | "relation": { 1005 | "on_off_dependence":"", 1006 | *// Для Atmosphere* 1007 | "dependence":{ 1008 | "mode":"", 1009 | "device_id_master":"", 1010 | "min_value":"", 1011 | "step":"", 1012 | "parametr":"" 1013 | } 1014 | *// Для Base Smart* 1015 | "dependence":{ 1016 | "mode":"", 1017 | "device_id_master":"", 1018 | } 1019 | }, 1020 | "verified": 1, 1021 | "device_type_id": 2 1022 | } 1023 | ] 1024 | } 1025 | ``` 1026 | 1027 | ### Получение данных об устройстве пользователя 1028 | 1029 | _Адрес_ 1030 | 1031 | ``` 1032 | POST https://api.vakio.ru/devices/{DEVICE_ID} 1033 | ``` 1034 | 1035 | _Заголовки_ 1036 | 1037 | ``` 1038 | 'Content-Type': 'application/json', 1039 | 'Authorization': 'Bearer ', 1040 | ``` 1041 | 1042 | _Успешный ответ_ 1043 | 1044 | ``` 1045 | см. Получение данных обо всех устройствах пользователя 1046 | ``` 1047 | 1048 | ### Управление basesmart 1049 | 1050 | ### Смена режима/ скорости работы Base Smart 1051 | 1052 | _Адрес_ 1053 | 1054 | ``` 1055 | PUT https://api.vakio.ru/devices/{DEVICE_ID} 1056 | ``` 1057 | 1058 | _Заголовки_ 1059 | 1060 | ``` 1061 | 'Content-Type': 'application/json', 1062 | 'Authorization': 'Bearer ', 1063 | }, 1064 | ``` 1065 | 1066 | _Тело_ 1067 | 1068 | ```json 1069 | { 1070 | "capabilities": [ 1071 | { 1072 | "instance": "mode", 1073 | "value": "inflow" 1074 | }, 1075 | { 1076 | "instance": "speed", 1077 | "value": "3" 1078 | }, 1079 | { 1080 | "instance": "on_off", 1081 | "value": "on" 1082 | } 1083 | ] 1084 | } 1085 | ``` 1086 | 1087 | _Успешный ответ_ 1088 | 1089 | ```json 1090 | { 1091 | "code": 200, 1092 | "content": "updated" 1093 | } 1094 | ``` 1095 | 1096 | #### Отправка одного параметра 1097 | 1098 | ```json 1099 | { 1100 | "capabilities": [ 1101 | { 1102 | "instance": "mode", 1103 | "value": "inflow" 1104 | } 1105 | ] 1106 | } 1107 | ``` 1108 | 1109 | #### Типы данных 1110 | 1111 | 1. Режимы Base Smart 1112 | > "inflow" - Приток 1113 | > 1114 | > "outflow" - Вытяжка 1115 | > 1116 | > "recuperator" - Рекуперация 1117 | > 1118 | > "inflow_max" - Максимальный приток 1119 | > 1120 | > "outflow_max" - Максимальная вытяжка 1121 | > 1122 | > "night" - Ночной режим 1123 | 2. Скорости Base Smart - 1124 | > 1 - 7 1125 | 3. Вкл/ выкл Base Smart 1126 | > "on"/ "off" 1127 | 1128 | ### Управление OpenAir 1129 | 1130 | ### Смена режима/положения заслонки/скорости работы OpenAir 1131 | 1132 | _Адрес_ 1133 | 1134 | ``` 1135 | PUT https://api.vakio.ru/devices/{DEVICE_ID} 1136 | ``` 1137 | 1138 | _Заголовки_ 1139 | 1140 | ``` 1141 | 'Content-Type': 'application/json', 1142 | 'Authorization': 'Bearer ', 1143 | ``` 1144 | 1145 | _Тело_ 1146 | 1147 | ```json 1148 | { 1149 | "capabilities": [ 1150 | { 1151 | "instance": "mode", 1152 | "value": "manual" 1153 | }, 1154 | { 1155 | "instance": "speed", 1156 | "value": "3" 1157 | }, 1158 | { 1159 | "instance": "gate", 1160 | "value": "1" 1161 | }, 1162 | { 1163 | "instance": "on_off", 1164 | "value": "on" 1165 | } 1166 | ] 1167 | } 1168 | ``` 1169 | 1170 | _Успешный ответ_ 1171 | 1172 | ```json 1173 | { 1174 | "code": 200, 1175 | "device": { 1176 | // Информация об изменённом устройстве 1177 | } 1178 | } 1179 | ``` 1180 | 1181 | #### Отправка одного параметра 1182 | 1183 | ```json 1184 | { 1185 | "capabilities": [ 1186 | { 1187 | "instance": "mode", 1188 | "value": "manual" 1189 | } 1190 | ] 1191 | } 1192 | ``` 1193 | 1194 | #### Типы данных 1195 | 1196 | 1. Режимы Openair 1197 | > "manual" - Режим ручного управления 1198 | > 1199 | > "smart_auto" - Smart-режим 1200 | 2. Скорости Openair 1201 | > 0 - 5 1202 | 3. Положение заслонки Openair _(доступно не на всех устройствах)_ 1203 | > 1 - 4 1204 | > 1205 | > _\*доступно не на всех устройствах._ 1206 | > 1207 | > _\*\*изменение положения заслонки не работает, если значение скорости больше 0._ 1208 | 4. Вкл/выкл Openair 1209 | > "on"/ "off" 1210 | --------------------------------------------------------------------------------