Add support for Supla garage doors (#90593)

* Adding support for additional Supla channel types

Newly supported channel types are - CONTROLLINGTHEGARAGEDOOR, DIMMER, RGBLIGHTING.

* Remove light platform additions

* Remove light devices

* Update homeassistant/components/supla/cover.py

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>

* Removing some Black automatic formatting.

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
This commit is contained in:
Matija Kovacic 2023-04-03 13:56:40 +02:00 committed by GitHub
parent 1eadc63cd5
commit 34245a6b3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 9 deletions

View File

@ -30,6 +30,7 @@ SCAN_INTERVAL = timedelta(seconds=10)
SUPLA_FUNCTION_HA_CMP_MAP = {
"CONTROLLINGTHEROLLERSHUTTER": Platform.COVER,
"CONTROLLINGTHEGATE": Platform.COVER,
"CONTROLLINGTHEGARAGEDOOR": Platform.COVER,
"LIGHTSWITCH": Platform.SWITCH,
}
SUPLA_FUNCTION_NONE = "NONE"

View File

@ -16,6 +16,7 @@ _LOGGER = logging.getLogger(__name__)
SUPLA_SHUTTER = "CONTROLLINGTHEROLLERSHUTTER"
SUPLA_GATE = "CONTROLLINGTHEGATE"
SUPLA_GARAGE_DOOR = "CONTROLLINGTHEGARAGEDOOR"
async def async_setup_platform(
@ -44,9 +45,9 @@ async def async_setup_platform(
)
)
elif device_name == SUPLA_GATE:
elif device_name in {SUPLA_GATE, SUPLA_GARAGE_DOOR}:
entities.append(
SuplaGateDoor(
SuplaDoor(
device,
hass.data[DOMAIN][SUPLA_SERVERS][server_name],
hass.data[DOMAIN][SUPLA_COORDINATORS][server_name],
@ -90,33 +91,33 @@ class SuplaCover(SuplaChannel, CoverEntity):
await self.async_action("STOP")
class SuplaGateDoor(SuplaChannel, CoverEntity):
"""Representation of a Supla gate door."""
class SuplaDoor(SuplaChannel, CoverEntity):
"""Representation of a Supla door."""
@property
def is_closed(self) -> bool | None:
"""Return if the gate is closed or not."""
"""Return if the door is closed or not."""
state = self.channel_data.get("state")
if state and "hi" in state:
return state.get("hi")
return None
async def async_open_cover(self, **kwargs: Any) -> None:
"""Open the gate."""
"""Open the door."""
if self.is_closed:
await self.async_action("OPEN_CLOSE")
async def async_close_cover(self, **kwargs: Any) -> None:
"""Close the gate."""
"""Close the door."""
if not self.is_closed:
await self.async_action("OPEN_CLOSE")
async def async_stop_cover(self, **kwargs: Any) -> None:
"""Stop the gate."""
"""Stop the door."""
await self.async_action("OPEN_CLOSE")
async def async_toggle(self, **kwargs: Any) -> None:
"""Toggle the gate."""
"""Toggle the door."""
await self.async_action("OPEN_CLOSE")
@property