Case Study for Java-based Environment Monitoring Stations
Environment Monitoring is becoming an increasingly pressing need for public and private institutions that need to control multiple pollution indicators within their territory.
Traditionally, environmental monitoring has relied on only a few large footprint reference equipment, which meant high upfront costs and maintenance costs. While being able to provide highly precise readings, those stations are only capable of providing infrequent measurements resulting in very sparse data in space and time.
Recently, a new class of environment monitoring stations has emerged to complement the reference systems. These stations, while more compact and affordable in price, offer a relatively high precision level at a high frequency data stream, down to minute-base flow rates. When massively deployed on the territory, these indicative stations enable a widespread monitoring. The large amount of data they collect feeds the mathematical models that track the dynamics of pollutants concentrations in urban areas.
Although these systems are great, building them presents great challenges to the embedded application developer:
- The huge amount of data collected from the sensor on the embedded board must often be pre-emptively processed and analyzed to unveil relevant events and correlation that are worth sending to the remote server. This means that communications has to be optimized or data streams rate have to be modified to save battery power based on the information on the consumption parameters provide.
- The possibility of an unstable cellular data connection requires careful management of local storage to preserve the data to be sent when communication is restored.
- These systems must be remotely managed and administered. It is essential to be able to access deployed systems remotely to perform diagnostics. As the application’s needs evolve, it is also critical to be able to upgrade the embedded application remotely.
- The response of air pollutant sensors to gas concentration may vary over time due to chemical modification, a phenomenon forcing periodic recalibration of the sensors. This is generally a serious maintenance issue that requires tearing off the environment monitoring systems and testing it in a laboratory. Since the system is placed in a similar artificial environment it undergoes a similar percentage changes in response to polluting agents. This can be exploited to solve the issue at the embedded software level: a unit accurately re-calibrated in a lab can be used to model the response change in all the homologous systems, thus defining the recalibration factors to be applied.
- Finally, given the unreliability and the costs of cellular data connection, special care needs to be devoted to the communication protocol of embedded applications, which rely on such links to connect the on board computer with the remote data center.
These challenges can be effectively addressed by a solution which relies at its foundation on Java and OSGi, leveraging event-based technologies for Java Embedded can result into a much more flexible and manageable design with regards to the filtering of the sensors data streams or computing running aggregates. This kind of system can be remotely managed through the Eclipse Kura framework, a Java and OSGi framework for embedded Internet of Things applications. Eclipse Kura, an open source project within the Eclipse IoT working group, provides the ability of remotely configure OSGi services through the MQ Telemetry Transport (MQTT) protocol, a publish-subscribe connectivity protocol optimized for the Internet of Things currently being standardized by OASIS.
By using real world solutions for environmental monitoring, the above technologies come together to offer the state of the art development environment for edge computing nodes in the IoT era. ReliaSens smart environment sensor, by Eurotech, which runs ESF Everyware Software Framework, Eurotech’s commercial distribution of Kura, is an example of real world solutions for environmental monitoring.