Smart Home Appliances Mobile App Development
Washing machine, refrigerator, dishwasher, robot vacuum — major home appliances increasingly come with Wi-Fi and cloud APIs. The mobile app's task: unite appliances from different brands in one interface and add automation scenarios that manufacturer apps don't support.
Ecosystems and APIs
Samsung SmartThings — one of the most open ecosystem APIs. REST API at https://api.smartthings.com/v1. OAuth2 personal access tokens or full OAuth2 flow. Supports washing machine control (washerWashingCourse), refrigerators (refrigerationSetpoint), air conditioners. On Flutter: http + dio with Bearer token. WebHook subscription to events via subscriptions endpoint.
LG ThinQ — no official public API. Work via unofficial reverse-engineered libraries (pythinq, thinq2-be) or Home Assistant LG ThinQ integration as middleware. Typical situation: manufacturer closes API to deny third-party access.
Miele — developer.miele.com, OAuth2, REST API. Manage wash programs, monitor status, push notifications via Miele webhook.
Bosch/Siemens Home Connect — REST API at https://api.home-connect.com. OAuth2. Supports refrigerators, ovens, washing machines. Sandbox for testing without real devices.
Xiaomi (Mi Home) — Xiaomi MiIO protocol, UDP, local. Library python-miio well documented. Roborock/Dreame vacuums — separate local protocols or cloud via MiCloud API.
Robot Vacuums: Integration Specifics
Roborock — most common. Official Roborock API appeared in 2023, before that used reverse-engineering via MiIO.
Key feature for vacuums — room map. Robot builds map via SLAM, stores on device. Get map: either proprietary protocol (Roborock S7+: binary RLE-compressed format) or via Home Assistant vacuum.send_command with get_map_data.
Render map on Flutter: decode binary blob to Uint8List, build Picture via Canvas. Rooms — colored polygons. Robot position — icon overlay. Obstacles — dark pixels. Use CustomPainter with repaint: ValueNotifier<RobotState>.
Start cleaning specific room: POST /api/commands/vacuum/start_room with room ID from map. Roborock API passes room_ids as list of int identifiers.
Appliance State Monitoring
Washing machine: current program, remaining time, errors. No need for real-time — update every 30–60 seconds sufficient. Completion notification — via WebHook or polling checking status == "finished".
On Flutter: Timer.periodic(Duration(seconds: 60), (t) => _fetchStatus()) while status != 'idle'. Once cycle complete — FCM push to user and stop timer.
Refrigerator: chamber temperature, compressor, door open (sensor in Samsung SmartThings API: contactSensor capability). Push if door open longer than 2 minutes — backend Rule-based trigger.
Energy Monitoring
Smart outlets with power measurement (Shelly Plug S, Tapo P110) — important appliance component. Power in watts, total kWh consumed. MQTT publication every 5–30 seconds.
Display consumption: line chart via fl_chart (Flutter) or victory-native (React Native). Aggregate by hours/days/months on backend (PostgreSQL date_trunc). Don't pull raw 30-day data to app — only aggregates.
Common Complexities
Appliance feedback unstable. Samsung SmartThings webhook may miss event on poor internet. Polling as fallback if no webhook event for >5 minutes — standard insurance.
Home Connect API has rate limit: 100 requests per day per device in trial mode. For production — request commercial access.
Timeline
One brand (e.g., Samsung SmartThings), basic monitoring and control — 4–6 weeks. Multi-brand, vacuum map, energy monitoring, automation — 3–5 months. Cost depends on set of brands and official API availability.







