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",
"name": "ReCollect Waste",
"documentation": "https://www.home-assistant.io/integrations/recollect_waste",
"requirements": ["recollect-waste==1.0.1"],
"requirements": ["aiorecollect==0.2.1"],
"codeowners": []
}

View file

@ -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,
}
)

View file

@ -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