Розробка мобільного додатка для розумного дому (контроль клімату)
Термостати, кондиціонери, системи рекуперації, системи теплої підлоги — в одній квартирі можуть стояти пристрої трьох різних виробників з різними протоколами. Завдання мобільного додатка — показати єдиний інтерфейс та дати управління без необхідності перемикатися між п'ятьма додатками.
Протоколи кліматичного обладнання
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), детекцію присутності через 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. Haptic feedback при досягненні цільового значення — HapticFeedback.selectionClick() на iOS, HapticFeedback.vibrate() на Android.
Важливо: не відправляти MQTT/REST команду при кожному кроці обертання. Дебаунс 500ms + обов'язкова відправка при onPanEnd. Інакше термостат Nest починає ігнорувати запити при надто частих змінах (rate limiting: 1 запит на секунду на пристрій).
Розклад та автоматизація клімату
Розклад нагріву/охолодження — тижнева сітка з часовими слотами. Кожен слот: час початку, цільова температура, режим. UI — горизонтальна шкала часу на день, свайп для перемикання днів.
Реалізація на 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 місяців. Вартість визначається після аудиту обладнання клієнта.







