Add unavailable to Vera (#46064)

This commit is contained in:
Greg Dowling 2021-02-08 14:25:54 +00:00 committed by GitHub
parent b1ffe429cd
commit 8f4ea3818d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 26 additions and 4 deletions

View file

@ -232,6 +232,11 @@ class VeraDevice(Generic[DeviceType], Entity):
"""Update the state."""
self.schedule_update_ha_state(True)
def update(self):
"""Force a refresh from the device if the device is unavailable."""
if not self.available:
self.vera_device.refresh()
@property
def name(self) -> str:
"""Return the name of the device."""
@ -276,6 +281,11 @@ class VeraDevice(Generic[DeviceType], Entity):
return attr
@property
def available(self):
"""If device communications have failed return false."""
return not self.vera_device.comm_failure
@property
def unique_id(self) -> str:
"""Return a unique ID.

View file

@ -50,4 +50,5 @@ class VeraBinarySensor(VeraDevice[veraApi.VeraBinarySensor], BinarySensorEntity)
def update(self) -> None:
"""Get the latest data and update the state."""
super().update()
self._state = self.vera_device.is_tripped

View file

@ -93,6 +93,7 @@ class VeraLight(VeraDevice[veraApi.VeraDimmer], LightEntity):
def update(self) -> None:
"""Call to update state."""
super().update()
self._state = self.vera_device.is_switched_on()
if self.vera_device.is_dimmable:
# If it is dimmable, both functions exist. In case color

View file

@ -3,6 +3,6 @@
"name": "Vera",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/vera",
"requirements": ["pyvera==0.3.11"],
"requirements": ["pyvera==0.3.13"],
"codeowners": ["@vangorra"]
}

View file

@ -68,7 +68,7 @@ class VeraSensor(VeraDevice[veraApi.VeraSensor], Entity):
def update(self) -> None:
"""Update the state."""
super().update()
if self.vera_device.category == veraApi.CATEGORY_TEMPERATURE_SENSOR:
self.current_value = self.vera_device.temperature

View file

@ -70,4 +70,5 @@ class VeraSwitch(VeraDevice[veraApi.VeraSwitch], SwitchEntity):
def update(self) -> None:
"""Update device state."""
super().update()
self._state = self.vera_device.is_switched_on()

View file

@ -1880,7 +1880,7 @@ pyuptimerobot==0.0.5
# pyuserinput==0.1.11
# homeassistant.components.vera
pyvera==0.3.11
pyvera==0.3.13
# homeassistant.components.versasense
pyversasense==0.0.6

View file

@ -953,7 +953,7 @@ pytraccar==0.9.0
pytradfri[async]==7.0.6
# homeassistant.components.vera
pyvera==0.3.11
pyvera==0.3.13
# homeassistant.components.vesync
pyvesync==1.2.0

View file

@ -14,6 +14,7 @@ async def test_binary_sensor(
"""Test function."""
vera_device = MagicMock(spec=pv.VeraBinarySensor) # type: pv.VeraBinarySensor
vera_device.device_id = 1
vera_device.comm_failure = False
vera_device.vera_device_id = vera_device.device_id
vera_device.name = "dev1"
vera_device.is_tripped = False

View file

@ -23,6 +23,7 @@ async def test_climate(
vera_device = MagicMock(spec=pv.VeraThermostat) # type: pv.VeraThermostat
vera_device.device_id = 1
vera_device.vera_device_id = vera_device.device_id
vera_device.comm_failure = False
vera_device.name = "dev1"
vera_device.category = pv.CATEGORY_THERMOSTAT
vera_device.power = 10
@ -133,6 +134,7 @@ async def test_climate_f(
vera_device = MagicMock(spec=pv.VeraThermostat) # type: pv.VeraThermostat
vera_device.device_id = 1
vera_device.vera_device_id = vera_device.device_id
vera_device.comm_failure = False
vera_device.name = "dev1"
vera_device.category = pv.CATEGORY_THERMOSTAT
vera_device.power = 10

View file

@ -15,6 +15,7 @@ async def test_cover(
vera_device = MagicMock(spec=pv.VeraCurtain) # type: pv.VeraCurtain
vera_device.device_id = 1
vera_device.vera_device_id = vera_device.device_id
vera_device.comm_failure = False
vera_device.name = "dev1"
vera_device.category = pv.CATEGORY_CURTAIN
vera_device.is_closed = False

View file

@ -16,6 +16,7 @@ async def test_light(
vera_device = MagicMock(spec=pv.VeraDimmer) # type: pv.VeraDimmer
vera_device.device_id = 1
vera_device.vera_device_id = vera_device.device_id
vera_device.comm_failure = False
vera_device.name = "dev1"
vera_device.category = pv.CATEGORY_DIMMER
vera_device.is_switched_on = MagicMock(return_value=False)

View file

@ -16,6 +16,7 @@ async def test_lock(
vera_device = MagicMock(spec=pv.VeraLock) # type: pv.VeraLock
vera_device.device_id = 1
vera_device.vera_device_id = vera_device.device_id
vera_device.comm_failure = False
vera_device.name = "dev1"
vera_device.category = pv.CATEGORY_LOCK
vera_device.is_locked = MagicMock(return_value=False)

View file

@ -23,6 +23,7 @@ async def run_sensor_test(
vera_device = MagicMock(spec=pv.VeraSensor) # type: pv.VeraSensor
vera_device.device_id = 1
vera_device.vera_device_id = vera_device.device_id
vera_device.comm_failure = False
vera_device.name = "dev1"
vera_device.category = category
setattr(vera_device, class_property, "33")
@ -178,6 +179,7 @@ async def test_scene_controller_sensor(
vera_device = MagicMock(spec=pv.VeraSensor) # type: pv.VeraSensor
vera_device.device_id = 1
vera_device.vera_device_id = vera_device.device_id
vera_device.comm_failure = False
vera_device.name = "dev1"
vera_device.category = pv.CATEGORY_SCENE_CONTROLLER
vera_device.get_last_scene_id = MagicMock(return_value="id0")

View file

@ -15,6 +15,7 @@ async def test_switch(
vera_device = MagicMock(spec=pv.VeraSwitch) # type: pv.VeraSwitch
vera_device.device_id = 1
vera_device.vera_device_id = vera_device.device_id
vera_device.comm_failure = False
vera_device.name = "dev1"
vera_device.category = pv.CATEGORY_SWITCH
vera_device.is_switched_on = MagicMock(return_value=False)