Add binary sensor platform to Nibe Heatpump (#78927)

* Add binary_sensor platform

* Enable binary_sensor platform

* Add binary_sensor to coveragerc

* Apply suggestions from code review

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
pull/78961/head
Joakim Plate 2022-09-22 17:57:20 +02:00 committed by GitHub
parent c8491c4404
commit e46180ee76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 1 deletions

View File

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

View File

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

View File

@ -0,0 +1,41 @@
"""The Nibe Heat Pump binary sensors."""
from __future__ import annotations
from nibe.coil import Coil
from homeassistant.components.binary_sensor import ENTITY_ID_FORMAT, BinarySensorEntity
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(
BinarySensor(coordinator, coil)
for coil in coordinator.coils
if not coil.is_writable and coil.is_boolean
)
class BinarySensor(CoilEntity, BinarySensorEntity):
"""Binary sensor entity."""
_attr_entity_category = EntityCategory.DIAGNOSTIC
def __init__(self, coordinator: Coordinator, coil: Coil) -> None:
"""Initialize entity."""
super().__init__(coordinator, coil, ENTITY_ID_FORMAT)
def _async_read_coil(self, coil: Coil) -> None:
self._attr_is_on = coil.value == "ON"