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

Published: August 1, 2023

14 min read

Last updated: December 8, 2023

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.


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.


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.

Read also:

How to Enable Google Fit, Apple’s HealthKit, and Other Services to Share Data with Your App

Building a successful fitness app is an ongoing process, and listening to user feedback and iterating based on their needs will be crucial to maintaining and growing your app's user base.

Developing a fitness app can be a great idea considering the increasing demand for health and fitness-related technologies.
(image by Yi Li)


#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.


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.


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.



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).



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.
These apps serve as a bridge between users and IoT devices, enabling seamless communication, data collection, and control over various connected devices and systems.

IoT (Internet of Things) app development involves creating software applications that interact with and control internet-connected devices and sensors.
(Image by Levi Wilson)


#4 Case Study

Among our clients, there is a company that manufactures a diverse range of fitness equipment, from cycling machines to rowing machines and treadmills. When they approached us to develop a Workout-App for their innovative line of fitness machines, we eagerly embraced the opportunity to create a transformative solution.



However, what seemed like a straightforward project soon turned into a perplexing puzzle. At the outset, we underestimated the risks associated with integrating BLE modules into our application. Our client provided us with information that the devices operated on a single protocol and furnished us with what they believed to be the correct protocol.

Yet, when we implemented it, we encountered a staggering reality - only a third of the devices were transmitting data correctly. To our dismay, it became apparent that the devices actually operated on not one, but three different protocols (and, considering certain variations, even four).

Faced with pressing deadlines and non-functional devices, our client's Chinese manufacturer adamantly insisted that all devices operated on a single protocol, leading to a circular debate that impeded progress.



Due to the tight deadlines we were facing, we decided to take two approaches to resolve the issue. Firstly, we requested our client to directly contact their Chinese manufacturers to obtain information about the protocols used in the devices.

At the same time, we initiated a Reverse Engineering process. Our goal was to analyze the Bluetooth data received from the devices and compare it with publicly available protocols. By testing and logging data from multiple devices and examining the correlation between button presses and Bluetooth commands, we were able to identify three distinct groups of devices, each using a different protocol. This process took weeks of dedicated testing and analysis to gain a comprehensive understanding of these protocols.

We took the unconventional route of "fitting" the protocols ourselves due to the external constraints we faced. Although manufacturers should have provided accurate integration protocols, our commitment to our client's success pushed us to explore alternative methods to deliver the desired results.

In the end, the Chinese manufacturer confirmed the existence of three protocols. Finally, we were able to update the application, ensuring full functionality across all devices.

Read also:

How to Create an App for Fitness Devices (FTMS, Fitshow, Delightech) in React Native


📱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.



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.



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.

Mobility app development refers to the creation of mobile applications that address various aspects of transportation, travel, and mobility.

Mobility apps have gained significant popularity in recent years due to the growing demand for seamless and efficient travel experiences.
(image by Faza Dzikrulloh)


#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.



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.



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.

Read also:

What Stormotion's Project Management Flow Looks Like


⚙️The Role of QA in Our Projects

Quality Assurance plays a crucial role in the software development process, especially in prototyping model in IoT, where it's essential to identify potential flaws early, occupying a significant 20% of the total development time at Stormotion. It involves a thorough testing process to identify any potential flaws or vulnerabilities that might have been overlooked during development.

At Stormotion, we prioritize the QA process to ensure the highest level of quality for our products. Our dedicated QA team works closely with developers and product owners to ensure that the software meets the customer's needs. Employing a combination of automated testing tools and manual analysis, our QA team meticulously examines the software to eliminate any errors.

Quality Assurance (QA) is a crucial and integral part of app development.

QA plays a vital role in ensuring that the final product meets high standards of quality, functionality, reliability, and user satisfaction.(image by Anna Magura)

To enhance user-friendliness and reliability, our QA team utilizes various techniques, including static and dynamic code analysis, automated test suites, defect management, performance testing, and usability testing. The QA team provides valuable feedback to developers, identifying areas that require improvement to deliver the best possible product.

Constant vigilance is maintained by our QA staff to identify any new issues promptly, allowing us to keep the software up to date and functioning flawlessly. By dedicating 20% of the development time to QA, we ensure that our products consistently meet the highest standards of quality and performance, leading to greater customer satisfaction and confidence in our solutions.

Read also:

How We Handle Quality Assurance (QA) in Stormotion


💡 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 Pietro Saccomani, Founder from [object Object]

They make the whole business work for us, and their improvements are fundamental to our operations. They’re reliable, honest, and willing to try new things that will help us. We appreciate how flexible and easygoing they are.

Pietro Saccomani, Founder