Разработка мобильного приложения для умного дома (бытовая техника)
Стиральная машина, холодильник, посудомойка, робот-пылесос — крупная бытовая техника всё активнее идёт с Wi-Fi и облачными API. Задача мобильного приложения: объединить технику разных брендов в один интерфейс и добавить сценарии автоматизации, которые производительские приложения не поддерживают.
Экосистемы и API
Samsung SmartThings — один из наиболее открытых экосистемных API. REST API на https://api.smartthings.com/v1. OAuth2 personal access tokens или полноценный OAuth2 flow. Поддерживает управление стиральными машинами (washerWashingCourse), холодильниками (refrigerationSetpoint), кондиционерами. На Flutter: http + dio с Bearer-токеном. WebHook подписка на события через subscriptions endpoint.
LG ThinQ — официального публичного API нет. Работаем через неофициальные реверс-инжиниринг библиотеки (pythinq, thinq2-be) или Home Assistant LG ThinQ интеграцию как middleware. Это типичная ситуация для крупной техники: производитель закрывает API, чтобы не давать третьим сторонам доступ.
Miele — developer.miele.com, OAuth2, REST API. Управление программами стирки, мониторинг статуса, уведомления по push через Miele webhook.
Bosch/Siemens Home Connect — REST API на https://api.home-connect.com. OAuth2. Поддерживает холодильники, духовки, стиральные машины. Sandbox для тестирования без реальных устройств.
Xiaomi (Mi Home) — Xiaomi MiIO протокол, UDP, локальный. Библиотека python-miio хорошо документирована. Пылесосы Roborock/Dreame — отдельные локальные протоколы или облако через MiCloud API.
Роботы-пылесосы: специфика интеграции
Roborock — один из самых распространённых. Официальный Roborock API появился в 2023 году, до этого использовали реверс-инжиниринг через MiIO.
Ключевая фича для пылесосов — карта помещения. Робот строит карту через SLAM, хранит её на устройстве. Получить карту: либо проприетарный протокол (Roborock S7+: бинарный формат с RLE-сжатием), либо через Home Assistant vacuum.send_command с get_map_data.
Отрисовка карты на Flutter: декодируем бинарный blob в Uint8List, строим Picture через Canvas. Комнаты — цветные полигоны. Позиция робота — иконка поверх. Препятствия — тёмные пиксели. Используем CustomPainter с repaint: ValueNotifier<RobotState>.
Запуск уборки конкретной комнаты: POST /api/commands/vacuum/start_room с ID комнаты из карты. Roborock API передаёт room_ids как список int-идентификаторов.
Мониторинг состояния техники
Стиральная машина: текущая программа, оставшееся время, ошибки. Не нужен реалтайм — обновление каждые 30–60 секунд достаточно. Уведомление о завершении цикла — через WebHook или polling с проверкой status == "finished".
На Flutter: Timer.periodic(Duration(seconds: 60), (t) => _fetchStatus()) пока status != 'idle'. Как только цикл завершён — FCM push пользователю и остановка таймера.
Холодильник: температура камеры, компрессор, открытие двери (датчик в API Samsung SmartThings: contactSensor capability). Push при открытой двери дольше 2 минут — на бэкенде через Rule-based trigger.
Энергомониторинг
Умные розетки с измерением потребления (Shelly Plug S, Tapo P110) — важный компонент для техники. Мощность в ваттах, суммарный расход кВт·ч. MQTT публикация каждые 5–30 секунд.
Отображение потребления: линейный график через fl_chart (Flutter) или victory-native (React Native). Агрегация по часам/дням/месяцам на бэкенде (PostgreSQL date_trunc). Не тащим сырые данные за 30 дней в приложение — только агрегаты.
Типичные сложности
Обратная связь от техники бывает нестабильной. Samsung SmartThings webhook может пропустить событие при нестабильном интернете. Polling как fallback при отсутствии webhook события за >5 минут — стандартная страховка.
Home Connect API имеет rate limit: 100 запросов в день на устройство в trial режиме. Для production — запрашивать commercial access.
Сроки
Один бренд (например, Samsung SmartThings), базовый мониторинг и управление — 4–6 недель. Мультибренд, карта пылесоса, энергомониторинг, автоматизация — 3–5 месяцев. Стоимость зависит от набора брендов и наличия официальных API.







