Edocti
Training tehnic avansat pentru inginerul software de mâine
Edocti Training

Python avansat — Patterns practice pentru Systems, Embedded & IoT

Avansat
21 h
4.8 (237 recenzii)
Python avansat — Patterns practice pentru Systems, Embedded & IoT

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