-
-
Notifications
You must be signed in to change notification settings - Fork 37.7k
Add support for SwitchBot Ceiling Lights #159072
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
d55eabe
18fbc03
77d2a8f
77161bd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -4,6 +4,7 @@ | |||||||||||||||||||||||||||||||
| from typing import Any | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| from switchbot_api import ( | ||||||||||||||||||||||||||||||||
| CeilingLightCommands, | ||||||||||||||||||||||||||||||||
| CommonCommands, | ||||||||||||||||||||||||||||||||
| Device, | ||||||||||||||||||||||||||||||||
| Remote, | ||||||||||||||||||||||||||||||||
|
|
@@ -149,11 +150,36 @@ async def _send_rgb_color_command(self, rgb_color: tuple) -> None: | |||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| class SwitchBotCloudCeilingLight(SwitchBotCloudLight): | ||||||||||||||||||||||||||||||||
| """Representation of SwitchBot Ceiling Light.""" | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| _attr_max_color_temp_kelvin = 6500 | ||||||||||||||||||||||||||||||||
| _attr_min_color_temp_kelvin = 2700 | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| _attr_supported_color_modes = {ColorMode.COLOR_TEMP} | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| async def _send_brightness_command(self, brightness: int) -> None: | ||||||||||||||||||||||||||||||||
| """Send a brightness command.""" | ||||||||||||||||||||||||||||||||
| await self.send_api_command( | ||||||||||||||||||||||||||||||||
| CeilingLightCommands.SET_BRIGHTNESS, | ||||||||||||||||||||||||||||||||
| parameters=str(value_map_brightness(brightness)), | ||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| async def _send_color_temperature_command(self, color_temp_kelvin: int) -> None: | ||||||||||||||||||||||||||||||||
| """Send a color temperature command.""" | ||||||||||||||||||||||||||||||||
| await self.send_api_command( | ||||||||||||||||||||||||||||||||
| CeilingLightCommands.SET_COLOR_TEMPERATURE, | ||||||||||||||||||||||||||||||||
| parameters=str(color_temp_kelvin), | ||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
Comment on lines
+164
to
+185
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
Comment on lines
+185
to
+186
|
||||||||||||||||||||||||||||||||
| async def async_turn_on(self, **kwargs: Any) -> None: | |
| """Turn on the ceiling light with the correct color mode.""" | |
| # Only COLOR_TEMP is supported | |
| if (brightness := kwargs.get("brightness")) is not None: | |
| await self._send_brightness_command(brightness) | |
| if (color_temp := kwargs.get("color_temp_kelvin")) is not None: | |
| await self._send_color_temperature_command(color_temp) | |
| if not kwargs: | |
| await self.send_api_command(CommonCommands.TURN_ON) | |
| self._attr_is_on = True | |
| self._attr_color_mode = ColorMode.COLOR_TEMP | |
| await asyncio.sleep(AFTER_COMMAND_REFRESH) | |
| await self.coordinator.async_request_refresh() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These, arguably, could be the same commands as
RGBWWLightCommands, since they use the same actual commands (here: https://github.com/SeraphicCorp/py-switchbot-api/blob/main/switchbot_api/commands.py#L294C30-L294C49).But they're separate on the
py-switchbot-apiside, so I've left them distinct here too. Maybe we should unify that somehow?