diff --git a/.coveragerc b/.coveragerc index 4e88d171d5755c110357b19a92ef605bab94a123..e326f5f44c876d116849810a72871823eaffe53a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1487,6 +1487,7 @@ omit = homeassistant/components/yalexs_ble/binary_sensor.py homeassistant/components/yalexs_ble/entity.py homeassistant/components/yalexs_ble/lock.py + homeassistant/components/yalexs_ble/sensor.py homeassistant/components/yalexs_ble/util.py homeassistant/components/yale_smart_alarm/__init__.py homeassistant/components/yale_smart_alarm/alarm_control_panel.py diff --git a/homeassistant/components/yalexs_ble/__init__.py b/homeassistant/components/yalexs_ble/__init__.py index 265b10a502bc3e4bc831a90d00ca9745d2f6b5b4..3b9481b69824247a0e938b330b647acb07092fd5 100644 --- a/homeassistant/components/yalexs_ble/__init__.py +++ b/homeassistant/components/yalexs_ble/__init__.py @@ -17,7 +17,7 @@ from .const import CONF_KEY, CONF_LOCAL_NAME, CONF_SLOT, DEVICE_TIMEOUT, DOMAIN from .models import YaleXSBLEData from .util import async_find_existing_service_info, bluetooth_callback_matcher -PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.LOCK] +PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.LOCK, Platform.SENSOR] class YaleXSBLEDiscovery(TypedDict): diff --git a/homeassistant/components/yalexs_ble/sensor.py b/homeassistant/components/yalexs_ble/sensor.py new file mode 100644 index 0000000000000000000000000000000000000000..19fee1924e641ca2419105a515496856ce36d0db --- /dev/null +++ b/homeassistant/components/yalexs_ble/sensor.py @@ -0,0 +1,44 @@ +"""Support for yalexs ble sensors.""" +from __future__ import annotations + +from yalexs_ble import ConnectionInfo, LockInfo, LockState + +from homeassistant import config_entries +from homeassistant.components.sensor import SensorDeviceClass, SensorEntity +from homeassistant.const import SIGNAL_STRENGTH_DECIBELS_MILLIWATT +from homeassistant.core import HomeAssistant, callback +from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from .const import DOMAIN +from .entity import YALEXSBLEEntity +from .models import YaleXSBLEData + + +async def async_setup_entry( + hass: HomeAssistant, + entry: config_entries.ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + """Set up YALE XS Bluetooth sensors.""" + data: YaleXSBLEData = hass.data[DOMAIN][entry.entry_id] + async_add_entities([YaleXSBLERSSISensor(data)]) + + +class YaleXSBLERSSISensor(YALEXSBLEEntity, SensorEntity): + """Yale XS Bluetooth RSSI sensor.""" + + _attr_device_class = SensorDeviceClass.SIGNAL_STRENGTH + _attr_entity_category = EntityCategory.DIAGNOSTIC + _attr_entity_registry_enabled_default = False + _attr_has_entity_name = True + _attr_name = "Signal strength" + _attr_native_unit_of_measurement = SIGNAL_STRENGTH_DECIBELS_MILLIWATT + + @callback + def _async_update_state( + self, new_state: LockState, lock_info: LockInfo, connection_info: ConnectionInfo + ) -> None: + """Update the state.""" + self._attr_native_value = connection_info.rssi + super()._async_update_state(new_state, lock_info, connection_info)