Розробка мобільного додатка для розумного дому (побутова техніка)
Пральна машина, холодильник, посудомийка, робот-пилосос — крупна побутова техніка все активніше йде з 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. Управління програмами прання, моніторинг статусу, сповіщення через 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.







