diff --git a/homeassistant/components/scene/hunterdouglas_powerview.py b/homeassistant/components/scene/hunterdouglas_powerview.py index 0f5ba85c342d7498aa14394398cca1267f6b2308..4f5ac5725a3d8735fabe48daebe30cc2ee21b5f7 100644 --- a/homeassistant/components/scene/hunterdouglas_powerview.py +++ b/homeassistant/components/scene/hunterdouglas_powerview.py @@ -16,7 +16,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import async_generate_entity_id _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['aiopvapi==1.4'] +REQUIREMENTS = ['aiopvapi==1.5.4'] ENTITY_ID_FORMAT = DOMAIN + '.{}' HUB_ADDRESS = 'address' @@ -39,46 +39,53 @@ STATE_ATTRIBUTE_ROOM_NAME = 'roomName' @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up home assistant scene entries.""" - from aiopvapi.hub import Hub + # from aiopvapi.hub import Hub + from aiopvapi.scenes import Scenes + from aiopvapi.rooms import Rooms + from aiopvapi.resources.scene import Scene as PvScene hub_address = config.get(HUB_ADDRESS) websession = async_get_clientsession(hass) - _hub = Hub(hub_address, hass.loop, websession) - _scenes = yield from _hub.scenes.get_scenes() - _rooms = yield from _hub.rooms.get_rooms() + _scenes = yield from Scenes( + hub_address, hass.loop, websession).get_resources() + _rooms = yield from Rooms( + hub_address, hass.loop, websession).get_resources() if not _scenes or not _rooms: + _LOGGER.error( + "Unable to initialize PowerView hub: %s", hub_address) return - pvscenes = (PowerViewScene(hass, _scene, _rooms, _hub) - for _scene in _scenes[SCENE_DATA]) + pvscenes = (PowerViewScene(hass, + PvScene(_raw_scene, hub_address, hass.loop, + websession), _rooms) + for _raw_scene in _scenes[SCENE_DATA]) async_add_devices(pvscenes) class PowerViewScene(Scene): """Representation of a Powerview scene.""" - def __init__(self, hass, scene_data, room_data, hub): + def __init__(self, hass, scene, room_data): """Initialize the scene.""" - self.hub = hub + self._scene = scene self.hass = hass - self._sync_room_data(room_data, scene_data) - self._name = scene_data[SCENE_NAME] - self._scene_id = scene_data[SCENE_ID] + self._room_name = None + self._sync_room_data(room_data) self.entity_id = async_generate_entity_id( - ENTITY_ID_FORMAT, str(scene_data[SCENE_ID]), hass=hass) + ENTITY_ID_FORMAT, str(self._scene.id), hass=hass) - def _sync_room_data(self, room_data, scene_data): - """Sync the room data.""" + def _sync_room_data(self, room_data): + """Sync room data.""" room = next((room for room in room_data[ROOM_DATA] - if room[ROOM_ID] == scene_data[ROOM_ID_IN_SCENE]), {}) + if room[ROOM_ID] == self._scene.room_id), {}) self._room_name = room.get(ROOM_NAME, '') @property def name(self): """Return the name of the scene.""" - return self._name + return self._scene.name @property def device_state_attributes(self): @@ -92,4 +99,4 @@ class PowerViewScene(Scene): def async_activate(self): """Activate scene. Try to get entities into requested state.""" - yield from self.hub.scenes.activate_scene(self._scene_id) + yield from self._scene.activate() diff --git a/requirements_all.txt b/requirements_all.txt index 2e16faad408d10624e19a2271e963db14fd7a624..5891c62f7ea4cbb716fea9af2bfa5fbdd34e0437 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -74,7 +74,7 @@ aiolifx==0.6.0 aiolifx_effects==0.1.2 # homeassistant.components.scene.hunterdouglas_powerview -aiopvapi==1.4 +aiopvapi==1.5.4 # homeassistant.components.alarmdecoder alarmdecoder==0.12.3