Set DEVICE_CLASS_GATE for iSmartGate gates (#39703)

This commit is contained in:
J. Nick Koston 2020-09-06 18:55:20 -05:00 committed by GitHub
parent 1a78d96014
commit 4779916ac4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 37 additions and 7 deletions

View File

@ -12,6 +12,7 @@ import voluptuous as vol
from homeassistant.components.cover import ( from homeassistant.components.cover import (
DEVICE_CLASS_GARAGE, DEVICE_CLASS_GARAGE,
DEVICE_CLASS_GATE,
SUPPORT_CLOSE, SUPPORT_CLOSE,
SUPPORT_OPEN, SUPPORT_OPEN,
CoverEntity, CoverEntity,
@ -119,6 +120,10 @@ class DeviceCover(CoordinatorEntity, CoverEntity):
@property @property
def device_class(self): def device_class(self):
"""Return the class of this device, from component DEVICE_CLASSES.""" """Return the class of this device, from component DEVICE_CLASSES."""
door = self._get_door()
if door.gate:
return DEVICE_CLASS_GATE
return DEVICE_CLASS_GARAGE return DEVICE_CLASS_GARAGE
@property @property

View File

@ -3,7 +3,7 @@
"name": "Gogogate2 and iSmartGate", "name": "Gogogate2 and iSmartGate",
"config_flow": true, "config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/gogogate2", "documentation": "https://www.home-assistant.io/integrations/gogogate2",
"requirements": ["gogogate2-api==2.0.0"], "requirements": ["gogogate2-api==2.0.1"],
"codeowners": ["@vangorra"], "codeowners": ["@vangorra"],
"homekit": { "homekit": {
"models": [ "models": [

View File

@ -668,7 +668,7 @@ glances_api==0.2.0
gntp==1.0.3 gntp==1.0.3
# homeassistant.components.gogogate2 # homeassistant.components.gogogate2
gogogate2-api==2.0.0 gogogate2-api==2.0.1
# homeassistant.components.google # homeassistant.components.google
google-api-python-client==1.6.4 google-api-python-client==1.6.4

View File

@ -334,7 +334,7 @@ gios==0.1.4
glances_api==0.2.0 glances_api==0.2.0
# homeassistant.components.gogogate2 # homeassistant.components.gogogate2
gogogate2-api==2.0.0 gogogate2-api==2.0.1
# homeassistant.components.google # homeassistant.components.google
google-api-python-client==1.6.4 google-api-python-client==1.6.4

View File

@ -16,7 +16,11 @@ from gogogate2_api.common import (
Wifi, Wifi,
) )
from homeassistant.components.cover import DOMAIN as COVER_DOMAIN from homeassistant.components.cover import (
DEVICE_CLASS_GARAGE,
DEVICE_CLASS_GATE,
DOMAIN as COVER_DOMAIN,
)
from homeassistant.components.gogogate2.const import ( from homeassistant.components.gogogate2.const import (
DEVICE_TYPE_GOGOGATE2, DEVICE_TYPE_GOGOGATE2,
DEVICE_TYPE_ISMARTGATE, DEVICE_TYPE_ISMARTGATE,
@ -26,6 +30,7 @@ from homeassistant.components.homeassistant import DOMAIN as HA_DOMAIN
from homeassistant.config import async_process_ha_core_config from homeassistant.config import async_process_ha_core_config
from homeassistant.config_entries import SOURCE_USER from homeassistant.config_entries import SOURCE_USER
from homeassistant.const import ( from homeassistant.const import (
ATTR_DEVICE_CLASS,
CONF_DEVICE, CONF_DEVICE,
CONF_IP_ADDRESS, CONF_IP_ADDRESS,
CONF_NAME, CONF_NAME,
@ -97,6 +102,7 @@ async def test_import(
door_id=1, door_id=1,
permission=True, permission=True,
name="Door1", name="Door1",
gate=False,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.OPENED, status=DoorStatus.OPENED,
sensor=True, sensor=True,
@ -109,6 +115,7 @@ async def test_import(
door_id=2, door_id=2,
permission=True, permission=True,
name=None, name=None,
gate=True,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.UNDEFINED, status=DoorStatus.UNDEFINED,
sensor=True, sensor=True,
@ -121,6 +128,7 @@ async def test_import(
door_id=3, door_id=3,
permission=True, permission=True,
name=None, name=None,
gate=False,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.UNDEFINED, status=DoorStatus.UNDEFINED,
sensor=True, sensor=True,
@ -151,6 +159,7 @@ async def test_import(
door_id=1, door_id=1,
permission=True, permission=True,
name="Door1", name="Door1",
gate=False,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.CLOSED, status=DoorStatus.CLOSED,
sensor=True, sensor=True,
@ -166,6 +175,7 @@ async def test_import(
door_id=1, door_id=1,
permission=True, permission=True,
name=None, name=None,
gate=True,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.CLOSED, status=DoorStatus.CLOSED,
sensor=True, sensor=True,
@ -181,6 +191,7 @@ async def test_import(
door_id=1, door_id=1,
permission=True, permission=True,
name=None, name=None,
gate=False,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.CLOSED, status=DoorStatus.CLOSED,
sensor=True, sensor=True,
@ -249,6 +260,7 @@ async def test_open_close_update(gogogat2api_mock, hass: HomeAssistant) -> None:
door_id=1, door_id=1,
permission=True, permission=True,
name="Door1", name="Door1",
gate=False,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=door_status, status=door_status,
sensor=True, sensor=True,
@ -261,6 +273,7 @@ async def test_open_close_update(gogogat2api_mock, hass: HomeAssistant) -> None:
door_id=2, door_id=2,
permission=True, permission=True,
name=None, name=None,
gate=True,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.UNDEFINED, status=DoorStatus.UNDEFINED,
sensor=True, sensor=True,
@ -273,6 +286,7 @@ async def test_open_close_update(gogogat2api_mock, hass: HomeAssistant) -> None:
door_id=3, door_id=3,
permission=True, permission=True,
name=None, name=None,
gate=False,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.UNDEFINED, status=DoorStatus.UNDEFINED,
sensor=True, sensor=True,
@ -356,6 +370,7 @@ async def test_availability(ismartgateapi_mock, hass: HomeAssistant) -> None:
door_id=1, door_id=1,
permission=True, permission=True,
name="Door1", name="Door1",
gate=False,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.CLOSED, status=DoorStatus.CLOSED,
sensor=True, sensor=True,
@ -370,13 +385,14 @@ async def test_availability(ismartgateapi_mock, hass: HomeAssistant) -> None:
door2=ISmartGateDoor( door2=ISmartGateDoor(
door_id=2, door_id=2,
permission=True, permission=True,
name=None, name="Door2",
gate=True,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.UNDEFINED, status=DoorStatus.CLOSED,
sensor=True, sensor=True,
sensorid=None, sensorid=None,
camera=False, camera=False,
events=0, events=2,
temperature=None, temperature=None,
enabled=True, enabled=True,
apicode="apicode0", apicode="apicode0",
@ -386,6 +402,7 @@ async def test_availability(ismartgateapi_mock, hass: HomeAssistant) -> None:
door_id=3, door_id=3,
permission=True, permission=True,
name=None, name=None,
gate=False,
mode=DoorMode.GARAGE, mode=DoorMode.GARAGE,
status=DoorStatus.UNDEFINED, status=DoorStatus.UNDEFINED,
sensor=True, sensor=True,
@ -421,6 +438,14 @@ async def test_availability(ismartgateapi_mock, hass: HomeAssistant) -> None:
assert await hass.config_entries.async_setup(config_entry.entry_id) assert await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
assert hass.states.get("cover.door1") assert hass.states.get("cover.door1")
assert (
hass.states.get("cover.door1").attributes[ATTR_DEVICE_CLASS]
== DEVICE_CLASS_GARAGE
)
assert (
hass.states.get("cover.door2").attributes[ATTR_DEVICE_CLASS]
== DEVICE_CLASS_GATE
)
api.info.side_effect = Exception("Error") api.info.side_effect = Exception("Error")