Розробка мобільного додатка для розумного дому (шторы/жалюзі)
Моторизовані шторы та жалюзі — одне з найпростіших IoT-пристроїв з точки зору команд (відкрити/закрити/позиція в процентах), але з неочевидними нюансами у UX та синхронізації стану.
Типи пристроїв та протоколи
Somfy — ринок премієм-класу моторизованих штор. Протокол RTS (Radio Technology Somfy) — односторонній, без зворотного зв'язку. Ви відправляєте команду, але не знаєте, виконана вона чи ні. Somfy TaHoma / connexoon — хмарний хаб з REST API, додає двосторонній зв'язок для сумісних пристроїв. GET /enduser-mobile-web/1/enduserAPI/setup — отримати список пристроїв, POST /enduser-mobile-web/1/enduserAPI/exec/apply — виконати команду.
IKEA TRÅDFRI жалюзі — Zigbee, управління через Zigbee2MQTT або Home Assistant. Підтримують position (0-100%), tilt для жалюзі.
Tuya-сумісні мотори (більшість китайських брендів) — Tuya Open API або локальний протокол. "code": "percent_control", "value": 50 — встановити позицію 50%.
Matter over Wi-Fi/Thread — нові пристрої. WindowCovering cluster, атрибут CurrentPositionLiftPercentage. Matter SDK для iOS (MatterSupport framework, iOS 16.4+), Android — Google Home SDK.
UI управління жалюзями
Візуалізація положення жалюзі у реальному часі — ключовий елемент інтерфейсу. Не просто число процентів, а іконка або анімація.
На Flutter: кастомний віджет через AnimatedContainer + ClipRect. Прямокутник «жалюзі» анімується від повного розміру (закрито) до нуля (відкрито). AnimationController з поточною position пристрою. При отриманні нового значення через MQTT — animateTo(newPosition / 100) з тривалістю ~500ms.
Слайдер позиції: те ж саме правило дебаунса що й для диммерів. Somfy TaHoma приймає не більше 1 команди в 2 секунди — при швидкому русі слайдера відправляємо тільки кожну 2-гу секунду плюс остаточне значення при onChangeEnd.
Сцени та розклад
«Утренній підйом» — жалюзі відкриваються в 7:30 поступово за 5 хвилин. Gradual open у Somfy: серія команд з проміжними позиціями. Для Zigbee/Tuya: бекенд-сервіс відправляє команди через cron з нарастаючими значеннями position.
Реакція на датчик сонячного світла: якщо освітленість > 50000 lux — опустити південні жалюзі на 30%. Датчик освітленості (Aqara, Philips Hue) → MQTT → бекенд-автоматизація → команда мотором. Мобільний додаток тільки налаштовує правило, виконання на сервері.
Проблема без зворотного зв'язку
Somfy RTS — типовий приклад пристрою без reported стану. Відправили команду «закрити», але як дізнатися що жалюзі закрилися? Два варіанти:
Оптимістичний UI: оновлюємо стан у додатку відразу після відправки команди, не чекаючи підтвердження. Користувач бачить анімацію закриття. Якщо щось пішло не так — немає способу дізнатися автоматично, тільки кнопка «оновити вручну».
Зовнішні датчики: датчик кута нахилу (акселерометр) або кінцеві вимикачі. Дані від них приходять в MQTT — використовуємо як reported стан.
Для більшості продуктів вибирають оптимістичний UI з явним попередженням користувачу, що стан приблизний.
Інтеграція з системами розумного дому
Жалюзі рідко управляються ізольовано. Сценарії: «Закрити всі жалюзі + вимкнути світло у спальні + увімкнути нічник». Це вимагає координації з іншими підсистемами через спільний рушій автоматизації.
Якщо в системі вже є Home Assistant — інтегруємось через його REST API та WebSocket API. cover domain: POST /api/services/cover/set_cover_position з {"entity_id": "cover.living_room", "position": 50}. Всі пристрої різних протоколів управляються через єдиний API.
Строки
Один тип приводу (наприклад, Tuya або Zigbee через хаб), базове управління, розклад — 3–5 тижнів. Somfy TaHoma, мультивиробник, групове управління, сцени з іншими пристроями — 8–12 тижнів. Вартість залежить від набору підтримуваних пристроїв.







