Разработка мобильного приложения для умного дома (шторы/жалюзи)
Моторизованные шторы и жалюзи — одно из самых простых 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 blinds — 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 недель. Стоимость зависит от набора поддерживаемых устройств.







