Add RGBICWW Light Bars support to switchbot (#176485)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Fan Kai <fankai@onero.com>
This commit is contained in:
Onero-testdev
2026-09-16 12:54:44 +00:00
committed by GitHub
co-authored by Claude Opus 4.8 Fan Kai
parent e299eca19c
commit fd08cb8a4c
4 changed files with 37 additions and 0 deletions
@@ -157,6 +157,7 @@ PLATFORMS_BY_TYPE = {
SupportedModels.FLOOR_LAMP.value: [Platform.LIGHT, Platform.SENSOR],
SupportedModels.STRIP_LIGHT_3.value: [Platform.LIGHT, Platform.SENSOR],
SupportedModels.RGBICWW_FLOOR_LAMP.value: [Platform.LIGHT, Platform.SENSOR],
SupportedModels.RGBICWW_LIGHT_BARS.value: [Platform.LIGHT, Platform.SENSOR],
SupportedModels.RGBICWW_STRIP_LIGHT.value: [Platform.LIGHT, Platform.SENSOR],
SupportedModels.PERMANENT_OUTDOOR_LIGHT.value: [Platform.LIGHT, Platform.SENSOR],
SupportedModels.PLUG_MINI_EU.value: [Platform.SWITCH, Platform.SENSOR],
@@ -247,6 +248,7 @@ CLASS_BY_DEVICE = {
SupportedModels.FLOOR_LAMP.value: switchbot.SwitchbotStripLight3,
SupportedModels.STRIP_LIGHT_3.value: switchbot.SwitchbotStripLight3,
SupportedModels.RGBICWW_FLOOR_LAMP.value: switchbot.SwitchbotRgbicLight,
SupportedModels.RGBICWW_LIGHT_BARS.value: switchbot.SwitchbotRgbicLight,
SupportedModels.RGBICWW_STRIP_LIGHT.value: switchbot.SwitchbotRgbicLight,
SupportedModels.PERMANENT_OUTDOOR_LIGHT.value: (
switchbot.SwitchbotPermanentOutdoorLight
@@ -57,6 +57,7 @@ class SupportedModels(StrEnum):
STRIP_LIGHT_3 = "strip_light_3"
RGBICWW_STRIP_LIGHT = "rgbicww_strip_light"
RGBICWW_FLOOR_LAMP = "rgbicww_floor_lamp"
RGBICWW_LIGHT_BARS = "rgbicww_light_bars"
PERMANENT_OUTDOOR_LIGHT = "permanent_outdoor_light"
PLUG_MINI_EU = "plug_mini_eu"
RELAY_SWITCH_2PM = "relay_switch_2pm"
@@ -113,6 +114,7 @@ CONNECTABLE_SUPPORTED_MODEL_TYPES = {
SwitchbotModel.STRIP_LIGHT_3: SupportedModels.STRIP_LIGHT_3,
SwitchbotModel.RGBICWW_STRIP_LIGHT: SupportedModels.RGBICWW_STRIP_LIGHT,
SwitchbotModel.RGBICWW_FLOOR_LAMP: SupportedModels.RGBICWW_FLOOR_LAMP,
SwitchbotModel.RGBICWW_LIGHT_BARS: SupportedModels.RGBICWW_LIGHT_BARS,
SwitchbotModel.PERMANENT_OUTDOOR_LIGHT: SupportedModels.PERMANENT_OUTDOOR_LIGHT,
SwitchbotModel.PLUG_MINI_EU: SupportedModels.PLUG_MINI_EU,
SwitchbotModel.RELAY_SWITCH_2PM: SupportedModels.RELAY_SWITCH_2PM,
@@ -173,6 +175,7 @@ ENCRYPTED_MODELS = {
SwitchbotModel.STRIP_LIGHT_3,
SwitchbotModel.RGBICWW_STRIP_LIGHT,
SwitchbotModel.RGBICWW_FLOOR_LAMP,
SwitchbotModel.RGBICWW_LIGHT_BARS,
SwitchbotModel.PERMANENT_OUTDOOR_LIGHT,
SwitchbotModel.PLUG_MINI_EU,
SwitchbotModel.RELAY_SWITCH_2PM,
@@ -208,6 +211,7 @@ ENCRYPTED_SWITCHBOT_MODEL_TO_CLASS: dict[
SwitchbotModel.STRIP_LIGHT_3: switchbot.SwitchbotStripLight3,
SwitchbotModel.RGBICWW_STRIP_LIGHT: switchbot.SwitchbotRgbicLight,
SwitchbotModel.RGBICWW_FLOOR_LAMP: switchbot.SwitchbotRgbicLight,
SwitchbotModel.RGBICWW_LIGHT_BARS: switchbot.SwitchbotRgbicLight,
SwitchbotModel.PERMANENT_OUTDOOR_LIGHT: switchbot.SwitchbotPermanentOutdoorLight,
SwitchbotModel.PLUG_MINI_EU: switchbot.SwitchbotRelaySwitch,
SwitchbotModel.RELAY_SWITCH_2PM: switchbot.SwitchbotRelaySwitch2PM,
+29
View File
@@ -1232,6 +1232,35 @@ RGBICWW_STRIP_LIGHT_SERVICE_INFO = BluetoothServiceInfoBleak(
)
RGBICWW_LIGHT_BARS_SERVICE_INFO = BluetoothServiceInfoBleak(
name="RGBICWW Light Bars",
manufacturer_data={
2409: b'(7/L\x94\xb2\x0c\x9e"\x00\x11:\x00',
},
service_data={
"0000fd3d-0000-1000-8000-00805f9b34fb": b"\x00\x00\x00\x00\x11\xbe\xf8"
},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
address="AA:BB:CC:DD:EE:FF",
rssi=-60,
source="local",
advertisement=generate_advertisement_data(
local_name="RGBICWW Light Bars",
manufacturer_data={
2409: b'(7/L\x94\xb2\x0c\x9e"\x00\x11:\x00',
},
service_data={
"0000fd3d-0000-1000-8000-00805f9b34fb": b"\x00\x00\x00\x00\x11\xbe\xf8"
},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
),
device=generate_ble_device("AA:BB:CC:DD:EE:FF", "RGBICWW Light Bars"),
time=0,
connectable=True,
tx_power=-127,
)
RGBICWW_FLOOR_LAMP_SERVICE_INFO = BluetoothServiceInfoBleak(
name="RGBICWW Floor Lamp",
manufacturer_data={
+2
View File
@@ -33,6 +33,7 @@ from . import (
PERMANENT_OUTDOOR_LIGHT_SERVICE_INFO,
RGBIC_NEON_LIGHT_SERVICE_INFO,
RGBICWW_FLOOR_LAMP_SERVICE_INFO,
RGBICWW_LIGHT_BARS_SERVICE_INFO,
RGBICWW_STRIP_LIGHT_SERVICE_INFO,
STRIP_LIGHT_3_SERVICE_INFO,
WOSTRIP_SERVICE_INFO,
@@ -407,6 +408,7 @@ async def test_strip_light_services_exception(
"SwitchbotRgbicLight",
),
("rgbicww_floor_lamp", RGBICWW_FLOOR_LAMP_SERVICE_INFO, "SwitchbotRgbicLight"),
("rgbicww_light_bars", RGBICWW_LIGHT_BARS_SERVICE_INFO, "SwitchbotRgbicLight"),
(
"permanent_outdoor_light",
PERMANENT_OUTDOOR_LIGHT_SERVICE_INFO,