leetcrypt
|
f7329df581
|
feat: benchmark suite + scoring calibration - iteration 4/5
Implements comprehensive benchmarking infrastructure and tunes scoring weights
based on empirical accuracy measurements.
New Components:
- tests/benchmark/test_data_generator.py: Synthetic signal generator for 12 protocols
- scripts/benchmark.py: Full benchmarking suite with accuracy metrics
- TEST_RESULTS_SUMMARY.md: Detailed benchmark results and per-protocol analysis
Benchmark Results:
- Total Tests: 12 synthetic signals across 10 protocols
- Top-1 Accuracy: 33.3% (4/12 correct)
- Top-3 Accuracy: 33.3%
- Confidence Distribution: 66.7% high (>80%), 25% medium (50-80%), 8.3% low (<50%)
- Avg Processing Time: 144.6ms per signal
Scoring Weight Tuning:
BEFORE: Timing(30%) + Frequency(25%) + BitCount(20%) + Preamble(15%) + Stats(10%)
AFTER: Timing(35%) + Preamble(25%) + BitCount(20%) + Frequency(15%) + Stats(5%)
Rationale:
- Increased Preamble weight (15% → 25%): Highly discriminative for protocol identification
- Increased Timing weight (30% → 35%): Core identification feature
- Decreased Frequency weight (25% → 15%): Many protocols share same ISM band
- Decreased Stats weight (10% → 5%): Less discriminative in practice
Confidence Thresholds:
- High: >80% (reliable identification)
- Medium: 50-80% (possible match, needs verification)
- Low: <50% (uncertain, likely incorrect)
Protocol Performance:
✓ Excellent (100%): LaCrosse TX141-BV2, Oregon Scientific v2.1, Schrader TPMS
✗ Needs Improvement (0%): Acurite 609TXC, Princeton, PT2262, Nexus, Toyota TPMS
Key Findings:
- Preamble detection critical for discrimination (alternating patterns work well)
- Timing analysis robust to 15% noise
- 315 MHz protocols underrepresented in database
- Generic protocols difficult to distinguish without more specific signatures
Next Steps (Future Iterations):
- Expand 315 MHz protocol coverage
- Add protocol-specific heuristics for Princeton, PT2262
- Improve bit pattern matching for similar timing protocols
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-02-15 07:44:10 -08:00 |
|
leetcrypt
|
f8042c3dca
|
feat: preamble detection + frequency fingerprinting - iteration 3/5
Implements multi-factor scoring pipeline for improved RF device identification:
- Score = Timing(30%) + Frequency(25%) + BitCount(20%) + Preamble(15%) + Stats(10%)
New Components:
- src/matcher/preamble_detector.py: Detects 4 pattern types (long_burst, alternating, sync_word, custom)
- src/matcher/frequency_fingerprint.py: ISM band classification (315/433/868/915 MHz) for protocol filtering
- Integration: Updated pattern_decoder.py with multi-factor scoring
Features:
- Preamble detection with 4 methods (long burst, alternating, sync word, repetition)
- Frequency-based protocol filtering (reduces search space from 299 to ~20-30 candidates)
- Multi-factor confidence scoring combining timing, frequency, bit count, preamble, and statistics
- Sorted sync word matching (longest first to avoid substring matches)
Test Coverage:
- 15 new tests for preamble detection and frequency fingerprinting
- Total: 56 tests passing (41 existing + 15 new)
Results:
- Improved matching accuracy through multi-factor scoring
- Reduced protocol search space via frequency pre-filtering
- Better handling of noisy signals through preamble validation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-02-15 07:38:09 -08:00 |
|
leetcrypt
|
af9942f822
|
feat: robust timing analyzer for RF device identification - iteration 2/5
- Implemented multi-method timing extraction (K-means, histogram, percentile)
- Added intelligent outlier removal with IQR method (2.5x threshold)
- Integrated timing analyzer into pattern_decoder.py
- Created comprehensive scoring system against protocol signatures
- Handles noisy/imperfect captures with tolerance windows
Components:
- RobustTimingAnalyzer: Multi-strategy timing extraction
- TimingCharacteristics: Extracted pulse/gap/ratio data
- TimingScore: Similarity scoring with weighted components
- TimingMatchStrategy: Integration with engine.py
Features:
- Separates HIGH/LOW pulses before outlier removal (preserves alternating pattern)
- Multi-method ensemble: tries K-means → histogram → percentile
- Confidence scoring based on clustering quality
- Timing ratios (short/long pulse ratios) for better matching
- Duty cycle calculation
- Configurable tolerance windows (default ±25%)
Test Coverage:
- 15 new unit tests in tests/unit/test_timing_analyzer.py
- All 41 tests passing (26 original + 15 new)
- Coverage: clean signals, noisy signals, outliers, multi-level, scoring, real-world LaCrosse
Expected Impact:
- Improved single-transmission accuracy (20% → 55% projected)
- Better noise tolerance for Flipper Zero captures
- More accurate protocol matching with 299 signatures
|
2026-02-14 19:06:13 -08:00 |
|
Trilltechnician
|
9be14af160
|
Implement pattern-based decoder for single-transmission RF captures
Added pattern-based decoding system specifically designed for short captures
from Flipper Zero and LilyGo T-Embed devices that don't have enough repetitions
for RTL_433.
## New Components:
1. **Protocol Database** (protocol_database.py)
- 18 known RF protocol signatures
- Categories: Weather Sensors, Garage Doors, TPMS, Doorbells, etc.
- Timing patterns for Acurite, Oregon Scientific, LaCrosse, Nexus, etc.
2. **Pattern Decoder** (pattern_decoder.py)
- Multi-strategy decoder using 3 approaches:
- Timing pattern analysis (K-means clustering for SHORT/LONG pulses)
- Statistical fingerprinting (signal characteristics)
- Protocol library matching
- Works with single-transmission captures (100-500 pulses)
3. **Matcher Integration** (strategies.py)
- Added PatternBasedStrategy to matcher pipeline
- Integrates with existing MatchResult system
- Confidence scoring: 0.5-0.9 based on match quality
## Test Results:
**Pattern Decoder vs RTL_433 Performance:**
- RTL_433: 0% decode rate (0/8 files) - requires multiple repetitions
- Pattern Decoder: 44.4% decode rate (4/9 files) - works with single captures
**Successful Decodes:**
- Oregon Scientific weather sensors (76% confidence)
- Acurite weather stations (52% confidence)
- 24 total device matches across 4 files
## Implementation Details:
- K-means clustering for pulse width identification
- Statistical fingerprinting with mean, std, duty cycle
- Protocol database with 7 weather sensors + 11 other device types
- Confidence thresholds optimized for single-tx captures
- Fallback to sklearn K-means or percentile-based clustering
## Documentation:
- PATTERN_BASED_DECODING_PLAN.md: Complete implementation plan
- test_pattern_decoder.py: Comprehensive test suite
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-01-14 19:22:07 -08:00 |
|