Migration from pledou/enocean Chained Packet, Ventilairsec & EEP#35
Open
pledou wants to merge 8 commits into
Open
Migration from pledou/enocean Chained Packet, Ventilairsec & EEP#35pledou wants to merge 8 commits into
pledou wants to merge 8 commits into
Conversation
added 8 commits
June 1, 2026 15:05
- Add RORG.CHAINED (0xC8) and RORG.CHAINED_VENTILAIRSEC (0x40) constants - Add _CHAINED_STORAGE global for telegram reassembly - Add ChainedPacket class (287 lines) to handle chained telegrams - Update parse_msg() to detect and instantiate ChainedPacket - Filter incomplete CHAINED packets from propagation - Support both standard (0xC8) and VentilAirSec proprietary (0x40) chained formats
- Add eep_metadata.py (157 lines) for dynamic EEP field metadata - Add get_eep() singleton function to eep.py to avoid repeated XML parsing - Add reload_eep() function for forcing EEP reload - Import threading.Lock for singleton thread-safety
- Add cmd attribute initialization in RadioPacket.parse() - Add VLD command extraction from bits 8-11 - Add MSC manufacturer ID extraction from bits 0-11 - Add VentilAirSec-specific command extraction (4-bit at bits 12-15) - Add fallback 8-bit command extraction for non-VentilAirSec MSC - Maintain ChristopheHD's safe bounds checking - Set contains_eep=False for MSC packets
- Add D2-01-12 (Electronic switch with Local Control) profile (351 lines) * Complete command set (13 commands) * Power failure detection, output control, measurement, pilot wire mode * External interface settings and status queries - Add VentilAirSec MSC telegram (0xD1079) with profiles (680 lines) * Func 0x00, Type 0x00: Cyclic, Action, Awake, Clock, Test commands * Func 0x01, Type 0x00: Additional VentilAirSec functionality * Battery, temperature, humidity, CO2, VOC sensors * Bypass, boost, fan speed control * Comprehensive sensor and actuator support Total: +1031 lines (5459 → 6490 lines) EEP.xml structure validated and profiles load correctly
Test Coverage: - test_chained_packets.py (520 lines, 12 tests) * CHAINED packet detection (0xC8 and 0x40) * Multi-frame telegram reassembly * Incomplete packet handling * Storage cleanup and independence * Out-of-order chunk handling - test_ventilairsec_regression.py (242 lines, 2 tests) * Real VentilAirSec device capture sequences * 2-part and 3-part chained telegram tests - test_packet_parse_and_log.py (391 lines, 3 tests) * Radio packet building and parsing * Real frame parsing from logs * Chained packet parsing validation - test_real_capture_sequence.py (80 lines, 1 test) * Real device capture replay - test_utils.py (30 lines, 3 tests) * Utility function tests (bit operations, hex conversion) - conftest.py: Pytest configuration to prevent async fixture warnings All 21 tests passing ✓
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Migration Notes: ChristopheHD + VentilAirSec Features
Overview
This branch (
migration-to-christophehd) combines:Migration Timeline
Date: June 2026
From: pledou/enocean master branch
To: ChristopheHD/enocean master + VentilAirSec features
Common Ancestor: commit 80a253b
Changes Applied
Commit History
46db671: Add ChainedPacket support for multi-frame MSC telegrams
RORG.CHAINED(0xC8) andRORG.CHAINED_VENTILAIRSEC(0x40)ChainedPacketclass with frame reassembly_CHAINED_STORAGEfor buffering incomplete telegramsPacket.parse_msg()to detect and assemble multi-frame packets23d82ae: Add eep_metadata module and EEP singleton pattern
enocean/protocol/eep_metadata.py(157 lines)get_eep()function for thread-safe singleton accessreload_eep()for forcing EEP.xml reload9ec0725: Enhance RadioPacket with VLD and MSC command extraction
RadioPacket.parse()with automatic field populationpacket.manufacturerandpacket.commandattributesedb9695: Merge VentilAirSec and D2-01-12 profiles into EEP.xml
ce44a9e: Add comprehensive test suite for ChainedPacket and VentilAirSec
test_chained_packets.py: 12 tests for multi-frame reassemblytest_ventilairsec_regression.py: 2 regression teststest_packet_parse_and_log.py: 3 parser teststest_real_capture_sequence.py: 1 real-world capture testconftest.py: pytest-asyncio compatibilityIntegration Status
Tested With
Known Compatible Projects
API Compatibility
Backward Compatible
All existing code using the library continues to work without changes:
Packet.parse_msg()still returns regular packetsNew APIs
Performance Considerations
Memory Usage
_CHAINED_STORAGE: Stores incomplete telegrams (max ~10 concurrent)CPU Impact