Modernize Sleepiq and add new entities (#66336)
Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
parent
beb30a1ff1
commit
a367d2be40
22 changed files with 330 additions and 400 deletions
|
@ -1,10 +1,15 @@
|
|||
"""Support for SleepIQ sensors."""
|
||||
"""Support for SleepIQ Sensor."""
|
||||
from __future__ import annotations
|
||||
|
||||
from asyncsleepiq import SleepIQBed, SleepIQSleeper
|
||||
|
||||
from homeassistant.components.sensor import SensorEntity
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||
|
||||
from .const import BED, DOMAIN, SIDES, SLEEP_NUMBER
|
||||
from .const import DOMAIN, SLEEP_NUMBER
|
||||
from .coordinator import SleepIQDataUpdateCoordinator
|
||||
from .entity import SleepIQSensor
|
||||
|
||||
|
@ -17,27 +22,27 @@ async def async_setup_entry(
|
|||
"""Set up the SleepIQ bed sensors."""
|
||||
coordinator: SleepIQDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
|
||||
async_add_entities(
|
||||
SleepNumberSensor(coordinator, bed_id, side)
|
||||
for side in SIDES
|
||||
for bed_id in coordinator.data
|
||||
if getattr(coordinator.data[bed_id][BED], side) is not None
|
||||
SleepNumberSensorEntity(coordinator, bed, sleeper)
|
||||
for bed in coordinator.client.beds.values()
|
||||
for sleeper in bed.sleepers
|
||||
)
|
||||
|
||||
|
||||
class SleepNumberSensor(SleepIQSensor, SensorEntity):
|
||||
"""Implementation of a SleepIQ sensor."""
|
||||
class SleepNumberSensorEntity(SleepIQSensor, SensorEntity):
|
||||
"""Representation of an SleepIQ Entity with CoordinatorEntity."""
|
||||
|
||||
_attr_icon = "mdi:bed"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
coordinator: SleepIQDataUpdateCoordinator,
|
||||
bed_id: str,
|
||||
side: str,
|
||||
coordinator: DataUpdateCoordinator,
|
||||
bed: SleepIQBed,
|
||||
sleeper: SleepIQSleeper,
|
||||
) -> None:
|
||||
"""Initialize the SleepIQ sleep number sensor."""
|
||||
super().__init__(coordinator, bed_id, side, SLEEP_NUMBER)
|
||||
"""Initialize the sensor."""
|
||||
super().__init__(coordinator, bed, sleeper, SLEEP_NUMBER)
|
||||
|
||||
@callback
|
||||
def _async_update_attrs(self) -> None:
|
||||
"""Update sensor attributes."""
|
||||
super()._async_update_attrs()
|
||||
self._attr_native_value = self.side_data.sleep_number
|
||||
self._attr_native_value = self.sleeper.sleep_number
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue