Разработка мобильного приложения для умного дома (климат-контроль)
Термостаты, кондиционеры, рекуператоры, системы напольного обогрева — в одной квартире может стоять оборудование трёх разных производителей с разными протоколами. Задача мобильного приложения — показать единый интерфейс и дать управление без необходимости переключаться между пятью приложениями.
Протоколы климатического оборудования
Nest Thermostat — Google Smart Device Management (SDM) API. OAuth2, REST. Поддерживает управление температурой (sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat), режимом (Heat/Cool/HeatCool/Off), чтение текущей температуры из встроенного датчика.
Ecobee — собственный REST API с PIN-based OAuth2. Endpoint POST /1/thermostat для обновления настроек. Поддерживает расписания (climate), occupancy detection через PIR-датчики.
Mitsubishi, Daikin, LG ThinQ — как правило, облачные API с ограниченной документацией или вообще без публичного API. Реальный вариант — интеграция через Home Assistant (climate domain) или homebridge как middleware.
Zigbee/Z-Wave термостаты (Eurotronic, Danfoss) — через Zigbee2MQTT или Z-Wave JS. Команда setpoint_type, setpoint в MQTT-топик.
Modbus — для коммерческих систем ВКТ, котлов, чиллеров. Modbus TCP через локальную сеть. Мобильное приложение → бэкенд → Modbus TCP → устройство.
Интерфейс термостата: что важно
Главный экран термостата в мобильном приложении — это круговой контрол с целевой температурой, текущей температурой и режимом. Стандартные компоненты не подходят. Рисуем кастомный виджет.
На 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.
Важно: не посылать MQTT/REST команду при каждом шаге прокрутки. Дебаунс 500ms + обязательная отправка при onPanEnd. Иначе термостат Nest начинает игнорировать запросы при слишком частых изменениях (rate limiting: 1 запрос в секунду на устройство).
Расписание и автоматизация климата
Расписание нагрева/охлаждения — недельная сетка с временными слотами. Каждый слот: время начала, целевая температура, режим. UI — горизонтальный timeline на день, свайп для переключения дней.
Реализация на Flutter: CustomScrollView с горизонтальным PageView для дней и Stack для временной шкалы. Тапнул на слот — showBottomSheet с настройками.
Сложный кейс: приложение должно учитывать отпуск (vacation mode). Пользователь задаёт диапазон дат — система игнорирует расписание, держит экономный режим. После возврата (геолокация или ручное подтверждение) — переключение обратно на обычный режим.
Мультизонный климат
Квартира разбита на зоны, каждая зона — свой термостат или радиаторный клапан. Отображаем план помещения (SVG или Canvas) с наложенными виджетами температур. Тап на комнату — детальный экран этой зоны.
SVG план загружается как asset или с сервера. На Flutter используем flutter_svg + GestureDetector на каждую SVG-область. На React Native — react-native-svg с аналогичным подходом.
Синхронизация состояний всех зон — через WebSocket с бэкенда. Не делаем polling: при 10 термостатах polling каждые 30 секунд — 20 запросов в минуту на каждый телефон. При 1000 пользователях — 20 000 запросов в минуту. WebSocket с push-обновлениями при изменениях — правильный путь.
Интеграция с внешними датчиками
CO2-датчики (Aranet4, Netatmo) — влияют на решение о проветривании. Датчики влажности — для управления осушителями. Метеостанция на улице — для корректировки порога нагрева.
Aranet4 данные через Bluetooth BLE (GATT характеристики) или через Aranet Cloud API. flutter_blue_plus для BLE-чтения на Flutter. Polling по BLE раз в 1–5 минут — батарея датчика не бесконечная.
Сроки
Интеграция одной системы (например, Nest + расписание + базовое управление) — 6–8 недель. Мультизонный климат, несколько протоколов, план помещения, автоматизация — 3–5 месяцев. Стоимость определяется после аудита оборудования клиента.







