Simplifying time management in IoT applications
In recent years, the emergence of the Internet of Things (IoT) has revolutionized our interaction with the physical world, enabling a new level of digital sensing and control. From refrigerators that can remind us to purchase milk, to watches that advise us to take breaks, IoT technology integrates into a wide array of devices, from household appliances to city-wide infrastructure systems, aiming to enhance connectivity, efficiency, and intelligence in our daily lives.
Now, working as a software engineer at a digital product studio for the past two years since transitioning from academia, I've observed a growing increase in IoT use cases within our portfolio. This trend has inspired me to look back on my PhD journey, which tackles the challenges of time management in IoT applications through novel middleware and programming language concepts.
Timeliness vs. Completeness
Imagine a manufacturing plant where sensors monitor the condition of critical machinery to predict when maintenance is needed. If the data from these sensors is delayed or incomplete, the plant could face unexpected downtime, leading to significant production losses and increased operational costs. This scenario highlights the critical balance that IoT application developers must maintain between getting data from these devices on time (timeliness) and ensuring that the data is complete and useful (completeness).
One of the first hurdles is deciding how long to wait for data from sensors. Wait too little, and you might not get the full picture; wait too long, and the information could be outdated. To tackle this, a large part of my research was spent on developing a middleware that monitors the underlying IoT infrastructure to automatically adjust this waiting period, ensuring that the data is both timely and complete, thus making devices more reliable and useful. An extensive evaluation on a real-world testbed (~ 100 IoT devices spread across three building floors) demonstrated how this middleware outperformed state-of-the-art, resulting in timeouts of a few seconds while missing less than 1% of sensor messages.
Data requirements vs battery life
Another challenge is managing how often sensors collect and send data. If they do it too frequently, their batteries will die quickly; but if they don't do it often enough, they might not collect enough data to be useful. It is impossible for application developers to know in advance how often sensors transmit their data to be optimal, because IoT networks are extremely dynamic. As a result, my research focused on developing a middleware that executes an adaptive sampling strategy to reconfigure at runtime sensor transmission rates, maximizing sensor battery lifetime while ensuring applications receive the required amount of data.
By exposing a REST API, the middleware enables application developers to specify the number of sensor messages that their applications require over a configurable time period. Given these application data constraints, the middleware then solves a constrained optimization problem to reconfigure each sensor with the slowest possible sampling rate, taking the limitations of the IoT network into account. Experiments on a real-world testbed showed that this middleware was able to extend sensor battery lifetime by 34% compared to state-of-the-art, while satisfying all application data constraints.
Programming extensions
Traditionally, programming for IoT applications has been complex and error-prone, especially when dealing with time-sensitive data as this results in a lot of boilerplate code that is duplicated throughout the application. Recent research explored the use of reactive programming as a strong candidate for IoT, as it provides powerful abstractions to develop event-driven applications. My research pushed these boundaries further by extending reactive programming with a suite of contextual operators that are associated with sensor messages of a given context, along with a novel operator to only combine messages that correspond to the same time window. The effectiveness of these extensions was demonstrated through the implementation of a swarm robotics use case, demonstrating a significant reduction in code size and complexity: at least a two-thirds decrease compared to implementations without these extensions.
Closing statement
I’ve always had the most fun when creating software that connects with the physical world. At first, dealing with the tight constraints of embedded systems was daunting—these are challenges we rarely face with general computing after all. Bridging this gap has always been at the center of my PhD research, as I explored new ways to make the development of IoT applications not just more accessible but also a more enjoyable journey for future developers, as we continue exploring the exciting possibilities of integrating software with the physical world. Reflecting on my past research contributions, I’m content having pushed that needle a little bit forward.
See also
Are you looking for an entrepreneurial digital partner? Reach out to hello@panenco.com or schedule a call