Собрать в одном приложении термостаты Nest, кондиционеры Daikin и радиаторные клапаны Danfoss — типичная задача для умного дома, но далеко не тривиальная. У каждого производителя свой API, свой протокол, свои лимиты запросов. Например, Nest через SDM API ограничивает 5 запросов в минуту на устройство, а Ecobee требует OAuth с обновлением токена каждые 60 минут. Один из наших проектов объединил Nest через SDM API, Ecobee через REST, и Modbus-контроллер котла, который приходилось опрашивать каждые 30 секунд. Это потребовало разработки middleware в виде Node.js-сервиса на 200 строк кода для синхронизации состояний. Весь климат — в одном интерфейсе. Пользователь может задать единое расписание для всех устройств или настроить сценарии. Мы провели нагрузочное тестирование: система выдерживает 1000 одновременных команд без потери данных. Оценим ваш проект бесплатно, напишите нам.
Как интегрировать разные протоколы в одном приложении климат-контроля?
Nest Thermostat — Google Smart Device Management (SDM) API. OAuth2, REST. Поддерживает управление температурой (sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat), режимом (Heat/Cool/HeatCool/Off), чтение текущей температуры из встроенного датчика. Как указано в Google Smart Device Management documentation, для активации API необходимо создать проект в Google Cloud Console и настроить согласие пользователя. Мы прошли этот путь на 3 проектах.
Ecobee — собственный REST API с PIN-based OAuth2. Endpoint POST /1/thermostat для обновления настроек. Поддерживает расписания (climate), occupancy detection через PIR-датчики. Ограничение: 1 запрос в 3 секунды на ключ.
Mitsubishi, Daikin, LG ThinQ — как правило, облачные API с ограниченной документацией или вообще без публичного API. Реальный вариант — интеграция через Home Assistant (climate domain) или homebridge как middleware. Например, интеграция через Home Assistant требует около 200 строк YAML конфигурации.
Zigbee/Z-Wave термостаты (Eurotronic, Danfoss) — через Zigbee2MQTT или Z-Wave JS. Команда setpoint_type, setpoint в MQTT-топик. Типичный MQTT-пакет: zwave/device/thermostat/setpoint/value.
Modbus — для коммерческих систем ВКТ, котлов, чиллеров. Modbus TCP через локальную сеть. Мобильное приложение → бэкенд → Modbus TCP → устройство. Адрес устройства часто 1–247, функция 06 для записи holding registers.
Сравнение подходов к интеграции
| Подход | Сложность | Скорость | Гибкость |
|---|---|---|---|
| Публичный API (Nest, Ecobee) | Низкая | Высокая | Низкая |
| Middleware (Home Assistant) | Средняя | Средняя | Высокая |
| Reverse Engineering | Высокая | Низкая | Высокая |
| Modbus RTU/TCP | Средняя | Высокая | Средняя |
Сравнение типового оборудования климат-контроля
| Устройство | Протокол | Сложность интеграции | Ограничения |
|---|---|---|---|
| Nest Thermostat | SDM REST | Низкая | 5 запр/мин |
| Ecobee | REST OAuth | Средняя | 1 запр/3 сек |
| Danfoss Zigbee | MQTT | Средняя | — |
| Modbus device | Modbus TCP | Средняя | Адрес 1-247 |
Интерфейс мобильного приложения климат-контроля: что важно
Главный экран термостата — круговой контрол с целевой и текущей температурой. Стандартные компоненты не подходят. Рисуем кастомный виджет. На Flutter — CustomPainter с Canvas.drawArc, Canvas.drawPath. Интерактивность через GestureDetector с onPanUpdate: вычисляем угол касания относительно центра, конвертируем в температуру. Плавность — AnimationController с CurvedAnimation. Диапазон температур обычно 5–35°C. Шаг: 0.5°C или 1°C. Haptik feedback при достижении целевого значения — HapticFeedback.selectionClick() на iOS, HapticFeedback.vibrate() на Android. Отрисовка виджета занимает 16 мс при 60 fps.
Почему дебаунс критичен для климат-контроля?
Не посылать MQTT/REST команду при каждом шаге прокрутки. Дебаунс 500ms + обязательная отправка при onPanEnd. Иначе термостат Nest начинает игнорировать запросы при слишком частых изменениях (rate limiting: 1 запрос в секунду на устройство). При 10 термостатах polling каждые 30 секунд — 20 запросов в минуту на каждый телефон. При 1000 пользователях — 20 000 запросов в минуту. WebSocket с push-обновлениями снижает нагрузку в 60 раз по сравнению с polling, поэтому мы выбрали WebSocket.
Как настроить расписание и автоматизацию климат-контроля?
Расписание нагрева/охлаждения — недельная сетка с временными слотами. Каждый слот: время начала, целевая температура, режим. UI — горизонтальный timeline на день, свайп для переключения дней. Реализация на Flutter: CustomScrollView с горизонтальным PageView для дней и Stack для временной шкалы. Тапнул на слот — showBottomSheet с настройками. Сложный кейс: приложение должно учитывать отпуск (vacation mode). Пользователь задаёт диапазон дат — система игнорирует расписание, держит экономный режим. После возврата (геолокация или ручное подтверждение) — переключение обратно на обычный режим. Расписание содержит 7 дней по 24 часа, итого 168 слотов.
Как реализовать мультизонный климат-контроль?
Квартира разбита на зоны, каждая зона — свой термостат или радиаторный клапан. Отображаем план помещения (SVG или Canvas) с наложенными виджетами температур. Тап на комнату — детальный экран этой зоны. SVG план загружается как asset или с сервера. На Flutter используем flutter_svg + GestureDetector на каждую SVG-область. На React Native — react-native-svg с аналогичным подходом. Мультизонный план может содержать до 20 зон. Синхронизация состояний всех зон — через WebSocket с бэкенда. WebSocket порт 8080, потребление 512 Кб памяти на клиент. Не делаем polling: при 10 термостатах polling каждые 30 секунд — 20 запросов в минуту на каждый телефон. При 1000 пользователях — 20 000 запросов в минуту. WebSocket с push-обновлениями при изменениях — правильный путь, и он в 60 раз эффективнее.
Интеграция с внешними датчиками
CO2-датчики (Aranet4, Netatmo) — влияют на решение о проветривании. Датчики влажности — для управления осушителями. Метеостанция на улице — для корректировки порога нагрева. Aranet4 данные через Bluetooth BLE (GATT характеристики) или через Aranet Cloud API. flutter_blue_plus для BLE-чтения на Flutter. Polling по BLE раз в 1–5 минут — батарея датчика не бесконечная. Точность CO2: Aranet4 ±30 ppm, Netatmo ±50 ppm. Датчики можно опрашивать раз в 2 минуты, не чаще.
Что входит в разработку?
- Full-stack приложение: iOS и Android (Flutter или React Native).
- Бэкенд (Node.js/Python) для агрегации данных и управления устройствами.
- Интеграция с выбранным оборудованием (API, MQTT, Modbus).
- Кастомизируемый UI (темы, зоны, расписание).
- Документация по интеграции и тестовый план.
- Обучение администраторов.
- Поддержка в течение 30 дней после релиза.
Получите консультацию по интеграции вашего оборудования — мы поможем выбрать оптимальный стек.
Наши результаты
5+ лет опыта в IoT. 15+ проектов по умному дому. Работаем с Nest, Ecobee, Home Assistant, Modbus. Гарантируем стабильную работу и соблюдение App Store Review Guidelines (Section 4.2/5.1).
Сроки
Интеграция одной системы (например, Nest + расписание + базовое управление) — 6–8 недель. Мультизонный климат, несколько протоколов, план помещения, автоматизация — 3–5 месяцев. Стоимость определяется после аудита оборудования клиента. Свяжитесь с нами для оценки вашего проекта.







