Skip to content

andreapede/QueueManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

44 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Queue Manager System

Sistema avanzato di gestione coda per ufficio con supporto fisico (Raspberry Pi), interfaccia web e statistiche complete.

🎯 Panoramica

Sistema completo per la gestione intelligente dell'accesso ad un ufficio attraverso:

πŸš€ FunzionalitΓ  Principali

  • Accesso Multiplo: Pulsante fisico diretto e sistema prenotazioni web
  • Rilevamento Intelligente: Sensori PIR e ultrasonico con gestione conflitti
  • Gestione Coda Persistente: Database SQLite con recupero automatico dopo riavvio
  • Dashboard Amministrativa: Controllo completo con statistiche dettagliate
  • Notifiche Real-time: WebSocket + opzionalmente Pushover
  • Sistema Resiliente: Auto-recovery dopo interruzioni impreviste
  • Analytics Avanzate: Statistiche complete su utilizzo, no-show, metodi accesso

πŸ“Š Statistiche & Analytics

  • Occupazioni: Totali, durata media, tempo utilizzo
  • Metodi Accesso: Differenziazione tra accesso diretto (pulsante) e web booking
  • AffidabilitΓ : Tasso successo, no-show tracking, efficienza sistema
  • Code: Dimensione massima, tempi attesa, pattern utilizzo
  • Trends: Analisi orarie, giornaliere, settimanali, mensili

πŸ”„ Startup Recovery System

  • Auto-diagnosi: Controllo stato hardware vs database al riavvio
  • Pulizia Intelligente: Rimozione prenotazioni scadute/orfane
  • Ripristino Sessioni: Continuazione sessioni attive interrotte
  • Attivazione Coda: Se ufficio libero e prenotazioni valide β†’ scala automaticamente la coda
  • Consistenza Dati: Allineamento automatico realtΓ  fisica/digitale
  • Recovery Robusto: Gestione errori con fallback sicuro

πŸ”§ Hardware Richiesto

  • Raspberry Pi Zero 2W
  • Sensore PIR HC-SR501
  • Sensore Ultrasonico HC-SR04
  • Display OLED 0.96" SSD1306 (I2C)
  • 2x Pulsanti tattili
  • 4x LED (2 rossi, 2 verdi)
  • Alimentazione 5V per Raspberry Pi e LED esterni

πŸ“¦ Installazione

1. Configurazione Raspberry Pi

# Abilita I2C
sudo raspi-config
# Interfacing Options -> I2C -> Enable

# Installa dipendenze sistema
sudo apt update
sudo apt install python3-pip python3-venv git i2c-tools

2. Clone del repository

git clone https://github.com/andreapede/QueueManager.git
cd QueueManager

3. Setup ambiente virtuale

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

4. Configurazione

# Copia configurazione di esempio
cp config/config_example.py config/config.py

# Modifica parametri se necessario
nano config/config.py

5. Inizializzazione database

python init_db.py

6. Test hardware (opzionale)

# Test sensori
python test/test_sensors.py

# Test display OLED
python test/test_display.py

πŸš€ Avvio

ModalitΓ  sviluppo

source venv/bin/activate
python app.py

ModalitΓ  produzione (con systemd)

sudo cp scripts/queuemanager.service /etc/systemd/system/
sudo systemctl enable queuemanager
sudo systemctl start queuemanager

🌐 Utilizzo

Interfacce Web

  • Dashboard Utente: http://raspberry-pi-ip:5000

    • Visualizzazione stato ufficio in tempo reale
    • Sistema prenotazioni con selezione utente
    • Statistiche utilizzo (tempo attesa medio)
    • Gestione posizione in coda (sostituzione)
  • Dashboard Admin: http://raspberry-pi-ip:5000/admin

    • Controlli sistema (sblocco forzato, reset, svuota coda)
    • Statistiche dettagliate con filtri temporali (giorno/settimana/mese)
    • Log eventi in tempo reale
    • Gestione configurazione dinamica
    • Test hardware e diagnostica

API REST Endpoints

Status & Queue

  • GET /api/status - Stato attuale completo del sistema
  • GET /api/queue - Visualizza coda con dettagli utenti
  • GET /api/stats - Statistiche pubbliche di base
  • POST /api/book - Nuova prenotazione
  • POST /api/book/replace - Sostituisci posizione in coda

Admin API

  • GET /api/admin/stats?period=day|week|month - Statistiche dettagliate
  • POST /api/admin/force_unlock - Sblocco forzato ufficio
  • POST /api/admin/clear_queue - Svuota coda
  • POST /api/admin/reset_system - Reset completo sistema
  • GET /api/admin/events - Log eventi recenti
  • Vedi API Documentation per dettagli completi

