Skip to content

v1.5.0

@ronluna ronluna tagged this 19 Apr 11:31
DALI multi-channel enumeration (P1 — critical):
- _normalise_device now preserves channel_addresses/channel_aliases for
  ALL device classes, not just MOTOR — ILC-DALI multi-channel lights
  (one parent UID with A/B/C/D child channel addresses) were silently
  collapsed to a single entity instead of one per channel
- _parse_devices now fans out PLATFORM_LIGHT devices with channel_addresses
  into individual entities, mirroring the existing IMC-300 motor pattern

Telnet auth — DDK Rule 10 (P2 — high):
- Replaced blind sleep(0.6) with proper prompt-wait sequence:
  wait for 'User:' → send username → wait for 'Password:' → send
  password → wait for 'Connected:' before issuing any commands
- Prevents auth failure on slow/loaded gateways

Bi-white VALUE parsing regression (P3 — high):
- Restored the len(parts)==2 branch in handle_notify for
  ILC-200E / DALI-TW bi-white devices (!Z.G.N.LED.VALUE=warm.cool);
  these devices reported no state in the previous version

FORM-less device bus_type inference (P4 — medium):
- Default bus_type now inferred from type_name when FORM is absent:
  DALI type names → BUS_DALI, DMX type names → BUS_DMX, else BUS_CSBUS
  Prevents DALI devices without FORM from being polled (DALI queries
  always time out and generate noise on every coordinator cycle)

DISCOVER ALIAS regex (P5 — low):
- Changed (.+) to (.*) so empty ALIAS values are captured without
  silently discarding the return line

Unused import removed (P6 — low):
- Removed async_track_time_interval which was imported but never called

All files pass py_compile. DDK v2.3.w1 consulted to verify:
- >DISCOVER\r\n command format ✓
- FORM field order and future-field tolerance ✓
- CCT warm limit default 1700 K per DDK example ✓
- SET range 0-240, ramp :XX syntax ✓
- Auth prompt sequence ✓

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Assets 2
Loading