diff --git a/homeassistant/components/recollect_waste/manifest.json b/homeassistant/components/recollect_waste/manifest.json index b04917d450c..bed07f919ef 100644 --- a/homeassistant/components/recollect_waste/manifest.json +++ b/homeassistant/components/recollect_waste/manifest.json @@ -2,6 +2,6 @@ "domain": "recollect_waste", "name": "ReCollect Waste", "documentation": "https://www.home-assistant.io/integrations/recollect_waste", - "requirements": ["recollect-waste==1.0.1"], + "requirements": ["aiorecollect==0.2.1"], "codeowners": [] } diff --git a/homeassistant/components/recollect_waste/sensor.py b/homeassistant/components/recollect_waste/sensor.py index 1523d67aa0b..d360ff8f301 100644 --- a/homeassistant/components/recollect_waste/sensor.py +++ b/homeassistant/components/recollect_waste/sensor.py @@ -2,12 +2,13 @@ from datetime import date, timedelta import logging -import recollect_waste +from aiorecollect import Client +from aiorecollect.errors import RecollectError import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import CONF_NAME -import homeassistant.helpers.config_validation as cv +from homeassistant.helpers import aiohttp_client, config_validation as cv from homeassistant.helpers.entity import Entity _LOGGER = logging.getLogger(__name__) @@ -31,21 +32,20 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -def setup_platform(hass, config, add_entities, discovery_info=None): +async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): """Set up the Recollect Waste platform.""" - client = recollect_waste.RecollectWasteClient( - config[CONF_PLACE_ID], config[CONF_SERVICE_ID] - ) + session = aiohttp_client.async_get_clientsession(hass) + client = Client(config[CONF_PLACE_ID], config[CONF_SERVICE_ID], session=session) # Ensure the client can connect to the API successfully # with given place_id and service_id. try: - client.get_next_pickup() - except recollect_waste.RecollectWasteException as ex: - _LOGGER.error("Recollect Waste platform error. %s", ex) + await client.async_get_next_pickup_event() + except RecollectError as err: + _LOGGER.error("Error setting up Recollect sensor platform: %s", err) return - add_entities([RecollectWasteSensor(config.get(CONF_NAME), client)], True) + async_add_entities([RecollectWasteSensor(config.get(CONF_NAME), client)], True) class RecollectWasteSensor(Entity): @@ -83,24 +83,25 @@ class RecollectWasteSensor(Entity): """Icon to use in the frontend.""" return ICON - def update(self): + async def async_update(self): """Update device state.""" try: - pickup_event_array = self.client.get_pickup_events( - date.today(), date.today() + timedelta(weeks=4) - ) - except recollect_waste.RecollectWasteException as ex: - _LOGGER.error("Recollect Waste platform error. %s", ex) - else: - pickup_event = pickup_event_array[0] - next_pickup_event = pickup_event_array[1] - next_date = str(next_pickup_event.event_date) - self._state = pickup_event.event_date - self._attributes.update( - { - ATTR_PICKUP_TYPES: pickup_event.pickup_types, - ATTR_AREA_NAME: pickup_event.area_name, - ATTR_NEXT_PICKUP_TYPES: next_pickup_event.pickup_types, - ATTR_NEXT_PICKUP_DATE: next_date, - } + pickup_event_array = await self.client.async_get_pickup_events( + start_date=date.today(), end_date=date.today() + timedelta(weeks=4) ) + except RecollectError as err: + _LOGGER.error("Error while requesting data from Recollect: %s", err) + return + + pickup_event = pickup_event_array[0] + next_pickup_event = pickup_event_array[1] + next_date = str(next_pickup_event.date) + self._state = pickup_event.date + self._attributes.update( + { + ATTR_PICKUP_TYPES: pickup_event.pickup_types, + ATTR_AREA_NAME: pickup_event.area_name, + ATTR_NEXT_PICKUP_TYPES: next_pickup_event.pickup_types, + ATTR_NEXT_PICKUP_DATE: next_date, + } + ) diff --git a/requirements_all.txt b/requirements_all.txt index 66e9d9ea920..d076614466d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -220,6 +220,9 @@ aiopvpc==2.0.2 # homeassistant.components.webostv aiopylgtv==0.3.3 +# homeassistant.components.recollect_waste +aiorecollect==0.2.1 + # homeassistant.components.shelly aioshelly==0.5.1 @@ -1920,9 +1923,6 @@ raincloudy==0.0.7 # homeassistant.components.raspyrfm raspyrfm-client==1.2.8 -# homeassistant.components.recollect_waste -recollect-waste==1.0.1 - # homeassistant.components.rainmachine regenmaschine==3.0.0