Skip to content

feat: add RGBICWW Ceiling Light support#507

Open
Onero-testdev wants to merge 1 commit into
sblibs:masterfrom
Onero-testdev:feature/rgbicww-ceiling-light
Open

feat: add RGBICWW Ceiling Light support#507
Onero-testdev wants to merge 1 commit into
sblibs:masterfrom
Onero-testdev:feature/rgbicww-ceiling-light

Conversation

@Onero-testdev

Copy link
Copy Markdown
Contributor

Summary

Adds support for the SwitchBot RGBICWW Ceiling Light (W1162000).

The ceiling light exposes two independently controllable sub-lights:

  • a warm-white (main) light, and
  • a color (RGB) light.

What's included

  • Advertisement parser for the 0x0011bb10 (normal) and 0x0111bb10 (pairing) signatures, decoding both sub-lights' power/brightness, the color mode and the color temperature.
  • SwitchbotRgbicwwCeilingLight device class with per-sub-light power, brightness, color-temperature and RGB commands, plus the RGBIC effects.
  • New SwitchbotModel.RGBICWW_CEILING_LIGHT, RGBICWWCeilingLightColorMode, exports and the W1162000 API-model mapping.

Design note (verified on real hardware)

Power, brightness, color mode and color temperature are taken from the advertisement, which tracks them reliably. Only the RGB color is read over GATT, because the device's 0x4A01 status response does not carry a usable color power bit — byte 1 stays 0 even when the color sub-light is on, so reading it back would clobber the correct advertised state.

The per-sub-light power command selector was also verified against hardware: 0x49 0x01 <onoff> <selector>, where the selector's bit7 specifies explicit control, bits[3:2] are the color state and bits[1:0] the white state.

Testing

  • pytest — full suite green (1250 passed).
  • Verified end-to-end on a physical RGBICWW Ceiling Light over a USB BLE adapter: discovery/model match, per-sub-light on/off, brightness, color temperature and RGB.

Add support for the SwitchBot RGBICWW Ceiling Light (W1162000). The light
exposes two independently controllable sub-lights: a warm-white (main) light
and a color (RGB) light.

- Advertisement parser for the 0x0011bb10 (normal) and 0x0111bb10 (pairing)
  signatures, decoding both sub-lights' power/brightness, color mode and
  color temperature.
- SwitchbotRgbicwwCeilingLight device with per-sub-light power, brightness,
  color-temperature and RGB commands, plus RGBIC effects.

Power, brightness, color mode and color temperature are taken from the
advertisement, which tracks them reliably. Only the RGB color is read over
GATT: the device's 0x4A01 status response does not carry a usable color
power bit (byte 1 stays 0 even when the color sub-light is on), so reading
it back would clobber the correct advertised state.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@codecov

codecov Bot commented Jun 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
switchbot/__init__.py 100.00% <ø> (ø)
switchbot/adv_parser.py 97.82% <ø> (ø)
switchbot/adv_parsers/light_strip.py 100.00% <100.00%> (ø)
switchbot/const/__init__.py 100.00% <100.00%> (ø)
switchbot/const/light.py 100.00% <100.00%> (ø)
switchbot/devices/device.py 69.90% <ø> (ø)
switchbot/devices/light_strip.py 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@bdraco bdraco closed this Jun 2, 2026
@bdraco

bdraco commented Jun 2, 2026

Copy link
Copy Markdown
Member

Waiting for a PR for switchbot to add this

@Onero-testdev

Copy link
Copy Markdown
Contributor Author

Opened the Home Assistant core PR that consumes this: home-assistant/core#173261 (adds the RGBICWW Ceiling Light to the switchbot integration). It's a draft for now — the manifest still pins PySwitchbot==2.2.0, so its CI will stay red until a release containing SwitchbotRgbicwwCeilingLight is published. Happy to rebase/adjust here whenever you'd like to proceed.

@zerzhang zerzhang reopened this Jun 9, 2026
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.

3 participants