JIoT Project

integrating IoT-related technologies into the Jolie language.


JIoT Project

The Jiot project is aimed at integrating IoT-related technologies into the Jolie language. The final goal is to provide easy-to-use and flexible communication abstractions to interconnect and make interact disparate IoT islands.

With Jolie, programmers can easily change the transport and application protocols to use for a given communication, even at runtime. In the context of the JIoT project, we integrate renowned IoT-related technologies like CoAP (possibly over UDP) and MQTT (possibly over TCP). In addition to application protocol support, JIoT extensions also provide support for both raw, JSON, and XML data transfer formats.

Papers and References
  • Gabbrielli, Maurizio; Giallorenzo, Saverio; Lanese, Ivan; Zingaro, Stefano Pio, A Language-based Approach for Interoperability of IoT Platforms in Proceedings of the 51st Hawaii International Conference on System Sciences, 2018, pp. 5697 - 5706. Refers to the alpha version of JIoT.
  • Gabbrielli, Maurizio; Giallorenzo, Saverio; Lanese, Ivan; Zingaro, Stefano Pio, Linguistic Abstractions for Interoperability of IoT Platforms submitted to Towards realizing future Web, mobile and IoT environments: Selected extended articles from HICSS and SAC. Refers to the version 1.2 of JIoT.

Installation

The final goal of the JIoT project is to integrate its extensions into the official release of the Jolie language. However, while we work towards an official merge, we provide below versioned, standalone installers of the Jolie interpreter integrating the JIoT extensions.

Jolie (and JIoT) requires Java to run. Make sure to have Java 8 or later installed before proceeding.

To install JIoT download one of the releases below, open a shell terminal, access the directory in which you downloaded the installer, and execute java -jar jiot-x.x.jar. The installer may need permissions to write in the directories in which you intend to install Jolie. Please refer to the Jolie website for troubleshooting and further information on the installation process.

Note that the examples for CoAP and MQTT shown in the paper only work in version alpha of the interpreter, since, after that version, operation specific configuration parameters confirmable and method were changed, respectively in messageType and messageCode. The alpha version is available in the previous release section below.

Current Release

Previous Release

Examples

Let us consider a scenario where a controller, programmed in Jolie, communicates with one of many thermostats in a home automation context. In the automation system, thermostats are accessible at the generic address "coap://thermostat/##" where "##" is a two-digit number representing the identifier of a specific device. Thermostats accept two interactions: a GET request on URI "coap://thermostat/##/getTemperature", that returns the current temperature sensed by the thermostat, and a POST request on URI "coap://thermostat/##/setTemperature", that sets the temperature of the HVAC system controlled by the thermostat.

We report below examples that model the described scenario in MQTT and CoAP (click on the related tabs to show the content).

Members

Università di Bologna

A list of known projects involving the usage of the JIoT interpreter is listed below:

Get the source code

JIoT is a fork of the Jolie language and is released under the GNU Lesser General Public License v3.0. The sources of the project are on Github.