From e46180ee76d02e98fc226fc21bcc1adfc4744554 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 22 Sep 2022 17:57:20 +0200 Subject: [PATCH] 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 Co-authored-by: Martin Hjelmare --- .coveragerc | 1 + .../components/nibe_heatpump/__init__.py | 2 +- .../components/nibe_heatpump/binary_sensor.py | 41 +++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/nibe_heatpump/binary_sensor.py diff --git a/.coveragerc b/.coveragerc index 54d79c3aeda..ca2a0a5010b 100644 --- a/.coveragerc +++ b/.coveragerc @@ -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/* diff --git a/homeassistant/components/nibe_heatpump/__init__.py b/homeassistant/components/nibe_heatpump/__init__.py index 7285f5ce642..79b6b50e843 100644 --- a/homeassistant/components/nibe_heatpump/__init__.py +++ b/homeassistant/components/nibe_heatpump/__init__.py @@ -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 diff --git a/homeassistant/components/nibe_heatpump/binary_sensor.py b/homeassistant/components/nibe_heatpump/binary_sensor.py new file mode 100644 index 00000000000..dda530f8457 --- /dev/null +++ b/homeassistant/components/nibe_heatpump/binary_sensor.py @@ -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"