Add nibe heat pump select entities (#78942)

This commit is contained in:
Joakim Plate 2022-09-26 02:57:14 +02:00 committed by GitHub
parent 697e7b3a20
commit f8d42e9246
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 1 deletions

View File

@ -835,6 +835,7 @@ omit =
homeassistant/components/nfandroidtv/__init__.py
homeassistant/components/nfandroidtv/notify.py
homeassistant/components/nibe_heatpump/__init__.py
homeassistant/components/nibe_heatpump/select.py
homeassistant/components/nibe_heatpump/sensor.py
homeassistant/components/nibe_heatpump/binary_sensor.py
homeassistant/components/niko_home_control/light.py

View File

@ -39,7 +39,7 @@ from .const import (
LOGGER,
)
PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.SENSOR]
PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.SELECT, Platform.SENSOR]
COIL_READ_RETRIES = 5

View File

@ -0,0 +1,47 @@
"""The Nibe Heat Pump select."""
from __future__ import annotations
from nibe.coil import Coil
from homeassistant.components.select import ENTITY_ID_FORMAT, SelectEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import EntityCategory
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN, CoilEntity, Coordinator
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up platform."""
coordinator: Coordinator = hass.data[DOMAIN][config_entry.entry_id]
async_add_entities(
Select(coordinator, coil)
for coil in coordinator.coils
if coil.is_writable and coil.mappings and not coil.is_boolean
)
class Select(CoilEntity, SelectEntity):
"""Select entity."""
_attr_entity_category = EntityCategory.CONFIG
def __init__(self, coordinator: Coordinator, coil: Coil) -> None:
"""Initialize entity."""
super().__init__(coordinator, coil, ENTITY_ID_FORMAT)
self._attr_options = list(coil.mappings.values())
self._attr_current_option = None
def _async_read_coil(self, coil: Coil) -> None:
self._attr_current_option = coil.value
async def async_select_option(self, option: str) -> None:
"""Support writing value."""
await self._async_write_coil(option)