4,000 hours/200 weeks (ongoing)
Agile (Scrum), Time and Materials (T&M)
A smart home startup based in Western Europe created a retrofit IoT kit for curtain rods and tracks.
The smart curtains solution, which is operated via a dedicated mobile app, sets curtains in motion by winding and unwinding a rope attached to it.
Using the smart controller, homeowners can open and close curtains based on a custom schedule or the intensity of natural light and group devices within the same household.
Another handy feature is holiday mode: when a user is away, there is a possibility of configuring the motorized smart curtains to open and close at random times within a specified range, creating an illusion someone is home.
The smart curtains system also incorporates a web-based admin console, enabling the client to configure and troubleshoot devices and enforce over-the-air (OTA) firmware updates. With this web application, end users can also invite family members to join the household or remove user accounts.
The client initially tapped into our IoT software development services to create a back-end infrastructure and admin console for the IoT device orchestration. Should the original project scope have remained intact, this smart home case study would have been another story altogether.
But our deep expertise, strong work ethic, and unmatched flexibility lead to the client tasking us with developing firmware, a flashing station, and a cross-platform mobile application for the automated smart curtains.
The smart curtains system features three major components: physical devices with custom firmware, a cross-platform mobile application, and back-end infrastructure based on AWS IoT Core
From ensuring remote quality control at the hardware manufacturing facility to reducing cloud infrastructure costs, there’s a number of challenges we solved when developing bringing the smart curtain solution concept to life.
Our client chose Mongoose OS as the primary operating system for the low-power, low-memory smart curtain control devices.
The OS contained a documented bug, which, although patched, affected the device performance. When the controller simultaneously received two commands — i.e., change the smart curtains’ position and report its location to the server — the operating system randomly performed just one of them.
The issue became prominent as the automated smart curtains user base was growing. To override it without changing the OS’s core functionality, we implemented a Go-written API, creating a command queue for every device within the ecosystem.
One of this smart home case study’s most challenging parts was to ensure impeccable smart curtains system performance without laying our hands on physical devices.
The client contracted a Chinese hardware manufacturing company to produce the curtain controllers. Based in Eastern Europe, the Expanice team had to connect to the IoT devices remotely. Because of the firewall, the factory could not guarantee a stable internet connection. This complicated the firmware flashing and device testing process and prevented us from timely spotting mistakes made by the factory workers.
To validate that flawed devices will not reach end users, we created a flashing station that allows non-technical workers to upload a firmware image to the smart curtains controllers by hitting a single button.
The station produces detailed logs documenting every operation performed to the device and automatically synchronizes with the cloud once the internet is available. The system also helps upgrade devices to the latest firmware version, which is done asynchronously once we upload a new build to the cloud.
The custom-built flashing station is instrumental in detecting faulty devices and motors, too. Occasionally, the motors that set the motorized smart curtains in motion fail after several thousand open/close cycles. To avoid that scenario, we randomly select devices for extensive testing, performing up to ten thousand cycles and reviewing device status logs.
When working on the smart curtains system architecture, we took the steps to optimize infrastructure expenses should our client’s user base grow. For this, our cloud engineers programmed the solution to use spot instances (AWS EC2) rather than ordinary ones. We further set up an automatic deployment mechanism transferring the infrastructure to vacant AWS instances in mere minutes.
Additional cost savings come from smart curtains device status data caching enabled through Amazon ElastiCache. By configuring the system to send status data to the cloud every two hours, the Expanice team helped the customer reduce AWS infrastructure expenses by 66%.
The Expanice team continues working on the smart curtain solution, enabling new features and helping the client deliver superior user experience to the growing user base.
As of December 2022, we’re working on the firmware updates, addressing the technical debt and introducing new features, such as local mode. Our client has also expressed the desire to sync the smart curtains with HomeKit, which could open new market opportunities for the IoT solution.
If you’re wondering how to build a smart curtain mover from the ground up or struggling with another smart home project, get in touch with the Expanice team! As an IoT company with 13+ years of experience, we know how to navigate most custom IoT product development challenges and build the Internet of Things solutions on time, on budget, and in line with your technical and business requirements.