Asynchronous Monad for Reactive IoT Programming
Many industrial IoT applications process sensor data over distributed networks to monitor devices in real-time. Since the sensor telemetries are transmitted over networks as events, imperative and event-driven programs are often used to handle IoT data. However, the inverted control flow and shared global states of these imperative programs make them difficult to interface with synchronized computation on IoT data. This problem is further complicated for high-frequency data such as electric signals, which may require dynamic adjustment to data sampling rate to operate under the constraints of network and system.
In this paper, we propose a push-pull reactive programming model for IoT application to address this challenge. This model uses push-streams for asynchronous computation such as data capturing and user controls, and uses pull streams for synchronized computation such as data analysis. This model is simpler than push-based models by avoiding the complexity of glitch prevention through re-sampling in pull-streams. It is also more flexible than pull-based models by allowing dynamic adjustment of the sampling rate to maintain real-time speed of the IoT computation. The push-stream has a monadic interface, which converts to a pull stream through buffering. A pull stream converts to a push-stream when driven by a clock. The dynamic switching of our streams is based on a monadic abstraction called AsyncM that uses continuation passing style, and a form of cancellation token for asynchronous control. Our model is simple and can use threads or event callbacks for concurrency.
|Asynchronous Monad for Reactive IoT Programming (Monadic_RP--v3.pdf)||619KiB|
Mon 16 Nov Times are displayed in time zone: Central Time (US & Canada) change
|11:00 - 11:40|
|Asynchronous Monad for Reactive IoT Programming|
Tian ZhaoUniversity of Wisconsin-Milwaukee, Adam BergerUniversity of Wisconsin -- Milwaukee, Yonglun LiUniversity of Wisconsin -- MilwaukeeFile Attached
|11:40 - 12:20|
|The essence of live coding: Change the program, keep the state!|
Manuel Bärenzsonnen eServices GmbH