Internet Of Things2023-Individual Assignment
Elective in Internet of Things Algorithms and Services
(A. A. 2022/2023)
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:
- 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. Identify a suitable sensor data prediction model.
- For each actuator you need to specify the conditions of activation given the input from the sensors.
- 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?
- Describe the data prediction model that best-fits the data collected from the sensor and analyze the expected savings in data compression and energy consumption.
- 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.
- 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.
- 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 an ESP32-based 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.
Algorithms
Implement the data prediction and energy savings algorithms that will be executed within the IoT Device.
Edge Analytics
Implement the data aggregation operators that will be executed within the IoT Device.
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 ESP32 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
- Create a hands-on step-by-step guide using the structure of these tutorials.
- Push your code and related files to the github repository.
- Post a blog entry in hackster.io
- Create and publish a video tutorial.
Collaborations between students and material on the internet
The above assignment is done by each student individually. Clearly you should discuss with other students of the course about the assignments. However, you must understand well your solutions, the code and the final write-up must be yours and written in isolation. In addition, even though you may discuss about how you could implement an algorithm, what type of libraries to use, and so on, the final code must be yours. You may also consult the internet for information, as long as it does not reveal the solution. If a question asks you to design and implement an algorithm for a problem, it's fine if you find information about how to resolve a problem with character encoding, for example, but it is not fine if you search for the code or the algorithm for the problem you are being asked. For the projects, you can talk with other students of the course about questions on the programming language, libraries, some API issue, and so on, but both the solutions and the programming must be yours. If we find out that you have violated the policy and you have copied in any way you will automatically fail. If you have any doubts about whether something is allowed or not, ask the instructor.