Python pentru IoT: aplici funcționalități avansate Python pe plăci embedded și dispozitive conectate.
Hands‑on cu MicroPython, CircuitPython și integrare cu librării C.
Controlezi senzori, actuatori, GPIO și interfețe de comunicație (UART, SPI, I²C).
Dobândești experiență practică prin ~70% laboratoare cu aplicații pe plăci reale.
Cum te ajută: construiești prototipuri IoT eficiente și soluții embedded fiabile.
Cui i se adresează: conceput pentru persoane cu cunoștințe Python care intră în proiecte IoT/embedded.
Include module avansate despre networking, optimizare și deploy IoT securizat.
Curriculum
Bazele Python modern (rapid dar în profunzime)
- Data model și protocolul dunder; context managers și patternuri tip RAII
- Typing esențial: typing, dataclasses, Protocols, TypedDict, generics; verificări statice vs runtime
- Structural pattern matching (match/case) și când crește lizibilitatea
- Iterables/iterators/generators; corutine bazate pe generator vs async/await
- Baze de memorie pentru viteză: bytes/bytearray/memoryview; copy vs view
Async I/O & concurrency pentru systems
- Eveniment loop în asyncio; tasks, cancellations, timeouts; backpressure și cozi
- Threads vs processes vs async — alegerea corectă; implicațiile GIL
- Gestionarea subprocess; piping și streaming de loguri
- AnyIO/Trio (overview) și integrarea codului blocant cu executors
- Lab: punte async serial→MQTT cu retries și shutdown grațios
I/O binar, parsing și protocoale
- struct, array, ctypes; endianness, alignment și patternuri de CRC
- Strategii de framing pentru UART/TCP (length-prefix, delimiters, COBS/SLIP)
- Memory mapping (mmap) și zero-copy slices; ring buffers
- Lab: parse pentru un frame de telemetrie și validare CRC
Interfețe Embedded & IoT
- Serial (pyserial) și elemente de GPIO (note pe platforme); SPI/I2C — overview
- BLE cu bleak (overview) și MQTT cu paho-mqtt/httpx-websockets
- CAN cu python-can (overview) și strategii de logging pe device
- Împachetarea SDK-urilor și CLI-urilor pentru operatori
Packaging & managementul dependențelor (modern)
- pyproject.toml (PEP 517/518/621); build backends (setuptools/hatchling)
- Editable installs, wheels, versionare; constraints vs pins; pipx pentru unelte
- Mediu virtual (venv) și izolare pe proiect; builduri reproductibile
- Lab: împachetarea unei librării „driver” și publicare pe un index intern
Testare, calitate și robustețe
- pytest fixtures/parametrize; tmp_path, monkeypatch; elemente de coverage
- Hypothesis pentru property-based tests; fuzzing pe parsere simple
- Verificări statice: mypy (strict-ish), ruff/flake8, black; pre-commit hooks
- Defensive coding: timeouts, retries cu jitter, circuit breakers (schiță)
Performanță & profiling
- cProfile, contori de performanță, sampling profilers; capcane timeit
- Vectorizare cu numpy; când folosim numba sau Cython (overview)
- Async vs threads pentru I/O-bound; batching și buffering
- Lab: profilarea parserului de telemetrie și eliminarea copiilor inutile
Interop C/C++ și viteză nativă
- ctypes și cffi — compromisuri; apel în librării native în siguranță
- pybind11 pentru extensii (design & ABI)
- Construirea wheels pentru Linux/Windows/macOS; manylinux și cross-compile — elemente de bază
- Lab: wrap pentru o funcție C de CRC și benchmark vs Python pur
Networking și mesagerie
- httpx/requests — elemente; asyncio streams vs websockets
- MQTT QoS și buffer offline; strategii de reconectare
- ZeroMQ (overview) și patternuri nanomsg pentru edge
- Lab: canal de comenzi rezilient peste MQTT cu backpressure
Module opționale
Opțional — MicroPython/CircuitPython și deploy la edge
- Portarea logicii de bază în MicroPython; constrângeri și tips
- Împachetarea firmware-ului și strategia OTA (conceptual)
Opțional — Date & ML la edge (overview)
- Modele mici, feature extraction cu numpy/scikit-image
- Planificare pe device și inferență cu bugete stricte
Structura zilei de curs
- 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