Skip to content
Snippets Groups Projects
Unverified Commit ba1266a8 authored by Mike Woudenberg's avatar Mike Woudenberg Committed by GitHub
Browse files

Add sensors to LOQED integration for battery percentage and BLE stength (#95726)

* Add sensors for battery percentage and BLE stength

* Use translatable name for BLE strength, no longer pass enity to sensor
parent d2bcb5fa
No related branches found
No related tags found
No related merge requests found
......@@ -650,6 +650,7 @@ omit =
homeassistant/components/lookin/light.py
homeassistant/components/lookin/media_player.py
homeassistant/components/lookin/sensor.py
homeassistant/components/loqed/sensor.py
homeassistant/components/luci/device_tracker.py
homeassistant/components/luftdaten/sensor.py
homeassistant/components/lupusec/*
......
......@@ -14,7 +14,7 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN
from .coordinator import LoqedDataCoordinator
PLATFORMS: list[str] = [Platform.LOCK]
PLATFORMS: list[str] = [Platform.LOCK, Platform.SENSOR]
_LOGGER = logging.getLogger(__name__)
......
"""Creates LOQED sensors."""
from typing import Final
from homeassistant.components.sensor import (
SensorDeviceClass,
SensorEntity,
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
EntityCategory,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN
from .coordinator import LoqedDataCoordinator, StatusMessage
from .entity import LoqedEntity
SENSORS: Final[tuple[SensorEntityDescription, ...]] = (
SensorEntityDescription(
key="ble_strength",
translation_key="ble_strength",
device_class=SensorDeviceClass.SIGNAL_STRENGTH,
native_unit_of_measurement=SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
entity_registry_enabled_default=False,
),
SensorEntityDescription(
key="battery_percentage",
device_class=SensorDeviceClass.BATTERY,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
native_unit_of_measurement=PERCENTAGE,
),
)
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up the Loqed lock platform."""
coordinator = hass.data[DOMAIN][entry.entry_id]
async_add_entities(LoqedSensor(coordinator, sensor) for sensor in SENSORS)
class LoqedSensor(LoqedEntity, SensorEntity):
"""Representation of Sensor state."""
def __init__(
self, coordinator: LoqedDataCoordinator, description: SensorEntityDescription
) -> None:
"""Initialize the sensor."""
super().__init__(coordinator)
self.entity_description = description
self._attr_unique_id = f"{self.coordinator.lock.id}_{description.key}"
@property
def data(self) -> StatusMessage:
"""Return data object from DataUpdateCoordinator."""
return self.coordinator.lock
@property
def native_value(self) -> int:
"""Return state of sensor."""
return getattr(self.data, self.entity_description.key)
......@@ -17,5 +17,12 @@
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]"
}
},
"entity": {
"sensor": {
"ble_strength": {
"name": "Bluetooth signal"
}
}
}
}
......@@ -48,6 +48,7 @@ def lock_fixture() -> loqed.Lock:
mock_lock.name = "LOQED smart lock"
mock_lock.getWebhooks = AsyncMock(return_value=webhooks_fixture)
mock_lock.bolt_state = "locked"
mock_lock.battery_percentage = 90
return mock_lock
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment