Case Study: How We Solve Technical Challenges for Our IoT, Mobility, and Fitness Clients

Published: December 8, 2023

14 min read

At Stormotion, we are incredibly proud of our growth path and expertise in the dynamic areas of IoT, Mobility and Fitness. Over the years, we have gained invaluable experience working together with our clients to overcome challenges and provide solutions that provide seamless support to our clients, ensuring that their projects are completed on time and stand out in a competitive market.

In this article, we want to share with you our experience and ideas in creating projects in the field of IoT, Mobility and Fitness.

 
 

💪 Building a Strong Expertise in Fitness Solutions

In this section, we will tell you about our achievements in developing an application for the Fitness industry. Let’s start!

 

#1 Case Study

One of our clients, a long-standing partner, recently acquired its French competitor, bestowing upon us the pivotal role of supporting their application and seamlessly integrating the new addition into their ecosystem.

Beyond the application itself, we faced the critical task of maintaining and advancing the middleware responsible for aggregating fitness data from diverse services: Apple Health, Garmin, Google Fit, and more. This middleware served as the lifeblood of their fitness solution, capturing essential metrics such as steps, cycling distances, and calories, propelling users toward their fitness goals.

Challenge

The project presented a daunting challenge; it was written in Scala, a technology unfamiliar to our team, leaving us grappling with support issues. Furthermore, the previous development team had disbanded, leaving us with sporadic assistance from a lone developer.

Complicating matters further, time was of the essence as our client had inked a significant contract with a prominent French bank, demanding immediate restoration of the module's functionality.

Solution

In order to solve this problem, we decided to rewrite the entire module using our JS stack, thereby enabling future support and growth. Leveraging the power of Node.JS, we meticulously replicated the existing product's API protocol, ensuring seamless integration into the ecosystem.

Also, we harnessed the potential of the revitalized middleware, elevating it into an independent product designed to gather fitness metrics, not only for our client but also for a broader audience.

 

#2 Case Study

Another long-standing client approached us with a new project - a Stair Climbing Machine that required an Android application to fully control its functionalities via Serial-Port.

Challenge

In this project, our task was further complicated by unforeseen risks associated with the hardware, as the giant 3-meter (with a person) and 230-kilogram (without a person) staircase lift presented challenges not only during development but also in terms of storage and transportation.

Solution

We began the development process by creating a Dummy App, the sole purpose of which was to validate the protocol's correctness. After approximately one sprint of development, we completed the Dummy App and realized that the data received was still not entirely accurate, not adhering to the specified protocol, and some functionalities were not working.

We promptly contacted the Chinese contractor of the client and explained the issue. During the call, all participants understood that an incorrect protocol had been provided to us. After receiving the new, correct protocol, we resumed our work.

Furthermore, the simulator provided to us did not meet the promised specifications; it was not a production unit. The display characteristics differed significantly, as we received a test display with entirely different dimensions and other components. The dimensions of certain parts also varied between the simulator and the actual units, for instance, the sizes of steps and the number of physical controllers were different. Additionally, we discovered that the display used an outdated version of Android (and not the stock Android).

To address these challenges, we had to develop not just a simple application but a custom shell specifically tailored for this unit (and that specific version of the operating system). We also had to adapt our application to work seamlessly with this unique combination of hardware and OS, which required extensive efforts to optimize its performance. Moreover, considering the project's nature, we incorporated OTA (Over-The-Air) capabilities to facilitate ongoing support and development even after delivering the units to the client.

 
 

💻 Our IoT Application Development Experience

 

#3 Case Study

Stormotion is currently working on a branded application that connects to smart batteries via Bluetooth. The app allows users to access essential battery information like charge levels and remaining runtime, ensuring a user-friendly experience. Our client sells these smart batteries, which are manufactured by a Chinese factory.

 

Challenge

In the realm of smart battery sales, our valued client was confronted with a major predicament. Collaborating with a separate Chinese factory for battery production, they faced an influx of subpar batteries riddled with defects. At the core of the issue was the Bluetooth-enabled Battery Management System (BMS) that churned out erroneous metrics, leading to user frustration and inundation of support requests from distressed customers.

