Internet Of Things2021-Assignment 1

Elective in Internet of Things

(A. A. 2020/2021)

First 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?
  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.

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.

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. 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.

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 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.