As the sales of electric vehicles grow exponentially, creating adequate charging stations is still a challenge. Installing a fixed infrastructure at scale offers up a number of challenges.
FreeWire Technologies builds mobile power solutions that meet customers’ growing needs for rapid, cost-efficient power. FreeWire‘s Mobi Gen product line offers clean and quiet on-site power to substitute or supplement the use of diesel generators for a variety of remote power needs.
FreeWire’s Mobi charger fleets deliver charging solutions to varied environments and geographies. To manage the servicing and management of the fleet operations, we developed a software solution on the cloud. The solution provides data to measure the success of campaigns by tracking increased energy usage in new verticals and quantifying sustainability benefits.
Backed by British Petroleum (BP) and Volvo, FreeWire has raised over $20 Million to deliver clean and quiet mobile power and fast charging that’s readily available and easy to deploy. FreeWire is building a platform powered by powerful software and innovative hardware.
Our engagement with FreeWire started during the early days when they were mentored by Steve Blank (Advisory Board Member) to do customer development. We worked closely with the team to build initial prototypes. We went through several quick iterations using Agile sprints to validate charging-as-a-service as a viable alternative to traditional purchase models for electric vehicle charging stations.
A relationship that started with building MVPs and prototypes slowly turned into a full fledged team extension and long term tech partnership. By working closely with the CIO and hardware teams, we have now become the proud software team driving FreeWire’s hardware business.
FreeWire’s EV mobile charging solutions are used by companies like Walmart, Uber, Volvo, Linkedin, and BellEnergy. FreeWire’s staggering growth is a proof of the powerful technology stack powering their business. FreeWire is now venturing into charging Power tools as a viable alternative to Diesel generators.
FreeWire’s mobile charging devices are connected via gateways over cloud IoT and can be managed from the back office. The cloud based web solution powers the entire back office operations, fleet management, power delivery servicing, personnel management, and fleet maintenance.
We worked with the hardware team to integrate chargers with a cloud solution using Azure and AWS IoT allowing them to get device health status, delivery performance reports, and usage statistics.
The cloud infrastructure had to ensure that billing, charging requests, and charging service delivery are always up. The acceptable downtime calculation for these services was less than 1 minute per week.
And with planned operations across 250 cities with each of these mobile charging stations pushing 1GB/per data - we had to be inventive about how we architected the database. Everything was driven with design patterns, clean implementations to avoid costly and time consuming app modifications.
When connecting large scale Mobi charging fleet to cloud, the biggest challenge was to process millions of data points a day. This stream of data from IoT devices needs to be processed to create the right insight to improve power delivery and performance.
We followed a microservice design, supported by streaming services and message queues for cloud performance under heavy loads. To handle data at this scale, we went with polyglot database design, where we used the best possible fit for a specific data/microservice type.
Each Microservice talks with each other, as well as mobile and web apps. Services are run over different containers with consistent configurations scalably. To handle extremely large volumes of data, we used a combination of SQL and NoSQL database architecture.
These easy to use mobile apps serve Freewire charging partners and FreeWire customers alike.
Customers can request concierged charging services, schedule charge times, and charge on-demand on FreeWire’s charger networks.
Customers can also manage payments and talk with customer success managers.
Freewire’s growth was extremely dependent on the quality of service they delivered. The apps that work at FreeWire’s scale tends to grow complex both in terms of functionality and code dependencies. Mobile apps had to be lightweight, responsive, and with great UX.
Therefore, right from the start we had clean architectures implemented with MVVM on Android and MVP on iOS. Without this, it would have been impossible for Freewire to deliver app performance and add features quickly.
The app has more than 100 high level components, meaning that a lot of them are going to consume RAM at the same time. Improperly structuring these elements could lead to elements being called unnecessarily, which could increase RAM consumption exponentially.
This needed to be improved, so, working with our UX team, we realized that we had components that we would be using across multiple screens. For example, the charging, billing, charging request screens. We would utilize a map element in the background that would remain a shared component across screens.
Our solution was to craft a hierarchical structure for iOS and Android apps. That way, we not only stopped elements from unnecessarily consuming mobile’s RAM, but also ensured that we properly defined behavior of components that are going to be used in multiple places.
Customer experience can be significantly improved if users can mark a location faster. Although, looking at the way raw GPS data fluctuates, we knew it was going to be a challenge. However, giving the user the closest possible pin to mark location was going to be the NPS booster that Freewire needed.
A model was created that increased the likelihood of a marked location based on the satellite’s signal-to-noise ratio. We saw some improvements, but they were still not as good as we’d hoped.
Then, when our mobile development team integrated particle filters with a position’s overall likelihood model, the GPS locations stopped bouncing from a few blocks to a few inches. This helped Freewire users be able to request the charge with just one hand.
FreeWire’s staff apps needed a completely different approach to development and design. Under rush-hour, an operator could receive as many as 50 charge requests simultaneously. If they are chatting with a customer, or adding a note to a service they just delivered, 50 requests could reduce the performance of the entire app and can even crash it.
If one process pushed information more frequently than the other, it creates a huge buffer in the app. Which also means Freewire’s app would end up consuming a lot more system resources (RAM). To tackle this, we optimized cache size and had operators that seamlessly buffered.
For Freewire, if a bad app build was shipped to a customer, it would result in bad customer experience until the next update, so we had to avoid this from happening at all costs.
At Simform we implemented automated app delivery flows that pushed new changes, upgrades, and patches to app stores daily. Whenever a developer submitted a code, it goes through a series of automated and manual quality checks. After passing through these requirements it is safely merged with Freewire’s live apps.