v2026.07.4
What's Changed
Continued work on this bridge's own 2W bonding (still not achieving a real bond against real hardware, but substantially more complete and better-understood), plus new 2W diagnostics, a persistent 2W identity option, two real bug fixes, a new Last RSSI sensor, and entity organization cleanup.
Changes
- Added: 2W bonding state machine (Program (2W) button) - redesigned mid-development after discovering the original directionality assumption was backwards (the controller must broadcast DISCOVER, not the motor) and a crypto bug (wrong key used for ongoing challenge/response). Both fixes verified byte-for-byte against two independent working reference implementations. Bonding has still never succeeded against real hardware - see README's "2W bonding: current status and open problem" section for the full investigation.
- Added: DISCOVER_CONFIRMATION (0x2C/0x2D) bonding step
- Added: Listen-Before-Talk RF collision avoidance and an opt-in fast 3-channel RX hop ("Channel Hop (2W)" switch, or automatic during an active bonding attempt) - confirmed an always-on hop breaks ordinary 1W reception, so it stays off by default
- Added: passive key sniffer, watching all traffic for a real key-transfer exchange to recover an already-established key
- Added: Get Name (2W) diagnostic button, and automatic motor naming (Set Name) on a successful bond
- Added: persistent 2W controller identity (controller_address/system_key), mirroring each cover's existing per-motor node/key pattern, so a board replacement can reproduce the same 2W identity
- Added: Last RSSI sensor per cover - this bridge's own signal strength for a motor, independent of Overkiz's own RSSI sensors
- Fixed: RemoteButton::Add previously only sent the bare Add frame instead of the full 4-step ceremony a real remote uses, so a fresh 1W pairing never fully registered with the motor - confirmed fixed on real hardware
- Fixed: passive 2W position decode could be corrupted by a Stop/Vent command's echoed sentinel being misread as a position - now range-checked before decoding
- Fixed: 1W transmit call sites now explicitly retune to CH2 before sending, preventing a possible wrong-channel transmission now that the radio can be hopping in the background
- Changed: mode select's "Two-Way (Soon)" renamed to "Two-Way (Experimental)" now that the control path is real, even though bonding itself doesn't yet work
- Changed: entity categories reorganized (Program buttons/Identify/Get Name now categorized; Debug Logging and the new Channel Hop switch stay in Controls)
Upgrade Notes
- Reflash somfy-io-bridge.yaml to pick up all of the above
- 2W bonding remains non-functional - Position/Open-My-Close modes are unaffected and continue to work as before
- Recommended: remove and re-add the integration after flashing, so entity categories cleanly populate across all pages - entity_category only applies to newly-registered entities, so an existing install won't reflect the new Controls/Configuration/Diagnostic grouping otherwise