Use NamedTuple - rova (#53292)

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
This commit is contained in:
Marc Mueller 2021-07-22 12:26:50 +02:00 committed by GitHub
parent 1a450c2084
commit 80c535f02e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,9 @@
"""Support for Rova garbage calendar.""" """Support for Rova garbage calendar."""
from __future__ import annotations
from datetime import datetime, timedelta from datetime import datetime, timedelta
import logging import logging
from typing import NamedTuple
from requests.exceptions import ConnectTimeout, HTTPError from requests.exceptions import ConnectTimeout, HTTPError
from rova.rova import Rova from rova.rova import Rova
@ -24,13 +26,36 @@ CONF_HOUSE_NUMBER_SUFFIX = "house_number_suffix"
UPDATE_DELAY = timedelta(hours=12) UPDATE_DELAY = timedelta(hours=12)
SCAN_INTERVAL = timedelta(hours=12) SCAN_INTERVAL = timedelta(hours=12)
# Supported sensor types:
# Key: [json_key, name, icon] class RovaSensorMetadata(NamedTuple):
SENSOR_TYPES = { """Metadata for an individual rova sensor."""
"bio": ["gft", "Biowaste", "mdi:recycle"],
"paper": ["papier", "Paper", "mdi:recycle"], name: str
"plastic": ["pmd", "PET", "mdi:recycle"], json_key: str
"residual": ["restafval", "Residual", "mdi:recycle"], icon: str
SENSOR_TYPES: dict[str, RovaSensorMetadata] = {
"bio": RovaSensorMetadata(
"Biowaste",
json_key="gft",
icon="mdi:recycle",
),
"paper": RovaSensorMetadata(
"Paper",
json_key="papier",
icon="mdi:recycle",
),
"plastic": RovaSensorMetadata(
"PET",
json_key="pmd",
icon="mdi:recycle",
),
"residual": RovaSensorMetadata(
"Residual",
json_key="restafval",
icon="mdi:recycle",
),
} }
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
@ -90,18 +115,15 @@ class RovaSensor(SensorEntity):
self._state = None self._state = None
self._json_key = SENSOR_TYPES[self.sensor_key][0] metadata = SENSOR_TYPES[sensor_key]
self._json_key = metadata.json_key
self._attr_icon = metadata.icon
@property @property
def name(self): def name(self):
"""Return the name.""" """Return the name."""
return f"{self.platform_name}_{self.sensor_key}" return f"{self.platform_name}_{self.sensor_key}"
@property
def icon(self):
"""Return the sensor icon."""
return SENSOR_TYPES[self.sensor_key][2]
@property @property
def device_class(self): def device_class(self):
"""Return the class of this sensor.""" """Return the class of this sensor."""