οΏ½ FunzionalitΓ  Avanzate

🎯 Sistema di Recovery Automatico

Al riavvio del sistema viene eseguita una startup recovery che:

  • Verifica la consistenza tra stato hardware e database
  • Ripristina sessioni attive interrotte
  • Pulisce prenotazioni scadute o orfane
  • Riprende automaticamente il processamento della coda
  • Logga tutte le operazioni di recovery

πŸ“Š Analytics Comprehensive

Il sistema traccia e analizza:

  • Occupancy Stats: Sessioni totali, durata media, tempo utilizzo
  • Access Methods: Distinzione tra accesso diretto (pulsante) e prenotazioni web
  • Reliability: Tasso successo sessioni, tracking no-show, conflitti risolti
  • Queue Analytics: Dimensione massima, pattern attesa, efficienza processamento
  • Time-based Analysis: Breakdown orario, trend giornalieri/settimanali/mensili

πŸ”„ Gestione Conflitti Avanzata

  • Race Condition Prevention: Gestione accessi simultanei pulsante/web
  • Conflict Resolution: Sistema di prioritΓ  per risolvere conflitti
  • Duplicate Detection: Prevenzione prenotazioni multiple stesso utente
  • Timeout Management: Gestione automatica scadenze con cleanup

πŸ›‘οΈ Sicurezza & Robustezza

  • Session Management: Login admin con timeout automatico
  • Rate Limiting: Protezione da tentativi login multipli
  • Data Persistence: Database SQLite con backup automatici
  • Error Handling: Gestione robusti errori hardware/software
  • Logging Comprehensive: Trace completo eventi sistema

οΏ½πŸ“± Interfacce

Display OLED

Mostra in tempo reale:

  • Stato ufficio (LIBERO/OCCUPATO)
  • Dimensione coda
  • Tempo di occupazione
  • Prossimo utente in coda

LED di Stato

  • Verde fisso: Ufficio libero
  • Rosso fisso: Ufficio occupato
  • Lampeggio: Warning o coda attiva
  • Spento: Errore sistema

Dashboard Web

  • Stato real-time
  • Form prenotazione
  • Visualizzazione coda
  • Statistiche utilizzo

βš™οΈ Configurazione

Parametri principali in config/config.py:

# Timeout prenotazione (minuti)
RESERVATION_TIMEOUT_MINUTES = 3

# Durata massima occupazione (minuti) 
MAX_OCCUPANCY_MINUTES = 10

# Dimensione massima coda
MAX_QUEUE_SIZE = 7

# PrioritΓ  in caso di conflitto
CONFLICT_PRIORITY = 'presence'  # 'presence' o 'reservation'

πŸ”§ Schema GPIO

Componente GPIO Funzione
Display SDA 2 I2C Data
Display SCL 3 I2C Clock
PIR Sensor 4 Digital Input
Ultrasonic TRIG 18 Digital Output
Ultrasonic ECHO 24 Digital Input
Pulsante 1 17 Digital Input
Pulsante 2 27 Digital Input
LED 1 Rosso 22 Digital Output
LED 1 Verde 23 Digital Output
LED 2 Rosso 25 Digital Output
LED 2 Verde 26 Digital Output

πŸ“Š Statistiche

Il sistema raccoglie automaticamente:

  • Tempo medio di occupazione
  • Numero accessi giornalieri
  • Rapporto accessi diretti vs prenotazioni
  • Tasso di no-show
  • Ore di picco utilizzo

πŸ› οΈ Sviluppo

Struttura del progetto

QueueManager/
β”œβ”€β”€ app.py                 # Applicazione principale
β”œβ”€β”€ hardware/             # Controllo hardware
β”œβ”€β”€ api/                  # Endpoint API REST
β”œβ”€β”€ web/                  # Frontend web
β”œβ”€β”€ database/             # Gestione database
β”œβ”€β”€ config/               # Configurazioni
β”œβ”€β”€ utils/                # UtilitΓ  varie
β”œβ”€β”€ test/                 # Test hardware/software  
└── scripts/              # Script installazione/deploy

Database Schema Completo

