62 lines
3.7 KiB
Markdown
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
|
|
---
|
|
|
|
{: .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>
|