A client came to us with a problem: a Samsung washing machine, a Roborock robot vacuum, and an LG refrigerator — each with its own app. Managing three different interfaces is inconvenient, and automating scenarios ("start cleaning after washing") is impossible. We built a unified smart home mobile app that merges devices from different brands and adds scenarios unavailable in official apps. Our solution reduces integration time by half compared to building from scratch, and development cost is individual — you pay only for the brands and features you need. A typical project involves 5–10 devices, and event reaction time can be up to 30 seconds. We use proven APIs and middleware to ensure stable operation even when no official interface exists. This cuts maintenance costs by up to 40% compared to using multiple native apps. Development is on Flutter, providing a single codebase for iOS and Android and speeding up updates. Contact us for a preliminary project estimate.
Smart Home Mobile App Development: How to Unify Multi-Brand Appliances?
Ecosystems and APIs
- Samsung SmartThings — REST API at
https://api.smartthings.com/v1. OAuth2 personal access tokens or full OAuth2 flow. Supports washing machines (washerWashingCourse), refrigerators (refrigerationSetpoint), air conditioners. On Flutter:http+diowith Bearer token. WebHook event subscription viasubscriptionsendpoint. - LG ThinQ — no official public API. We work through unofficial reverse-engineered libraries (
pythinq,thinq2-be) or the Home Assistant LG ThinQ integration as middleware. This is typical for large appliances: manufacturers close the API to prevent 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. The
python-miiolibrary is well documented. Roborock/Dreame vacuums use separate local protocols or cloud via MiCloud API.
Smart Home API Comparison
| Brand | API Type | Authentication | Limitations |
|---|---|---|---|
| Samsung SmartThings | REST + WebHook | OAuth2 | 1000 requests/day (free) |
| LG ThinQ | Unofficial libraries only | — | Unstable, requires middleware |
| Miele | REST | OAuth2 | 500 requests/day |
| Bosch/Siemens | REST | OAuth2 | 100 requests/day (trial) |
| Xiaomi Mi Home | UDP/cloud | MiToken | Device-dependent |
How to Obtain the Room Map from a Robot Vacuum?
Roborock is one of the most common. The official Roborock API appeared recently; before that we used reverse engineering via MiIO. The key feature for vacuums is the room map. The robot builds the map via SLAM and stores it on the device. To get the map: either a proprietary protocol (Roborock S7+: binary format with RLE compression) or via Home Assistant vacuum.send_command with get_map_data. Rendering the map on Flutter: decode binary blob into Uint8List, build a Picture via Canvas. Rooms are colored polygons. Robot position is an icon on top. Obstacles are dark pixels. We use CustomPainter with repaint: ValueNotifier<RobotState>. Starting a room-specific cleaning: POST /api/commands/vacuum/start_room with room ID from the map. The Roborock API passes room_ids as a list of int identifiers.
Step-by-Step Roborock API Integration
- Register in Roborock Developer and obtain client_id / client_secret.
- Install the
roborocklibrary for Dart or Python. - Check device availability via
vacuum.discover(). - Get the map via
vacuum.get_map_data(). - Decode binary data according to documentation.
- Render the map using
CustomPainter.
Monitoring Appliance Status
Washing machine: current program, remaining time, errors. Real-time is not needed — updating every 30–60 seconds is sufficient. Cycle completion notification — via WebHook or polling with status == "finished" check. On Flutter: Timer.periodic(Duration(seconds: 60), (t) => _fetchStatus()) until status != 'idle'. Once cycle ends — FCM push to user and stop timer. Refrigerator: compartment temperature, compressor, door opening (sensor in Samsung SmartThings capability: contactSensor). Push if door open longer than 2 minutes — on backend via Rule-based trigger.
Push Notification Method Comparison
| Method | Latency | Reliability | Complexity |
|---|---|---|---|
| WebHook | Instant | Network-dependent | Medium |
| Polling 30 sec | Up to 30 sec | High | Low |
Energy Monitoring
Smart plugs with power measurement (Shelly Plug S, Tapo P110) are an important component for appliances. Power in watts, total consumption in kWh. MQTT publish every 5–30 seconds. Display consumption: line chart via fl_chart (Flutter) or victory-native (React Native). Aggregation by hour/day/month on backend (PostgreSQL date_trunc). We don't pull raw data for the last 30 days into the app — only aggregates, saving up to 80% of traffic.
Experience and Guarantees
Our team has 5+ years of experience in IoT app development, delivering over 30 smart home projects. We guarantee stable integration via official APIs, and where none exist, we use proven open-source solutions with our own enhancements. Our engineers are Flutter-certified and familiar with App Store Review Guidelines (Sections 4.2/5.1) and Google Play rules. Get a project estimate — contact us for a consultation.
Sample Flutter Map Rendering Code
```dart @override Widget build(BuildContext context) { return CustomPaint( painter: MapPainter(robotState), child: Container(), ); } ```What's Included in the Work
- Analysis and architecture design of the app.
- Integration with selected brand APIs (up to 5 brands).
- Flutter app development with custom UI for Android and iOS.
- Backend setup (Node.js/Python) with microservices and MQTT broker.
- Push notification (FCM) and background updates.
- Testing on real devices and debugging.
- Deployment to App Store and Google Play (code signing, provisioning profile).
- Integration documentation and team training.
- Post-launch support (3 months bug warranty).
Typical Pitfalls
Appliance feedback can be unstable. Samsung SmartThings webhook may miss an event on unstable internet. Polling as fallback if no webhook event within >5 minutes is standard insurance. Home Connect API has a rate limit: 100 requests per day per device in trial mode. For production — request commercial access. REST APIs are easier to use than MQTT, but are 10x slower when polling 10 devices.
Timelines
One brand (e.g., Samsung SmartThings), basic monitoring and control — 4–6 weeks. Multi-brand, vacuum map, energy monitoring, automation — 3–5 months. Cost is calculated individually based on brand set and integration complexity. Request a preliminary estimate — we'll calculate within 1 day. Get a consultation for your project — contact us.







