Migrate Recollect Waste integration to use aiorecollect library (#43022)

This commit is contained in:
Aaron Bach 2020-11-09 15:31:48 -07:00 committed by GitHub
parent 0d203da854
commit 5541721899
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 32 deletions

View File

@ -2,6 +2,6 @@
"domain": "recollect_waste", "domain": "recollect_waste",
"name": "ReCollect Waste", "name": "ReCollect Waste",
"documentation": "https://www.home-assistant.io/integrations/recollect_waste", "documentation": "https://www.home-assistant.io/integrations/recollect_waste",
"requirements": ["recollect-waste==1.0.1"], "requirements": ["aiorecollect==0.2.1"],
"codeowners": [] "codeowners": []
} }

View File

@ -2,12 +2,13 @@
from datetime import date, timedelta from datetime import date, timedelta
import logging import logging
import recollect_waste from aiorecollect import Client
from aiorecollect.errors import RecollectError
import voluptuous as vol import voluptuous as vol
from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.components.sensor import PLATFORM_SCHEMA
from homeassistant.const import CONF_NAME 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 from homeassistant.helpers.entity import Entity
_LOGGER = logging.getLogger(__name__) _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.""" """Set up the Recollect Waste platform."""
client = recollect_waste.RecollectWasteClient( session = aiohttp_client.async_get_clientsession(hass)
config[CONF_PLACE_ID], config[CONF_SERVICE_ID] client = Client(config[CONF_PLACE_ID], config[CONF_SERVICE_ID], session=session)
)
# Ensure the client can connect to the API successfully # Ensure the client can connect to the API successfully
# with given place_id and service_id. # with given place_id and service_id.
try: try:
client.get_next_pickup() await client.async_get_next_pickup_event()
except recollect_waste.RecollectWasteException as ex: except RecollectError as err:
_LOGGER.error("Recollect Waste platform error. %s", ex) _LOGGER.error("Error setting up Recollect sensor platform: %s", err)
return return
add_entities([RecollectWasteSensor(config.get(CONF_NAME), client)], True) async_add_entities([RecollectWasteSensor(config.get(CONF_NAME), client)], True)
class RecollectWasteSensor(Entity): class RecollectWasteSensor(Entity):
@ -83,24 +83,25 @@ class RecollectWasteSensor(Entity):
"""Icon to use in the frontend.""" """Icon to use in the frontend."""
return ICON return ICON
def update(self): async def async_update(self):
"""Update device state.""" """Update device state."""
try: try:
pickup_event_array = self.client.get_pickup_events( pickup_event_array = await self.client.async_get_pickup_events(
date.today(), date.today() + timedelta(weeks=4) start_date=date.today(), end_date=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,
}
) )
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,
}
)

View File

@ -220,6 +220,9 @@ aiopvpc==2.0.2
# homeassistant.components.webostv # homeassistant.components.webostv
aiopylgtv==0.3.3 aiopylgtv==0.3.3
# homeassistant.components.recollect_waste
aiorecollect==0.2.1
# homeassistant.components.shelly # homeassistant.components.shelly
aioshelly==0.5.1 aioshelly==0.5.1
@ -1920,9 +1923,6 @@ raincloudy==0.0.7
# homeassistant.components.raspyrfm # homeassistant.components.raspyrfm
raspyrfm-client==1.2.8 raspyrfm-client==1.2.8
# homeassistant.components.recollect_waste
recollect-waste==1.0.1
# homeassistant.components.rainmachine # homeassistant.components.rainmachine
regenmaschine==3.0.0 regenmaschine==3.0.0