diff --git a/homeassistant/components/eddystone_temperature/sensor.py b/homeassistant/components/eddystone_temperature/sensor.py index 4178f577021ef1a3dec3b7720e501d8e39561c64..d0bf4a87cc2fdbacbb9b6c811e1eab26d8e02737 100644 --- a/homeassistant/components/eddystone_temperature/sensor.py +++ b/homeassistant/components/eddystone_temperature/sensor.py @@ -24,7 +24,7 @@ from homeassistant.const import ( STATE_UNKNOWN, TEMP_CELSIUS, ) -from homeassistant.core import HomeAssistant +from homeassistant.core import Event, HomeAssistant import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType @@ -59,10 +59,10 @@ def setup_platform( discovery_info: DiscoveryInfoType | None = None, ) -> None: """Validate configuration, create devices and start monitoring thread.""" - bt_device_id = config.get("bt_device_id") + bt_device_id: int = config[CONF_BT_DEVICE_ID] - beacons = config[CONF_BEACONS] - devices = [] + beacons: dict[str, dict[str, str]] = config[CONF_BEACONS] + devices: list[EddystoneTemp] = [] for dev_name, properties in beacons.items(): namespace = get_from_conf(properties, CONF_NAMESPACE, 20) @@ -78,12 +78,12 @@ def setup_platform( if devices: mon = Monitor(hass, devices, bt_device_id) - def monitor_stop(_service_or_event): + def monitor_stop(event: Event) -> None: """Stop the monitor thread.""" _LOGGER.info("Stopping scanner for Eddystone beacons") mon.stop() - def monitor_start(_service_or_event): + def monitor_start(event: Event) -> None: """Start the monitor thread.""" _LOGGER.info("Starting scanner for Eddystone beacons") mon.start() @@ -96,9 +96,9 @@ def setup_platform( _LOGGER.warning("No devices were added") -def get_from_conf(config, config_key, length): +def get_from_conf(config: dict[str, str], config_key: str, length: int) -> str | None: """Retrieve value from config and validate length.""" - string = config.get(config_key) + string = config[config_key] if len(string) != length: _LOGGER.error( "Error in configuration parameter %s: Must be exactly %d " @@ -113,44 +113,30 @@ def get_from_conf(config, config_key, length): class EddystoneTemp(SensorEntity): """Representation of a temperature sensor.""" - def __init__(self, name, namespace, instance): + _attr_device_class = SensorDeviceClass.TEMPERATURE + _attr_native_unit_of_measurement = TEMP_CELSIUS + _attr_should_poll = False + + def __init__(self, name: str, namespace: str, instance: str) -> None: """Initialize a sensor.""" - self._name = name + self._attr_name = name self.namespace = namespace self.instance = instance self.bt_addr = None self.temperature = STATE_UNKNOWN - @property - def name(self): - """Return the name of the sensor.""" - return self._name - @property def native_value(self): """Return the state of the device.""" return self.temperature - @property - def device_class(self): - """Return the class of this device, from component DEVICE_CLASSES.""" - return SensorDeviceClass.TEMPERATURE - - @property - def native_unit_of_measurement(self): - """Return the unit the value is expressed in.""" - return TEMP_CELSIUS - - @property - def should_poll(self): - """Return the polling state.""" - return False - class Monitor: """Continuously scan for BLE advertisements.""" - def __init__(self, hass, devices, bt_device_id): + def __init__( + self, hass: HomeAssistant, devices: list[EddystoneTemp], bt_device_id: int + ) -> None: """Construct interface object.""" self.hass = hass @@ -174,7 +160,7 @@ class Monitor: ) self.scanning = False - def start(self): + def start(self) -> None: """Continuously scan for BLE advertisements.""" if not self.scanning: self.scanner.start() @@ -182,7 +168,7 @@ class Monitor: else: _LOGGER.debug("start() called, but scanner is already running") - def process_packet(self, namespace, instance, temperature): + def process_packet(self, namespace, instance, temperature) -> None: """Assign temperature to device.""" _LOGGER.debug( "Received temperature for <%s,%s>: %d", namespace, instance, temperature @@ -197,7 +183,7 @@ class Monitor: dev.temperature = temperature dev.schedule_update_ha_state() - def stop(self): + def stop(self) -> None: """Signal runner to stop and join thread.""" if self.scanning: _LOGGER.debug("Stopping")