Зібрати в одному застосунку термостати 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 місяців. Вартість визначається після аудиту обладнання клієнта. Зв'яжіться з нами для оцінки вашого проекту.







