Python für IoT: Fortgeschrittene Python‑Features auf Embedded Boards und vernetzten Geräten einsetzen.
Hands‑on mit MicroPython, CircuitPython und C‑Library‑Integration.
Sensoren, Aktuatoren, GPIO und Schnittstellen (UART, SPI, I²C) steuern.
Praktische Erfahrung sammeln durch ~70% Labs mit Deployment auf reale Boards.
Nutzen: Effiziente und zuverlässige IoT‑Prototypen und Embedded‑Lösungen bauen.
Für wen: gedacht für Personen mit Python‑Kenntnissen, die in IoT/Embedded einsteigen.
Mit Advanced‑Modulen zu Networking, Optimierung und sicheren IoT‑Deployments.
Curriculum
Modernes Python — kompakt und tief
- Data Model und Dunder-Protokoll; Context Manager und RAII-ähnliche Patterns
- Typing Essentials: typing, dataclasses, Protocols, TypedDict, Generics; Runtime vs. statische Checks
- Structural Pattern Matching (match/case) und wann es die Lesbarkeit erhöht
- Iterables/Iterators/Generators; generatorbasierte Coroutines vs. async/await
- Speicher-Basics für Speed: bytes/bytearray/memoryview; Copy vs. View
Async I/O & Concurrency für Systems
- asyncio Event Loop; Tasks, Cancellations, Timeouts; Backpressure und Queues
- Threads vs. Processes vs. Async — klug wählen; GIL-Implikationen
- Subprocess-Management; Piping und Log-Streaming
- AnyIO/Trio (Überblick) und Blocking-Code via Executor integrieren
- Lab: Async Serial→MQTT Bridge mit Retries und sauberem Shutdown
Binäres I/O, Parsing und Protokolle
- struct, array, ctypes; Endianness, Alignment und CRC-Patterns
- Framing-Strategien für UART/TCP (Length-Prefix, Delimiter, COBS/SLIP)
- Memory Mapping (mmap) und Zero-Copy Slices; Ringbuffer
- Lab: Binären Telemetrie-Frame parsen und CRC prüfen
Embedded- & IoT-Schnittstellen
- Serial (pyserial) und GPIO-Basics (Plattformhinweise); SPI/I2C — Überblick
- BLE mit bleak (Überblick) und MQTT mit paho-mqtt/httpx-websockets
- CAN mit python-can (Überblick) und Logging-Strategien auf Geräten
- SDKs und CLIs für Operatoren paketieren
Packaging & Dependency Management (modern)
- pyproject.toml (PEP 517/518/621); Build Backends (setuptools/hatchling)
- Editable Installs, Wheels, Versionierung; Constraints vs. Pins; pipx für Tools
- Virtuelle Umgebungen (venv) und Projektsisolierung; reproduzierbare Builds
- Lab: Treiber-Library paketieren und in internes Index publishen
Testing, Qualität und Zuverlässigkeit
- pytest Fixtures/parametrize; tmp_path, monkeypatch; Coverage-Grundlagen
- Hypothesis für Property-Based Tests; simples Fuzzing
- Statische Checks: mypy (relativ strikt), ruff/flake8, black; pre-commit Hooks
- Defensives Coding: Timeouts, Retries mit Jitter, Circuit Breakers (Skizze)
Performance & Profiling
- cProfile, Performance Counter, Sampling-Profiler; timeit-Fallstricke
- Vektorisierung mit numpy; wann numba oder Cython (Überblick)
- Async vs. Threads für I/O-bound Workloads; Batching und Buffering
- Lab: Telemetrie-Parser profilieren und Kopien vermeiden
C/C++-Interop und native Geschwindigkeit
- ctypes und cffi — Trade-offs; sichere Aufrufe nativer Libraries
- pybind11-Extensions (Design & ABI-Hinweise)
- Wheels für Linux/Windows/macOS bauen; manylinux und Cross-Compile — Basics
- Lab: kleine C-CRC-Funktion wrappen und gegen reines Python benchen
Networking und Messaging
- httpx/requests — Basics; asyncio streams vs. websockets
- MQTT QoS und Offline-Buffer; Reconnect-Strategien
- ZeroMQ (Überblick) und nanomsg-Patterns für Edge
- Lab: robuster Command-Channel über MQTT mit Backpressure
Optionale Module
Optional — MicroPython/CircuitPython und Edge-Deployment
- Kernlogik nach MicroPython portieren; Constraints und Tipps
- Firmware-Packaging und OTA-Strategie (konzeptionell)
Optional — Data & ML am Edge (Überblick)
- Kleine Modelle, Feature Extraction mit numpy/scikit-image
- On-Device Scheduling und Budget-orientiertes Inference
Kursablauf
- Part 1: 09:00–10:30
- Break: 10:30–10:45
- Part 2: 10:45–12:15
- Lunch break: 12:15–13:15
- Part 3: 13:15–15:15
- Break: 15:15–15:30
- Part 4: 15:30–17:30