Files
website/_posts/teaching/2018-10-15-IOT.md
Steffen Illium 55accd35b3
Some checks failed
Jekyll site CI / docker (push) Failing after 1m1s
merge finished
2025-05-26 12:28:41 +02:00

62 lines
3.7 KiB
Markdown

---
layout: single
title: "IoT Practical Exercise"
categories: teaching
tags: teaching iot mqtt python influxdb distributed-systems practical-course
excerpt: "Designed/taught IoT practical (MQTT, Python) for ~200 students."
header:
teaser: /assets/images/teaching/server.png
role: Practical Course Instructor/Designer
skills: Curriculum Design (Practical Exercise), IoT Protocols (MQTT), Time Series Databases (InfluxDB), Python Programming, Live Coding, Large Group Instruction
duration: Winter Semester 2018/19
---
![Server Icon](/assets/images/teaching/server.png){: .align-left style="padding:0.1em; width:5em" alt="Server/Network Icon"}
As part of the lecture **[Internet of Things (IoT): Devices, Connectivity, and Services](https://www.mobile.ifi.lmu.de/lehrveranstaltungen/iot-ws1819/)**, I was responsible for designing and conducting a practical programming exercise suitable for completion within one to two class sessions. This exercise targeted approximately 200 students during the Winter Semester 2018/19.
The goal was to provide hands-on experience with fundamental IoT communication patterns. The chosen approach involved:
* **Communication Protocol:** Implementing a typical publish/subscribe system using the **[MQTT](https://mqtt.org/)** protocol.
* **Data Persistence:** Storing simulated sensor data in an **[InfluxDB](https://www.influxdata.com/)** time-series database backend.
* **Sensor Simulation:** Generating high-frequency data streams to mimic real-world sensor behavior.
* **Implementation Language:** Requiring students to implement the entire pipeline from scratch using **[Python](https://www.python.org/)**. Foundational Python skills were covered in a [separate preparatory course](/teaching/Python/).
<center>
<img src="/assets/figures/iot_inflex_pipeline.png" alt="Diagram showing simulated sensors publishing via MQTT to a broker, which is subscribed to by an InfluxDB logger" style="max-width: 80%;">
<figcaption>Conceptual pipeline for the MQTT-InfluxDB practical exercise.</figcaption>
</center><br>
The exercise aimed to solidify theoretical concepts discussed in the main lecture by applying them in a practical, albeit simulated, IoT scenario.
<div class="container" style="margin-top: 1.5em;">
<div class="sidebar" style="float: right; width: 30%; border: 0.5px grey solid; padding: 15px; margin-left: 15px; box-sizing: border-box;">
<h4 style="margin-top: 0;">Associated Lecture Topics</h4>
<ul style="list-style: none; padding-left: 0; margin-bottom: 0; font-size: smaller;">
<li>Arduino and Raspberry Pi</li>
<li>Wearables & Ubiquitous Computing</li>
<li>Edge/Fog/Cloud Computing</li>
<li>Scalable Algorithms</li>
<li>Spatial Data Mining</li>
<li>Blockchain & Digital Consensus</li>
<li>Predictive Maintenance</li>
<li>Smart IoT Applications</li>
<li>Cyber Security</li>
<li>Web of Things</li>
<!-- Note: This list represents the broader lecture, not just the practical exercise -->
</ul>
</div>
<div class="main-content" style="float: left; width: calc(70% - 15px); box-sizing: border-box;">
<h4 style="margin-top: 0;">Practical Exercise Focus</h4>
The hands-on session concentrated specifically on:
<ul>
<li>Understanding the MQTT Publish/Subscribe pattern.</li>
<li>Implementing MQTT clients (publishers/subscribers) in Python.</li>
<li>Interfacing with InfluxDB for time-series data storage using Python libraries.</li>
<li>Simulating basic sensor data streams.</li>
<li>Integrating components into a functional pipeline.</li>
</ul>
This practical work provided direct experience related to the broader lecture themes of IoT connectivity, data handling, and application development.
</div>
<div style="clear: both;"></div>
</div>