-- Utenti sistema
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    code TEXT UNIQUE NOT NULL,      -- Codice utente (es: "05")
    name TEXT NOT NULL,             -- Nome utente
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Sistema coda con stati avanzati
CREATE TABLE queue (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_code TEXT NOT NULL,
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
    status TEXT DEFAULT 'waiting',   -- waiting/active/completed/no_show
    start_time DATETIME,            -- Quando diventa attiva
    end_time DATETIME,              -- Quando completata
    FOREIGN KEY (user_code) REFERENCES users(code)
);

-- Statistiche occupazioni dettagliate
CREATE TABLE occupancy_stats (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    start_time DATETIME NOT NULL,
    end_time DATETIME,
    access_type TEXT NOT NULL,      -- 'direct' o 'reservation'  
    user_code TEXT,
    duration_minutes INTEGER,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_code) REFERENCES users(code)
);

-- Log eventi sistema completo
CREATE TABLE events (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
    event_type TEXT NOT NULL,       -- BOOKING_CREATED, SESSION_STARTED, ecc.
    user_code TEXT,
    duration_minutes INTEGER,
    state_from TEXT,               -- Stato precedente
    state_to TEXT,                 -- Nuovo stato
    queue_size INTEGER,            -- Dimensione coda al momento
    no_show BOOLEAN DEFAULT FALSE,
    conflict_occurred BOOLEAN DEFAULT FALSE,
    details TEXT,                  -- Dettagli aggiuntivi
    FOREIGN KEY (user_code) REFERENCES users(code)
);

