Migrate Recollect Waste integration to use aiorecollect library (#43022)
This commit is contained in:
parent
0d203da854
commit
5541721899
3 changed files with 33 additions and 32 deletions
|
@ -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": []
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue