The Magic Ball for Your Smart Home: How We Helped to Make it Happen
Today we will talk about one of the projects our team is proud to be a part of - Branto.
Branto is a system designed to take over the control of the home security monitoring, video-calling and managing smart household devices. It has a built-in high-resolution camera with 360-degree pan, stereo speakers, microphones, various sensors and other useful add-ons. Branto supports Wi-Fi, Bluetooth and ZigBee. All the features are incorporated in a sleek, sphere-shaped and high impact strong gadget.
However, the neat appearance is only the tip of the iceberg. The development of home automation system with such a wide-ranging remit requires a comprehensive software back-end and this is where our story begins.
Our company was not lucky enough to join Branto right in 2011 when the idea of this start-up emerged. We entered this project in April 2015, when the prototype as well as a part of software already existed. At that moment, the project owners had a lot of ideas which they were eager to implement but the primary task for us was to develop the main functionality and make it meet high quality standards.
Specifically, the features we were working on:
- video transmission,
- camera control,
- playing music on the ball.
The low-level development was performed on the client-side. Our responsibility was building webservice, iOS and Android applications.
When we received the project and investigated the existing code base, we found out that we were not able to re-use almost all what was delivered by the previous developers. The software for the ball was written on Python, which was not a programming language we specialized in. The set of initially utilized technologies was not optimal for the speed, device responsiveness and overall scalability of the system at the current stage. The mobile applications contained some elements which we were able to inherit but the Android app was not functioning yet. Besides, due to the innovative nature of the project there was no documentation for the hardware, and so we had to learn many things through trial and error. However, all the challenges only made the project even more interesting for us.
In the course of work, we have worked out a complete application architecture, the scheme of interaction between the ball, the mobile device and the server, entirely changed the technology of video and audio transmission. We have written an application for the ball, mobile applications for iOS and Android and application for the server.
Here is a brief list of technologies which we used to build this smart home software system:
- signal level - WebSocket;
- sending control commands and media - WebRTC;
- Android platform - application-server on the ball and Android client;
- iOS platform - iOS client;
- back-end stack - Scala, Play! framework, Slick, PostgreSQL.
Currently the active phase of the development is finished. We hope this awesome new gadget will be widely welcomed in the market and we are looking forward to continue our collaboration with the Branto team in the future.