7.6 KiB
7.6 KiB
🚦 Smart Intersection MQTT + InfluxDB + Grafana Integration
COMPLETE IMPLEMENTATION SUMMARY
Based on my analysis of the qt_app_pyside1 project, I've implemented a comprehensive hybrid desktop + services architecture that adds professional-grade monitoring and analytics capabilities.
✅ WHAT HAS BEEN IMPLEMENTED
1. Service Infrastructure
- ✅ MQTT Broker (Mosquitto) - Real-time event streaming
- ✅ InfluxDB v2 - Time series database for metrics
- ✅ Grafana - Professional dashboards and visualization
- ✅ Docker Compose - Easy containerized deployment
- ✅ Windows Services - Native installation support
2. Desktop Application Integration
- ✅ Enhanced Smart Intersection Controller - MQTT/InfluxDB publishing
- ✅ Service Status Widget - Real-time service monitoring
- ✅ Async MQTT Publisher - Non-blocking event publishing
- ✅ InfluxDB Writer - Time series data storage
- ✅ Health Monitoring - Service availability checking
3. Configuration System
- ✅ Service Configuration - Centralized service settings
- ✅ MQTT Topics Schema - Structured event definitions
- ✅ Grafana Datasources - Pre-configured connections
- ✅ Dashboard Templates - Ready-to-use analytics views
4. Automation & Setup
- ✅ Automated Setup Script - One-click installation
- ✅ Startup/Shutdown Scripts - Service management
- ✅ Health Checks - Service availability testing
- ✅ Graceful Degradation - Works without services
📋 STEP-BY-STEP IMPLEMENTATION GUIDE
Phase 1: Install Required Dependencies
# Install Python packages
cd qt_app_pyside1
pip install -r requirements.txt
# New packages added:
# - paho-mqtt==1.6.1 # MQTT client
# - influxdb-client==1.43.0 # InfluxDB v2 client
# - grafana-api==1.0.3 # Grafana API client
# - aiohttp==3.9.1 # Async HTTP
# - asyncio-mqtt==0.13.0 # Async MQTT
Phase 2: Setup Services (Choose One Method)
Method A: Docker Compose (Recommended)
# Start all services
cd services/docker
docker-compose up -d
# Services will be available at:
# - MQTT: localhost:1883
# - InfluxDB: localhost:8086
# - Grafana: localhost:3000
Method B: Automated Setup
# Run the setup script
cd services/scripts
python setup_services.py
# Follow the interactive setup process
# Downloads and configures all services automatically
Method C: Manual Installation
-
Download Software:
- Mosquitto: https://mosquitto.org/download/
- InfluxDB: https://portal.influxdata.com/downloads/
- Grafana: https://grafana.com/grafana/download?platform=windows
-
Install & Configure:
- Follow individual installation guides
- Copy configuration files from
services/directories
Phase 3: Start Services
# Use provided startup script
cd services/scripts
start_services.bat
# Or manually start each service
# Mosquitto: C:\Program Files\mosquitto\mosquitto.exe -c mosquitto.conf
# InfluxDB: C:\InfluxDB\influxd.exe --config config.yml
# Grafana: C:\Grafana\bin\grafana-server.exe
Phase 4: Configure Desktop Application
The desktop app will automatically:
- ✅ Detect running services
- ✅ Connect to MQTT broker
- ✅ Initialize InfluxDB connection
- ✅ Show service status in UI
- ✅ Publish real-time events
- ✅ Store metrics in time series database
🔧 SERVICE CONFIGURATION
MQTT Topics Structure
{
"smartintersection/detection": "Real-time object detection",
"smartintersection/violations": "Traffic violations",
"smartintersection/performance": "System metrics",
"smartintersection/traffic/flow": "Traffic flow data",
"smartintersection/safety/pedestrian": "Safety events",
"smartintersection/roi/events": "ROI-based events",
"smartintersection/system/health": "System status"
}
InfluxDB Measurements
performance # FPS, GPU usage, processing time
detection_events # Object counts, confidence levels
violation_events # Traffic violations by type
traffic_flow # Vehicle counts, speeds, congestion
roi_events # Region-based analytics
system_health # Overall system status
Grafana Dashboards
- 📊 Real-time Monitoring - Live traffic analytics
- ⚡ Performance Metrics - System health and FPS
- 🚗 Traffic Flow - Vehicle counts and patterns
- ⚠️ Violations Dashboard - Safety alerts and events
- 🎯 ROI Analytics - Region-based insights
💡 KEY FEATURES & BENEFITS
Professional Monitoring
- ✅ Real-time event streaming via MQTT
- ✅ Time series data storage and analysis
- ✅ Rich Grafana dashboards with alerting
- ✅ Historical data analysis and trends
- ✅ Multi-device access to analytics
Desktop Integration
- ✅ Service status monitoring in main UI
- ✅ Automatic connection management
- ✅ Graceful degradation if services unavailable
- ✅ Real-time performance metrics display
- ✅ Quick access to Grafana dashboards
Scalability
- ✅ Multiple desktop apps can connect
- ✅ Remote monitoring capabilities
- ✅ Data aggregation from multiple sources
- ✅ Enterprise-grade monitoring stack
- ✅ Easy horizontal scaling
📊 RESOURCE USAGE
| Service | RAM Usage | CPU Usage | Disk Space |
|---|---|---|---|
| Mosquitto | 5-10 MB | <1% | 50 MB |
| InfluxDB | 50-100 MB | 2-5% | 200 MB + data |
| Grafana | 100-150 MB | 1-3% | 300 MB |
| Total | 200-300 MB | 3-8% | 550 MB |
🚀 QUICK START
1. Start Services (2 minutes)
cd qt_app_pyside1/services/scripts
start_services.bat
2. Launch Desktop App (1 minute)
cd qt_app_pyside1
python main.py
3. Access Dashboards (30 seconds)
- Grafana: http://localhost:3000 (admin/admin)
- InfluxDB: http://localhost:8086
- Service Status: Check desktop app "Services" tab
🛠️ TROUBLESHOOTING
Common Issues:
-
Services not starting:
- Check Windows Firewall settings
- Run startup script as Administrator
- Verify port availability (1883, 8086, 3000)
-
Desktop app can't connect:
- Ensure services are running (
netstat -an | findstr :1883) - Check service configuration files
- Review service logs in
services/logs/
- Ensure services are running (
-
Grafana dashboards empty:
- Wait 2-3 minutes for data to populate
- Check InfluxDB connection in Grafana
- Verify MQTT messages are being published
Service Health Check:
# Test service ports
telnet localhost 1883 # MQTT
telnet localhost 8086 # InfluxDB
telnet localhost 3000 # Grafana
📈 WHAT YOU GET
Before (Desktop Only):
- ❌ Limited local analytics display
- ❌ No historical data storage
- ❌ Single-device access only
- ❌ Basic performance metrics
- ❌ No remote monitoring
After (Hybrid Architecture):
- ✅ Professional Grafana dashboards
- ✅ Time series data analysis
- ✅ Multi-device monitoring access
- ✅ Real-time MQTT event streaming
- ✅ Enterprise-grade monitoring stack
- ✅ Scalable, production-ready architecture
- ✅ Rich analytics and alerting
- ✅ Historical trend analysis
🎯 NEXT STEPS
- Run the setup:
python services/scripts/setup_services.py - Start services:
services/scripts/start_services.bat - Launch desktop app:
python main.py - Open Grafana: http://localhost:3000
- Enjoy professional traffic monitoring! 🚦📊
No accounts required - everything runs locally on your machine!