-- Configurazione dinamica
CREATE TABLE config (
    key TEXT PRIMARY KEY,
    value TEXT NOT NULL,
    description TEXT,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

Architettura Sistema

πŸ”„ Event-Driven Architecture

  • Main Loop: Controllo hardware continuo (1Hz)
  • Background Scheduler: Cleanup periodico, timeout gestione
  • WebSocket Layer: Real-time updates a tutti i client connessi
  • Database Transactions: ACID compliance per operazioni critiche

🧠 Startup Recovery System

Al boot il sistema esegue diagnostica completa:

  1. Hardware State Check: Verifica sensori fisici
  2. Database Consistency: Confronto stato DB vs realtΓ 
  3. Orphaned Sessions: Cleanup prenotazioni attive orfane
  4. Expired Reservations: Rimozione timeout scaduti
  5. Queue Restoration: Ripristino processamento coda
  6. Event Logging: Trace completo recovery per debugging

πŸ“Š Analytics Engine

Sistema di statistiche multi-livello:

  • Real-time Metrics: Aggiornamenti istantanei
  • Aggregated Stats: Pre-calcolo per performance
  • Historical Trends: Analisi temporali avanzate
  • Comparative Analysis: Confronti periodo su periodo

πŸ§ͺ Testing & Quality Assurance

Test Hardware

# Test completo sistema
python test/full_system_test.py

# Test sensori individuali  
python test/test_pir_sensor.py
python test/test_ultrasonic.py
python test/test_display.py

# Test GPIO e LED
python test/test_gpio_outputs.py

Test Software

# Test unitari componenti
python -m pytest test/unit/ -v

# Test integrazione API
python test/api_integration_test.py

# Test database recovery
python test/test_startup_recovery.py

# Load testing
python test/load_test.py --concurrent 10 --duration 60

Debugging Avanzato

# ModalitΓ  debug con trace completo
python app.py --debug --trace-hardware

# Monitor real-time eventi
tail -f data/logs/queuemanager.log | grep -E "(RECOVERY|CONFLICT|ERROR)"

# Analisi database
sqlite3 data/queue_manager.db ".schema"
sqlite3 data/queue_manager.db "SELECT * FROM events ORDER BY timestamp DESC LIMIT 20;"

πŸš€ Deployment Produzione

Setup Completo Raspberry Pi

# Preparazione sistema
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3-pip python3-venv git i2c-tools sqlite3

# Setup repository
git clone https://github.com/andreapede/QueueManager.git
cd QueueManager
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Configurazione GPIO
sudo usermod -a -G gpio,i2c $USER
sudo systemctl enable ssh

# Database inizializzazione
python database/db_manager.py --init
python utils/import_users.py --csv data/users.csv

# Test hardware completo
python test/hardware_integration.py

Systemd Service Setup

# Service configuration
sudo cp scripts/queuemanager.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable queuemanager

# Environment configuration
sudo mkdir -p /etc/queuemanager
sudo cp config/.env.production /etc/queuemanager/.env

# Avvio e monitoring
sudo systemctl start queuemanager
sudo systemctl status queuemanager

Backup & Recovery

# Backup automatico database
python utils/backup_manager.py --auto-schedule

# Recovery da backup
python utils/backup_manager.py --restore --file backup_20250819_120000.db

# Export statistiche
python utils/export_stats.py --format csv --period month --output stats_export.csv

πŸ”§ Troubleshooting Avanzato

Problemi Startup Recovery

# Debug recovery process
python app.py --debug-recovery 2>&1 | tee recovery_debug.log

# Force reset sistema in caso emergenza
python utils/emergency_reset.py --confirm

# Riparazione database corrotto
python utils/db_repair.py --analyze --repair

Performance Monitoring

# Monitoring risorse sistema
python utils/system_monitor.py --realtime

# Analisi query database lente
python utils/db_profiler.py --slow-queries --threshold 100ms

# Memory leak detection
python utils/memory_profiler.py --duration 3600

Diagnostica Hardware

# Test completo connessioni
python hardware/diagnostic_tool.py --full-check

# Calibrazione sensori
python hardware/sensor_calibration.py --pir --ultrasonic

# Test stress GPIO
python test/gpio_stress_test.py --duration 300

πŸ“ˆ Analytics & Reporting

Statistiche Avanzate

Il sistema genera automaticamente:

  • πŸ“Š Dashboard Metrics: Real-time KPI per admin
  • πŸ“ˆ Trend Analysis: Pattern utilizzo temporali
  • 🎯 Performance Reports: Efficienza sistema, no-show rates
  • πŸ’‘ Insights: Raccomandazioni ottimizzazione
  • πŸ“… Scheduled Reports: Export automatici periodici

Business Intelligence

# Report utilizzo mensile
python utils/generate_report.py --type monthly --format pdf

# Analisi pattern utilizzo
python analytics/usage_patterns.py --analyze-peaks --timeframe 30d

# Previsioni carico
python analytics/demand_forecasting.py --predict-next 7d

🀝 Sviluppo & Contribuzioni

Guidelines Sviluppo

  • Code Style: Seguire PEP 8, utilizzare black formatter
  • Testing: Copertura minima 80% per nuove features
  • Documentation: Docstring complete per tutti i metodi pubblici
  • Hardware Testing: Testare su Raspberry Pi reale prima merge

Feature Request Process

  1. πŸ’‘ Proposta: GitHub Discussion con caso d'uso dettagliato
  2. 🎯 Specification: Design document con requisiti tecnici
  3. πŸ› οΈ Implementation: Development in feature branch
  4. πŸ§ͺ Testing: Unit + integration tests completi
  5. πŸ“ Documentation: Aggiornamento README e API docs
  6. πŸ”„ Review: Code review da maintainer
  7. πŸš€ Merge: Deploy in main branch

πŸ“ž Supporto & Community

Canali Supporto

  • πŸ› Bug Reports: GitHub Issues con template
  • πŸ’‘ Feature Requests: GitHub Discussions
  • πŸ“– Documentation: Wiki
  • πŸ’¬ Community Chat: Discord server per discussioni real-time

SLA & Response Times

  • πŸ”΄ Critical Issues: < 24h response time
  • 🟑 Bug Reports: < 72h response time
  • πŸ”΅ Feature Requests: < 1 week feedback
  • πŸ“š Documentation: Updates with each release

πŸ“‹ Roadmap & Future Features

v2.1.0 (Q3 2025)

  • πŸ”” Mobile App: Notifiche push native iOS/Android
  • 🌍 Multi-language: Supporto i18n italiano/inglese
  • πŸ“± QR Codes: Check-in veloce tramite QR
  • πŸ” LDAP Integration: Authentication enterprise

v2.2.0 (Q4 2025)

  • πŸ€– AI Predictions: Machine learning per previsioni carico
  • πŸ“Š Advanced Analytics: Dashboards interattive con grafici
  • πŸ”— API Extensions: GraphQL endpoint per integrazioni
  • 🏒 Multi-office: Gestione network di uffici

v3.0.0 (2026)

  • ☁️ Cloud Sync: Sincronizzazione multi-site
  • 🧠 Smart Scheduling: Ottimizzazione automatica orari
  • πŸ“ž VoIP Integration: Notifiche telefoniche
  • πŸ—οΈ Microservices: Architettura scalabile

πŸ“„ Licenza & Copyright

MIT License - Vedi file LICENSE per dettagli completi.

Copyright Β© 2025 QueueManager Contributors


🎯 Sistema Professionale per Gestione Efficiente Accessi Uffici

Sviluppato con ❀️ per massimizzare produttività e user experience

GitHub stars GitHub issues License: MIT

About

A queue management system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published