Internet Of Things2022-Individual Assignment

Elective in Internet of Things

(A. A. 2021/2022)

Individual Assignment

The goal of the assignment is to create a cloud-based IoT system that collects information from a set of environmental sensors and interacts with the environment using actuators following the 'Sense-Think-Act' paradigm. The IoT device will be developed using RIOT-OS while the cloud-based services will be based on the AWS cloud-based service ecosystem.

As part of the assignment we are interested in addressing the following points:

  1. What is the problem and why do you need IoT?
    • You need to identify an application scenario that you would like to address. What are you going to learn by monitoring the environment - which type of sensors will help you? How will you act into the environment and by what actuators?
    • Select at least two sensors and two actuators that are relevant and you will use in your prototype.
    • For each sensor you need to specify if periodic sensing is required or if it is event-driven.
    • For each actuator you need to specify the conditions of activation given the input from the sensors.
  2. What data are collected and by which sensors?
    • Given the sensors selected, identify the type of data collected by the specific sensor component by examining the manufacturer's datasheet. You need to report the accuracy of the component, the unit of measurement and the desired periodicity of the measurements.
    • Report the velocity, variability and variety of the data collected by your application.
    • Describe the data analysis that is required to transform the data collected from sensors. What kind of collective intelligence do you expect will emerge?
    • Given a narrow-band connectivity, the sensor data collected and the desired periodicity of measurements, what are the required data aggregation operations that need to be implemented at the edge of the network?
    • Examine the quality of the limitations of data analysis when conducted at the cloud and when conducted at the edge.
  3. What are the connected components, the protocols to connect them and the overall IoT architecture?
    • Provide a network diagram that includes all the devices and identifies the network and communication protocols used to interconnect them.
    • Identify the software components that make up your system both at IoT device level and at cloud level.
    • Provide a high-level architecture diagram that depicts the interdependencies of your software components.
  4. How do you measure the performance of the system?
    • Measure the end-to-end latency of the system. From the point the data are collected from the sensor up to the point they are integrated in the dashboard. When the data are aggregated at the cloud. When the data are aggregated at the sensor.
    • Measure the volume of data transmitted over the network. When the data are aggregated at the cloud. When the data are aggregated at the sensor.


Major System Components

IoT Device

Use the STM32 Nucleo F401RE board and the selected sensor and actuator components to realize a prototype IoT device. Use the RIOT operating system to develop the program that enables the collection of data from the sensors and controls the actuators.

Edge Analytics

Implement the data aggregation operators that will be executed within the IoT Device.

MQTT-SN broker

You need to set up an MQTT-SN broker where the RIOT-OS application will be publishing the sensor values over UDP/IPv6. One such broker is RSMB. Here is a tutorial on how to connect a RIOT-OS emulator over IPv6 to RSMB.

MQTT-SN/MQTT transparent bridge

You need to develop, using the programming language of your choice, an MQTT-SN/MQTT transparent bridge. The goal of the bridge is to subscribe to a predefined set of topics on the MQTT-SN broker (e.g., RSMB) and forward all messages received to the same topic on the MQTT broker that is controlled by the cloud-based backend (i.e., publish them to IoT Core).

Cloud-based IoT Backend

Use the AWS cloud-based service ecosystem to realize the backend elements of your system.

Cloud Analytics

Implement the data analytics that will be executed at the cloud.

Web-based Dashboard

Using your favourite programming language and web development libraries develop a web site that provides the following functionality:

  • Display the latest values received from all the sensors.
  • Display the aggregated values (e.g., average, minimum and maximum) for each sensor during the last hour.
  • Display the values received during the last hour from all sensors.
  • Control the state of the actuators.


Major Activities

System deployment

Using the STM Nucleo board you need to deploy your RIOT-OS application to demonstrate the overall operation of the system.

Performance Evaluation

Carry out all the necessary steps to evaluate the performance of the system and address the technical questions stated above.


What/How to submit

  • Create a GitHub repository where you will push all your code and scripts that are need to realize the above assignment.
  • Within the main README.md file you need to provide all the necessary technical details that address the questions stated above.
  • The GitHub repository should provide a hands-on walkthrough of the system, clearly explaining how to set up and run your system.
  • Create a Blog Post where you discuss the main findings of the individual assignment, focusing on the aspects of your choice.
  • Create a YouTube video with a 3-minute demonstration of your final system.


Bonus