Fix battery_level error - HomeKit (#21120)

This commit is contained in:
cdce8p 2019-02-17 08:04:29 +01:00 committed by Paulus Schoutsen
parent 8c5763624c
commit 9125e49628
2 changed files with 10 additions and 1 deletions

View file

@ -122,6 +122,8 @@ class HomeAccessory(Accessory):
"""
battery_level = convert_to_float(
new_state.attributes.get(ATTR_BATTERY_LEVEL))
if battery_level is None:
return
self._char_battery.set_value(battery_level)
self._char_low_battery.set_value(battery_level < 20)
_LOGGER.debug('%s: Updated battery level to %d', self.entity_id,

View file

@ -100,7 +100,7 @@ async def test_home_accessory(hass, hk_driver):
assert serv.get_characteristic(CHAR_MODEL).value == 'Test Model'
async def test_battery_service(hass, hk_driver):
async def test_battery_service(hass, hk_driver, caplog):
"""Test battery service."""
entity_id = 'homekit.accessory'
hass.states.async_set(entity_id, None, {ATTR_BATTERY_LEVEL: 50})
@ -124,6 +124,13 @@ async def test_battery_service(hass, hk_driver):
assert acc._char_low_battery.value == 1
assert acc._char_charging.value == 2
hass.states.async_set(entity_id, None, {ATTR_BATTERY_LEVEL: 'error'})
await hass.async_block_till_done()
assert acc._char_battery.value == 15
assert acc._char_low_battery.value == 1
assert acc._char_charging.value == 2
assert 'ERROR' not in caplog.text
# Test charging
hass.states.async_set(entity_id, None, {
ATTR_BATTERY_LEVEL: 10, ATTR_BATTERY_CHARGING: True})