arcodev
EN
← Toate proiectele
05 Senzori multi-protocol, agregare cloud multi-tenant

IoT & Embedded

Monitorizare senzori LoRaWAN, BLE, Zigbee, WiFi pe Raspberry Pi. EventBus în stil MQTT, adaptere protocol pluggable, agregare cloud multi-tenant.

Raspberry PiFastAPIARQMQTT-style EventBus
IoT & Embedded — diagrama arhitecturală

05. IoT & Embedded

Sisteme IoT end-to-end: device-side pe Raspberry Pi cu suport multi-protocol (LoRaWAN, BLE, Zigbee, WiFi/MQTT, Modbus), cloud aggregator multi-tenant, notificări multi-canal pluggable.


5.1 Sistem IoT monitorizare senzori multi-protocol + cloud aggregator multi-tenant

Sector: IoT / Smart monitoring Format livrare: Pi-side service (headless + web local) + cloud companion (FastAPI + React 19) + Telegram Mini App

Provocare

Operator/integrator de senzori wireless (temperatură + umiditate) pentru monitorizare:

  • multiple Pi-uri în diverse locații (ferme, depozite, camere serverelor)
  • agregare centralizată de date pentru dashboards multi-locație
  • alerte realtime pe pragurile depășite (temperatura prea mare, umiditate scăzută)
  • canale de notificare flexibile per organizație (Telegram, Email, SMS, Push)
  • comenzi remote către Pi (restart sensor, schimbare prag, OTA)
  • multi-tenant (un operator poate avea multe organizații-clienti)

Provocare tehnică: integrarea simultană a mai multor protocoluri radio (LoRaWAN, BLE, Zigbee, WiFi/MQTT, Modbus) — fiecare cu un stack low-level diferit care necesită event-driven processing și abstractizare uniformă pentru servicii de business.

Soluție livrată

Componenta Pi-side (Python 3.11+) cu protocol adapters pluggable:

  • LoRaWAN: gateway integration cu network server (TTN sau privat) + decodare payload custom
  • BLE: scanner asincron prin bleak pentru advertising data (ex. senzori Minew MST01)
  • Zigbee: ControllerApplication via zigpy/bellows pentru sensori mesh
  • WiFi: broker MQTT (paho-mqtt sau Mosquitto) pentru senzori ESP32
  • Modbus/RS-485: pluggable adapter pentru sensori industriali
  • aiohttp pentru web dashboard local + serviciu headless
  • Clean Architecture completă: core (domain) → services (business) → adapters (infrastructure)
  • EventBus typed async pentru decuplare servicii (SensorReadingEvent → SensorService → AlertService → NotificationDispatcher)
  • Dependency Injection cu ServiceContainer (wire-up explicit într-un singur loc)
  • Pydantic v2 pentru validare end-to-end
  • Click CLI pentru comenzi (web, headless, debug)
  • SQLite pentru storage local
  • NotificationChannel protocol pluggable — orice canal nou (Telegram/Email/SMS/Push/X) se adaugă fără modificări în core

Componenta cloud (HiveCloud — FastAPI modular monolith):

  • SQLAlchemy async + asyncpg pentru PostgreSQL
  • Alembic pentru migrații
  • ARQ + Redis pentru background jobs (sync, alerts, aggregation)
  • argon2-cffi pentru hashing parole modern
  • pyotp + qrcode pentru 2FA TOTP
  • aiosmtplib pentru email transactional
  • JWT pentru users + API Keys pentru Pi devices (auth dual-layer)
  • Clean Architecture cu strict layering (api/pi_api → auth → services → core → adapters)

Frontend dashboard (React 19 + Vite 7):

  • TanStack Query pentru server state
  • shadcn/ui (radix-ui) + Tailwind 4 pentru componente
  • Recharts pentru grafice senzori (timeseries)
  • React Router 7 pentru navigare
  • Zustand pentru client state minimal

Telegram Mini App separat (Vite + TypeScript) pentru monitorizare on-the-go.

Stack tehnologic

Pi-side: Python 3.11+, protocol adapters multi-radio (LoRaWAN gateway, bleak pentru BLE, zigpy/bellows pentru Zigbee, paho-mqtt pentru WiFi, Modbus pluggable), aiohttp, Pydantic v2, Click CLI, uv, SQLite, Docker Cloud backend: FastAPI, Python 3.12+, SQLAlchemy async, asyncpg, Alembic, Pydantic v2, Redis + ARQ, argon2-cffi, pyotp + qrcode (2FA), aiosmtplib Cloud frontend: React 19, Vite 7, TanStack Query, shadcn/ui, Tailwind 4, React Router 7, Recharts, Zustand Telegram Mini App: Vite + TypeScript Notificări: Telegram Bot API, Email (SMTP), SMS gateway, Firebase Push (extensibil)

Livrabile cheie

  • Sistem IoT end-to-end funcțional pe Pi 5 cu suport simultan multi-protocol (LoRaWAN + BLE + Zigbee + WiFi)
  • Cloud aggregator multi-tenant cu dashboard modern React 19
  • 2FA TOTP cu QR enrollment
  • API keys pentru autentificare device-to-cloud (separate de JWT users)
  • Notification channel pluggable (poate adăuga orice canal nou fără modificări în core)
  • Telegram Mini App pentru consultare rapidă din mobile
  • Documentație de design completă (55 task-uri în 10 faze, TDD steps explicite)

5.2 BLE scanner pentru senzori LoRaWAN cu decodare protocol custom

Sector: IoT / BLE & LoRaWAN Format livrare: Python script + documentație protocol

Provocare

Decodare advertising data BLE de la senzori LoRaWAN proprietari (Minew MST01) pentru:

  • temperatură, umiditate, baterie
  • scan continuu sau punctual
  • timeout configurabil

Soluție livrată

Script Python single-file (scanner.py) cu decodare manuală a payload-ului BLE conform documentației producătorului. Suportă scan continuu, single scan, și scan cu durată configurabilă.

Stack tehnologic

Python 3, bleak (BLE async), parsare manuală binary payload conform spec-ului senzor.


Pattern-uri arhitecturale IoT demonstrate

  • Clean Architecture cu strict layering (api → auth → services → core → adapters) pe ambele componente (Pi + cloud)
  • EventBus typed async pentru decuplare componente fără cuplaj direct
  • NotificationChannel protocol pluggable (open/closed principle aplicat strict)
  • Dual-layer auth (JWT pentru users + API Keys pentru devices) — separare clară user vs device
  • Dependency Injection explicit (ServiceContainer wire-up într-un singur loc, fără magic)
  • 2FA TOTP cu pyotp + qrcode pentru enrollment user-friendly
  • Modular monolith cloud (nu microservicii prematur — încă un developer poate înțelege întreg sistemul)
  • Companion architecture: Pi-side autonom + cloud aggregator pentru multi-locație
  • Telegram Mini App ca al doilea client pentru flexibilitate mobile fără App Store overhead
  • Decodare protocol binary pentru hardware proprietar (BLE advertising LoRaWAN)

Discutăm proiectul tău

Răspundem în 24h lucrătoare. Apel scoping de 30 de minute, fără obligație.