The culprits behind the flawed batteries were manifold:

  • Erroneous firmware protocols (the classic case of promises made, but a different reality delivered), causing compatibility issues with our application across different battery variants.
  • Lack of backward compatibility in firmware protocols (version 1.2 not functioning with version 1.1 batteries), leading to a fragmented system without a unified protocol supporting all batteries.
  • Faulty firmware logic (BMS reporting a plethora of incorrect values, like SoC > 100% or misrepresenting charging as discharging).
  • Absence of wireless firmware updates (though they purportedly existed, they remained unusable in practice).
  • Poor hardware quality (with nearly a quarter of thermometers damaged even before the batteries reached the clients).

 

Solution

In the face of these daunting challenges, our expertise came to the forefront, and we took decisive action:

  • Intensive stress-testing of the hardware to reverse engineer the workings of different BMS versions, enabling us to discern the discrepancies in requests and responses (owing to limited documentation).
  • Crafting a sophisticated shared logic capable of handling multiple heterogeneous protocols on the client's devices. Our application adeptly communicated across multiple protocols, autonomously detecting versions, and processing data accordingly—a monumental breakthrough.
  • Implementing a plethora of workarounds to camouflage the BMS's flawed output. For instance, identifying and ignoring erroneous warnings spammed by the BMS, safeguarding users from unnecessary alerts.
  • In collaboration with the Chinese partners, formulating a comprehensive plan to update the firmware of already sold batteries. Their adaptation of scripts for the older firmware version on their end facilitated a seamless update flow via our branded application through BLE (Bluetooth Low Energy).
  • Sharing our knowledge with another contractor of the client, enabling them to apply our shared logic to their IoT devices collecting metrics from the batteries.

 
 

📱Mobility Solutions

 

#5 Case Study

At Stormotion, we pride ourselves on delivering tailored software solutions that address our clients' unique needs. One such partnership involves collaborating with a company specializing in truck charging stations with branded payment terminals.

Our team was specifically responsible for developing the software to control these terminals.

 

Problem

Given the hardware-specific nature of this project, it came as no surprise that a typical set of challenges lay ahead. First and foremost, testing posed a significant hurdle as precisely replicating the required environment was nearly impossible. Despite our best efforts to approximate it, there remained a risk of overlooking critical issues in the production environment.

Secondly, updates posed a dilemma. With no physical access to the devices post-launch, releasing new versions and promptly addressing bugs became a logistical challenge. Additionally, we had to forego the conventional approach of developing for the latest Android platform. Instead, we had to design the application for a specific, outdated Android version that might not support popular libraries and various SDKs.

Moreover, we confronted UX-related hurdles as the software's end-users - truck drivers - were not tech-savvy individuals. Our utmost priority was to create an intuitively simple user experience that would empower seamless interaction with the terminals. Compounded by the limited screen real estate (3.5", 320 x 480 pixels) on the terminal, arranging content to optimize readability presented an additional challenge.

 

Solution

First and foremost, we prioritized remote updates. Implementing this crucial functionality allowed us to maintain support and seamlessly upgrade the system even after the terminals were deployed in the field. Remote updates would be facilitated through the hardware vendor, providing us with the assurance of continued adaptability and evolution.

To minimize external dependencies and mitigate the risk of component deprecation, we made strategic decisions to reduce reliance on third-party libraries and SDKs, thereby ensuring greater control over the system's stability and longevity.

Concerning design, simplicity became our guiding principle. We streamlined the application to just three screens, ensuring a user-friendly experience that minimized complexity. Action buttons and content elements were kept to a minimum, further enhancing usability and ensuring truck drivers could interact effortlessly with the terminals.

The challenge of fonts loomed large, given the client's brand guidelines that favored serif fonts, which posed readability issues on low-resolution screens. We rose to this challenge by conducting a careful search for an alternative font that harmoniously aligned with the client's corporate identity while preserving readability.

 

