Add device_class support to cover component (#5881)
This commit is contained in:
parent
2103bfc824
commit
e4bbe37112
4 changed files with 42 additions and 10 deletions
|
@ -33,6 +33,11 @@ ENTITY_ID_ALL_COVERS = group.ENTITY_ID_FORMAT.format('all_covers')
|
||||||
|
|
||||||
ENTITY_ID_FORMAT = DOMAIN + '.{}'
|
ENTITY_ID_FORMAT = DOMAIN + '.{}'
|
||||||
|
|
||||||
|
DEVICE_CLASSES = [
|
||||||
|
'window', # Window control
|
||||||
|
'garage', # Garage door control
|
||||||
|
]
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
ATTR_CURRENT_POSITION = 'current_position'
|
ATTR_CURRENT_POSITION = 'current_position'
|
||||||
|
|
|
@ -14,6 +14,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
DemoCover(hass, 'Kitchen Window'),
|
DemoCover(hass, 'Kitchen Window'),
|
||||||
DemoCover(hass, 'Hall Window', 10),
|
DemoCover(hass, 'Hall Window', 10),
|
||||||
DemoCover(hass, 'Living Room Window', 70, 50),
|
DemoCover(hass, 'Living Room Window', 70, 50),
|
||||||
|
DemoCover(hass, 'Garage Door', device_class='garage'),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,11 +22,13 @@ class DemoCover(CoverDevice):
|
||||||
"""Representation of a demo cover."""
|
"""Representation of a demo cover."""
|
||||||
|
|
||||||
# pylint: disable=no-self-use
|
# pylint: disable=no-self-use
|
||||||
def __init__(self, hass, name, position=None, tilt_position=None):
|
def __init__(self, hass, name, position=None, tilt_position=None,
|
||||||
|
device_class=None):
|
||||||
"""Initialize the cover."""
|
"""Initialize the cover."""
|
||||||
self.hass = hass
|
self.hass = hass
|
||||||
self._name = name
|
self._name = name
|
||||||
self._position = position
|
self._position = position
|
||||||
|
self._device_class = device_class
|
||||||
self._set_position = None
|
self._set_position = None
|
||||||
self._set_tilt_position = None
|
self._set_tilt_position = None
|
||||||
self._tilt_position = tilt_position
|
self._tilt_position = tilt_position
|
||||||
|
@ -33,6 +36,10 @@ class DemoCover(CoverDevice):
|
||||||
self._closing_tilt = True
|
self._closing_tilt = True
|
||||||
self._unsub_listener_cover = None
|
self._unsub_listener_cover = None
|
||||||
self._unsub_listener_cover_tilt = None
|
self._unsub_listener_cover_tilt = None
|
||||||
|
if position is None:
|
||||||
|
self._closed = True
|
||||||
|
else:
|
||||||
|
self._closed = self.current_cover_position <= 0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
@ -57,17 +64,20 @@ class DemoCover(CoverDevice):
|
||||||
@property
|
@property
|
||||||
def is_closed(self):
|
def is_closed(self):
|
||||||
"""Return if the cover is closed."""
|
"""Return if the cover is closed."""
|
||||||
if self._position is not None:
|
return self._closed
|
||||||
if self.current_cover_position > 0:
|
|
||||||
return False
|
@property
|
||||||
else:
|
def device_class(self):
|
||||||
return True
|
"""Return the class of this device, from component DEVICE_CLASSES."""
|
||||||
else:
|
return self._device_class
|
||||||
return None
|
|
||||||
|
|
||||||
def close_cover(self, **kwargs):
|
def close_cover(self, **kwargs):
|
||||||
"""Close the cover."""
|
"""Close the cover."""
|
||||||
if self._position in (0, None):
|
if self._position == 0:
|
||||||
|
return
|
||||||
|
elif self._position is None:
|
||||||
|
self._closed = True
|
||||||
|
self.schedule_update_ha_state()
|
||||||
return
|
return
|
||||||
|
|
||||||
self._listen_cover()
|
self._listen_cover()
|
||||||
|
@ -83,7 +93,11 @@ class DemoCover(CoverDevice):
|
||||||
|
|
||||||
def open_cover(self, **kwargs):
|
def open_cover(self, **kwargs):
|
||||||
"""Open the cover."""
|
"""Open the cover."""
|
||||||
if self._position in (100, None):
|
if self._position == 100:
|
||||||
|
return
|
||||||
|
elif self._position is None:
|
||||||
|
self._closed = False
|
||||||
|
self.schedule_update_ha_state()
|
||||||
return
|
return
|
||||||
|
|
||||||
self._listen_cover()
|
self._listen_cover()
|
||||||
|
@ -149,6 +163,9 @@ class DemoCover(CoverDevice):
|
||||||
|
|
||||||
if self._position in (100, 0, self._set_position):
|
if self._position in (100, 0, self._set_position):
|
||||||
self.stop_cover()
|
self.stop_cover()
|
||||||
|
|
||||||
|
self._closed = self.current_cover_position <= 0
|
||||||
|
|
||||||
self.schedule_update_ha_state()
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def _listen_cover_tilt(self):
|
def _listen_cover_tilt(self):
|
||||||
|
|
|
@ -168,6 +168,11 @@ class GaradgetCover(CoverDevice):
|
||||||
else:
|
else:
|
||||||
return self._state == STATE_CLOSED
|
return self._state == STATE_CLOSED
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_class(self):
|
||||||
|
"""Return the class of this device, from component DEVICE_CLASSES."""
|
||||||
|
return 'garage'
|
||||||
|
|
||||||
def get_token(self):
|
def get_token(self):
|
||||||
"""Get new token for usage during this session."""
|
"""Get new token for usage during this session."""
|
||||||
args = {
|
args = {
|
||||||
|
|
|
@ -140,3 +140,8 @@ class ZwaveGarageDoor(zwave.ZWaveDeviceEntity, CoverDevice):
|
||||||
def open_cover(self):
|
def open_cover(self):
|
||||||
"""Open the garage door."""
|
"""Open the garage door."""
|
||||||
self._value.data = True
|
self._value.data = True
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_class(self):
|
||||||
|
"""Return the class of this device, from component DEVICE_CLASSES."""
|
||||||
|
return 'garage'
|
||||||
|
|
Loading…
Add table
Reference in a new issue