Waverley provided cross-platform mobile applications and web apps for Energy Management in a Solar Power System.
Holu Hou is a US-based provider of solar energy systems and energy storage, a company of technology experts and enthusiasts, eager to promote fuel-free and eco-friendly energy production, using renewable energy resources. Holu Hou serves industrial and commercial objects as well as private households. The company provides a full-service cycle from individual power system design, construction, and installation, through ongoing maintenance.
The Holu Hou company turned to Waverley for assistance building a Smart Control Cloud-based Center that would turn their Residential Energy System into a smart home solution. The software solution had to enable both company admins and regular system users to control and manage the status of solar panels and energy storage. The customer required a convenient, easy way to use applications that connect to the controller device, developed by Holu Hou.
Waverley’s team of software engineers developed several applications from scratch: an iOS and Android mobile application, a web app for admin functions, iOS and Android mobile apps, as well as a web application for users of the system. To develop the cross-platform mobile applications for Android and iOS, the Waverley team used Flutter – a UI development toolkit from Google written in the Dart programming language. For web applications, we used Angular for front-end and Node.JS with Nest.JS framework for back-end development.
The project development also relied heavily on Amazon Web Services with infrastructure setup, software deployment and build-up on Amazon. AWS IoT Core was used to set interactions between the customer’s controller device and the mobile and web applications. AWS Kinesis was employed for real-time processing of data from the controller device. Amazon Cognito was used to help synchronize user identification data across applications securely. DevOps activities also involved a number of AWS services (CodePipeline, CodeBuild, CodeCommit, CodeDeploy, CloudFormation). For the mobile app development CI/CD cycle, we chose Bitrise.
The customer’s system includes the solar panels, PV batteries (storage), an inverter, and the controller device. The solution we delivered includes 4 separate applications: 2 admin apps, a web app and a mobile iOS/Android app; and 2 user apps, also for both mobile and web. The corresponding mobile and web applications are designed to deliver the same functionality. All the applications communicate with the controller device through the Amazon IoT Core service. The controller device itself is connected to the solar panels, PV batteries, inverter, and the user’s home appliances–for example, a water heater or an AC unit, or an EV charger. The mobile and web software applications communicate with the controller, which has no local HMI(Human-Machine Interface) to manage the solar energy system and monitor the power load on the connected appliances.
The controller device and mobile and web applications can exchange data through a shared WiFi network or Bluetooth connection.
The admin and user applications are designed to have the same functionality for mobile and web platforms. The application’s load capacity is projected for around 10,000 users.
The Admin apps:
The User apps:
The main challenge of the project was to create fully functional and well-tested software in the absence of a connection with an actual controller device to provide real-life data and receive and process commands from the software. While the Waverley software development team was working on the web and mobile software, the controller device was in the active development phase on the client’s side. Our software engineers could only work with the available product documentation and requirements, which was insufficient given the scope of the product. As a result, our team took an active part in setting the strategy for the feature set development. In addition, our development team created an emulator software that could be programmed to reproduce the work of a physical controller device. They carefully studied the client’s documentation describing the work and functionality of the future controller and designed a data generator that produced life-like controller data and could process the signals sent by the software. This way, we were able to do software testing long before the client provided the connection with a real controller device.
Waverley provided Manual and Automated testing on this project. The types of testing we conducted include:
Instruments used include Postman for test automation, JMeter for load testing, Android Studio and Xcode for debugging, browser DevTools for log analysis, and Test Rails/Zefir for testing process management and documentation organization. We used Automation testing to run repetitive and scripted test cases, such as application load testing or new user creation, and manual testing for more specific test cases such as device ID format checkup. Overall, in the course of working on the project, we developed several hundred test cases, delivering 70-80% of test coverage for the product.
We implemented the project following the product development engagement model with the Waverley team taking full responsibility for the development process. Once the client provided us general and approximate product specifications and functional requirements, our tech leads conducted the specifications analysis. We then presented our recommendations on the best architectural approach and patterns, documented and visualized, and proposed a range of technical solutions, several of which the customer hadn’t included in their vision, for example, on data storage and data flows, or concrete use cases.
We followed the Scrum project management methodology; project flow was organized into classic two-week sprints, with daily team sync-ups, project documentation, efficient internal communication, and weekly demo meetings with the client. These demo meetings included discussion of project updates including progress reporting, addressing ongoing matters, handling change requests, and the presentation of new proposals.
Organizing smooth and permanent communication with the client was a mission-critical task for our Project Manager, as the Waverley software developers needed to work in close association with the client’s hardware developers who were working on the product in parallel with us. Each change and update done by the client’s team had an impact on our work on the software product we were developing. Concordance and uniformity was absolutely crucial for the process. Waverley’s Project Manager took care to communicate and ensured this simultaneous operation across the teams, providing smooth operation on the project.
The project is ongoing, Waverley’s been Holu Hou’s trusted software engineering partner since 2018. As a result of the first iteration, Waverley delivered 4 web and mobile applications to complement the customer’s smart home eco solution. The applications are designed to connect to the whole system via a home WiFi network or Bluetooth and enable the company’s administrators and system users to control the solar panels, batteries, inverter, and connected home appliances such as AC, water heater, or EV charging station through a simple and accessible user interface. To see the full customer review, please visit our profile
on Clutch.