mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Migrate Recollect Waste integration to use aiorecollect library (#43022)
This commit is contained in:
parent
0d203da854
commit
5541721899
@ -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": []
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user