Skip to content

feat(iaqua): add ICL (IntellliCenter Light) zone control support#114

Open
agrieco wants to merge 3 commits intoflz:masterfrom
agrieco:feature/icl-light-support
Open

feat(iaqua): add ICL (IntellliCenter Light) zone control support#114
agrieco wants to merge 3 commits intoflz:masterfrom
agrieco:feature/icl-light-support

Conversation

@agrieco
Copy link
Copy Markdown

@agrieco agrieco commented Jan 1, 2026

Summary

  • Add IaquaIclLight device class for IntellliCenter Light zone control
  • Support on/off, 17 preset color effects, custom RGB+W colors, brightness (0-100%)
  • Automatic ICL detection via is_icl_present flag during system update
  • New system methods: icl_zone_on_off(), icl_set_color(), icl_set_brightness(), icl_set_custom_color()
  • Updated README with ICL usage examples

Test plan

  • All 225 tests pass (40 new tests for ICL)
  • Linting passes (ruff check)
  • Type checking passes (mypy src/)
  • Tested against real iAqualink API with ICL hardware

🤖 Generated with Claude Code

agrieco and others added 3 commits January 1, 2026 11:02
Add support for controlling IntellliCenter Light (ICL) zones with:

- New IaquaIclLight device class with full lighting control
- Turn zones on/off with icl_zone_on_off()
- Set preset colors (17 effects including Alpine White, Caribbean Blue, etc.)
- Set custom RGB+W colors with set_rgb()
- Adjust brightness (0-100%) with set_brightness()
- Automatic ICL detection via is_icl_present flag in home response
- Fetches ICL zone info during system update() when ICL is present

Implementation:
- Added ICL command constants (get_icl_info, onoff_iclzone, set_iclzone_color,
  set_iclzone_dim, define_iclzone_customcolor)
- IaquaIclLight extends AqualinkLight with ICL-specific properties
- System methods for ICL operations with response parsing
- 40 new tests covering all ICL functionality
- Updated README with ICL usage examples

Tested against real iAqualink API with zone-based light fixtures.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix is_icl_present check to accept both "1" and "present" values
- Parse icl_info_list directly from devices_screen response
- ICL zone data is already included in get_devices response

Tested against real iAqualink API with 4 ICL zones.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The get_icl_info API endpoint was causing timeouts (~5 seconds) during
system updates. This call was redundant because the ICL zone data
(icl_info_list) is already included in the devices_screen response
and parsed in _parse_devices_response().

Removing this extra API call eliminates the timeout warnings:
"Failed to refresh system ... state:"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant