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