IMKO Connect - Sensor Application
In the summer of 2023, I got the chance to work on a project unlike anything I had done before - one that combined mobile app development with direct hardware integration. The task was to build a mobile application that could establish a stable connection with high-precision moisture sensors developed by IMKO GmbH, a company known for their cutting-edge TRIME radar technology.
Their sensors are designed to measure moisture and other physical parameters in a variety of materials. The SONO series, in particular, is engineered for use in construction, hydrology and the food industry with the flexibility to adapt to nearly any type of bulk solid. From the moment I read the technical brief, I knew this would be a challenge but also a huge learning opportunity.
Diving In
We decided to build the app using React Native, since it was a technology we already had a solid foundation in. At first, things seemed straightforward. But soon, we hit our first major roadblock - the initial version of the sensor used Bluetooth 2.0, not BLE (Bluetooth Low Energy) and that changed everything.
There were no existing React Native libraries we could rely on, no open-source workarounds and no shortcuts. We realized the only path forward was to build a custom native module from scratch, optimized specifically for this hardware.
So we rolled up our sleeves and got to work. I was responsible for digging deep into Bluetooth 2.0 communication - something I had never touched before. I had to figure out how to manage device discovery, handle PIN-based authentication, maintain stable connections, and trigger measurements using low-level commands.
We ended up building a Java/Kotlin native module for Android and a Swift native module for iOS. It was intense. Every step brought new technical challenges, but each one also expanded my understanding of how hardware and software can work together.
How the App Works
Once the app is opened, it shows any previously paired devices and allows users to scan for new ones. After selecting a device and entering the correct PIN, the sensor connects and becomes ready for use.
Depending on the sensor ID, the app dynamically renders different layouts - because not all sensors have the same features. Users can trigger measurements manually or enable continuous mode, where readings are taken automatically at a set interval.
One of the most important features is calibration selection. Each material - whether it’s soil, grain or concrete - requires a unique configuration. The app allows users to select the appropriate calibration preset based on what they’re measuring.
All data is grouped into sessions, so users can organize their measurements by location or context - for example: garden, front yard, storage room, etc. Sessions can be exported as CSV files, making it easy to compare data across different time points and locations.
The app is designed with multilingual support in mind, making it accessible to users across different regions. It is currently available in English, German and Italian, with the ability to easily expand to additional languages in the future based on user needs and market demand. This ensures a more inclusive experience and allows users to interact with the app in their preferred language.
What’s Next
We're currently working on a new version of the app to support the latest generation of sensors with Bluetooth 4.0 and updated firmware. The next big feature? Users will be able to configure sensor settings directly from the app - no need for external desktop software. This includes modifying calibration parameters, conductivity and temperature coefficients, and other sensor configurations - all from their mobile device.
Final Thoughts
This project pushed me far beyond my comfort zone and that’s exactly why it was so valuable. It challenged me to explore low-level Bluetooth protocols, create custom native modules and understand how hardware and software interact in a real-world environment.
It wasn’t easy, but it was incredibly rewarding. I’m proud of what we built and even more excited about where this project and everything I learned from it will take me next.