Trilltechnician
d84aded40b
feat: Implement heatmap visualization for device density
...
- Add Leaflet.heat plugin (leaflet-heat.js)
- Create renderHeatmap() function with confidence-based intensity
- Toggle between markers and heatmap view
- Support frequency filtering in heatmap mode
- Custom gradient: blue -> cyan -> lime -> yellow -> red
- Configurable radius (25px), blur (15px), and maxZoom (17)
- Console logging for debugging heatmap rendering
- Intensity based on device match confidence (0.5 default)
2026-01-14 11:04:54 -08:00
Trilltechnician
b083890e96
feat: Integrate frequency-based device identification system
...
Integrated comprehensive device attribution system into GigLez:
1. Simple Device Matcher (src/matcher/simple_matcher.py):
- Frequency-based device categorization (315/433/868/915 MHz)
- Protocol-specific identification (Princeton, EV1527, Oregon Scientific, etc.)
- Modulation + frequency matching (OOK/FSK/ASK)
- Confidence scoring (0.4-0.95 range)
- 50+ device types covered
2. API Integration (src/api/main_simple.py):
- Device matching in upload pipeline
- Added device fields: device_name, device_category, match_confidence, match_method, device_description
- Top 5 alternative matches stored per capture
- New endpoint: GET /api/v1/captures/{id} for detail view
3. Frontend Implementation:
- Detail modal with comprehensive device information
- Device identification section with confidence bars
- Alternative matches display
- Signal, location, and metadata sections
- Keyboard (ESC) and click-outside modal closing
4. UI Enhancements (static/css/main.css):
- Modal overlay with backdrop blur
- Animated modal slide-in
- Confidence visualization (green/yellow/red bars)
- Responsive detail grid layout
- Device match cards with categories
5. JavaScript Integration:
- detail-modal.js: Comprehensive detail view renderer
- Updated map.js and search.js to use detail modal
- Removed placeholder functions
6. Utilities:
- scripts/rematch_captures.py: Re-run matcher on existing data
- Successfully re-matched 20 existing captures
Device Categories Supported:
- Consumer RF (remotes, sensors)
- Automotive (key fobs, TPMS)
- Home Automation (garage/gate openers, blinds)
- Sensors (weather stations, temperature)
- Security (door/window sensors, alarms)
- IoT (smart meters, LoRa devices)
- Industrial (SCADA, telemetry, RFID)
Match Methods:
- Protocol matching (highest confidence: 0.7-0.95)
- Frequency matching (0.4-0.7)
- Modulation + frequency matching (0.5-0.7)
Frontend now displays:
- Device name and category on map markers
- Confidence percentage
- Detailed device information modal
- Alternative device matches
- Match method explanation
All existing captures successfully identified with 60-70% confidence.
2026-01-14 10:51:46 -08:00
Trilltechnician
48fcb00241
Phase 3 Complete: Web Interface MVP
...
Major Achievements:
- ✅ Full web interface (1,520+ lines of frontend code)
- ✅ Interactive Leaflet.js map with marker clustering
- ✅ Drag-and-drop upload system with GPS input
- ✅ Search & filter UI with multi-criteria
- ✅ Statistics dashboard with Chart.js
- ✅ Responsive mobile-friendly design
Backend:
- ✅ FastAPI static file serving
- ✅ Simplified server mode (main_simple.py)
- ✅ Improved startup script with port auto-selection
- ✅ PostgreSQL schema ready (requires setup)
Database:
- ✅ SQLite populated with 85 Flipper Zero signatures
- ✅ Device matching system operational
- ✅ Frequency-based search working
Documentation:
- ✅ PHASE_3_COMPLETE.md - Technical summary
- ✅ WEB_INTERFACE_README.md - User guide
- ✅ WEBAPP_STARTUP_GUIDE.md - Troubleshooting
- ✅ POSTGRESQL_SETUP_EXPLANATION.md - DB setup guide
- ✅ DATABASE_POPULATION_SUCCESS.md - Import report
- ✅ DEVICE_IDENTIFICATION_REPORT.md - Matching analysis
Files Created:
- templates/index.html (260 lines)
- static/css/main.css (500 lines)
- static/js/*.js (760 lines total)
- src/api/main_simple.py (simplified server)
- start_web.sh (auto port selection)
Status: Production MVP Ready
Next: Phase 4 - API & Integration
🛰️ Generated with Claude Code
https://claude.com/claude-code
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-12 18:21:11 -08:00