Edocti Training
Python Avansat pentru IoT și Sisteme Embedded
Sesiuni programate
Începe:
07.09.2026
, 3 zile
€ 450
Înscrie-te
Abilități dobândite
MicroPython & CircuitPython
Async I/O & Concurență
Interfețe Hardware (UART/SPI)
Parsare Binară & Protocoale
Interoperabilitate C/C++
Deployment Edge & MQTT
Profiling de Performanță
Defensive Coding
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
- Partea 1: 09:00–10:30
- Pauză: 10:30–10:45
- Partea 2: 10:45–12:15
- Pauză de prânz: 12:15–13:15
- Partea 3: 13:15–15:15
- Pauză: 15:15–15:30
- Partea 4: 15:30–17:30