Ana içeriğe geç

Sistem Mimarisi

Zeus 2.0, dört ana katmandan oluşan dağıtık bir IoT platformudur.

Katmanlar

┌─────────────────────────────────────────────────────────────────┐
│ FRONTEND (Next.js 14) │
│ Dashboard, SLD Editörü, Alarm, Ölçüm, Rapor, Widget │
│ TanStack Query + Zustand + WebSocket │
└──────────────┬──────────────────────────┬───────────────────────┘
│ REST API (/api/*) │ WebSocket (/ws)
┌──────────────▼──────────────────────────▼───────────────────────┐
│ BACKEND (FastAPI) │
│ 29 Router, MQTT Subscriber, Celery Worker, Alarm Engine │
│ JWT Auth, RBAC, Multi-Tenant Isolation │
├────────┬────────────┬──────────┬──────────┬────────────────────┤
│ Postgres│ Redis │ EMQX │ MinIO │ Celery Beat │
│ TimescaleDB│ Cache/Queue│ MQTT Broker│ S3 Storage│ Scheduled Tasks │
└────────┴────────────┴─────┬────┴──────────┴────────────────────┘
│ MQTT (TLS 8883)
┌───────────────────────────▼─────────────────────────────────────┐
│ EMBEDDED (ESP32 Gateway) │
│ FreeRTOS Dual-Core: Network Task + Modbus Task + App Task │
│ Modbus RTU (RS485) → JSON → MQTT Publish │
├─────────────────────────────────────────────────────────────────┤
│ Fiziksel Cihazlar: Enerji Analizörü, İnverter, Kompanzasyon, │
│ MCCB, Akıllı Sayaç (Modbus RTU / RS485) │
└─────────────────────────────────────────────────────────────────┘

Uçtan Uca Veri Akışı

Modbus Cihaz ──RS485──→ ESP32 Gateway ──MQTT──→ EMQX Broker

Backend Subscriber

┌────────────────┼────────────────┐
▼ ▼ ▼
TimescaleDB Alarm Engine WebSocket
(Ölçüm kayıt) (Eşik kontrol) (Canlı UI)

Tipik E2E gecikme: ~200ms (Modbus poll → DB kayıt → UI güncelleme)

Docker Servisleri

Sistem 12 Docker container'ı ile çalışır:

ServisGöreviRAM
postgresTimescaleDB ile zaman serisi veri768 MB
redisCache ve Celery kuyruk128 MB
emqxMQTT broker (TCP + TLS)384 MB
backendFastAPI API sunucusu512 MB
frontendNext.js web uygulaması256 MB
modbus-pollerModbus TCP polling daemon128 MB
celery-workerArka plan görevleri (OTA, alarm)256 MB
celery-beatPeriyodik görev zamanlayıcı128 MB
minioS3-uyumlu firmware depolama256 MB
nginxHTTPS reverse proxy64 MB
certbotLet's Encrypt sertifika yenileme
autohealSağlıksız container yeniden başlatma64 MB

Toplam RAM: ~3 GB

Multi-Tenant İzolasyon

Zeus 2.0 her katmanda kiracı izolasyonu sağlar:

  • API katmanı: Her endpoint tenant_id dependency ile korunur
  • Veritabanı: Tüm sorgularda WHERE tenant_id = :tid filtresi
  • MQTT: Topic'lerde tenant/{tid}/ prefix'i zorunlu
  • WebSocket: Kiracı bazlı odalar (TenantRoom)
  • RBAC: 58 granüler izin, 3 önceden tanımlı rol (Admin: 56, Operator: 27, Viewer: 13)