Skip to content

v2026.07.4

Choose a tag to compare

@danielpetrovic danielpetrovic released this 12 Jul 20:30

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