#6 Case Study

Once, a client approached us with a vision to develop a program with motion recognition capabilities using camera analysis based on ML. The primary goal of this application was to track users' movements during simple physical exercises and ensure they adhered to the correct form and repetition count.

 

Problem

The foundation of the application was built on React Native, providing a dynamic and cross-platform framework. However, the client sought to integrate an existing Python-based motion recognition module, which necessitated transpilation to Kotlin and Swift. The decision to port the logic natively stemmed from the desire to enhance performance and responsiveness.

Yet, integrating the native module with the React Native application posed a unique set of challenges. The project called for an exceptional blend of expertise, merging diverse technologies cohesively.

 

Solution

To solve this difficult problem, our team formulated an ingenious solution: the development of separate RN Bridges for iOS and Android. These bridges served as the gateway, allowing seamless integration between the native modules and the React Native application. By leveraging React Native, the project reaped the benefits of cost-effectiveness and cross-platform compatibility. At the same time, shifting critical motion recognition logic to the native side elevated the application's performance and responsiveness.

 
 

🗃️ Ensuring Successful Project Delivery

At Stormotion, we employ a comprehensive approach to ensure successful project delivery, encompassing four crucial phases: Project Initiation & Planning, Project Executing, Project Controlling, and Project Closing. Our focus remains on delivering high-quality products that meet and exceed our clients' expectations. Below, we outline how each phase contributes to our commitment to successful project delivery:

  1. Project Initiation & Planning

In this phase, we lay the foundation for a successful project by carefully defining key values and goals. We collaborate closely with our clients to understand their unique requirements and expectations. Our team predicts potential challenges and questions that may arise during the project, which allows us to plan effectively and mitigate risks.

  1. Project Executing

Guided by Agile Project Management methodologies, such as the Scrum framework, we ensure a dynamic and iterative development process. The project is divided into distinct events, including sprints, sprint planning, daily meetings, demo, and retrospectives. This Agile approach enables us to adapt quickly to changing circumstances and prioritize tasks based on client feedback and evolving project needs.

  1. Project Controlling

Our emphasis on project control guarantees that we remain on track to meet project objectives. We continuously monitor and manage time, ensuring that each task is allocated the appropriate amount of time and resources. Our experienced project managers diligently track task assignments, progress, and priorities to maintain project momentum and ensure efficient utilization of resources.

Capacity planning is integral to optimizing project efficiency. By understanding team members' strengths and workloads, we align resources to deliver maximum productivity and minimize bottlenecks. Quality control measures are deeply ingrained in our processes, ensuring that the final product meets and exceeds the desired quality standards.

  1. Project Closing

As we approach project completion, thorough final checks are performed to ensure all requirements have been met. We actively seek feedback from the client and iterate on the product based on their input, further solidifying our commitment to client satisfaction. Only after receiving the client's final approval do we proceed to release the product.

In conclusion, at Stormotion, we pride ourselves on delivering successful projects to our clients. Our approach coupled with Agile methodologies, allows us to adapt to evolving project needs while maintaining strict control over time, tasks, capacity, and quality. We continuously strive to exceed client expectations, ensuring that our products not only meet the desired standards but also provide exceptional value and innovation.

 
 

💡 Takeaways

So we hope you've found our experience in IoT, fitness and mobility app development interesting and informative. As a company, we take immense pride in our expertise and the diverse challenges we have successfully tackled in these rapidly evolving industries.

If you are looking for assistance in developing your next app or have a unique project idea, we would be thrilled to collaborate with you. Our team is dedicated to delivering top-notch solutions that align with your vision and surpass your expectations.

Let's build something remarkable together!

Contact us

Read also

How can we help you?

Our clients say

Stormotion client Alexander Wolff, CPO from [object Object]

When I was working with Stormotion, I forgot they were an external agency. They put such effort into my product it might as well have been their own. I’ve never worked with such a client-focused company before.

Alexander Wolff, CPO

Sjut