Skip to content

Commit

Permalink
Add entities related to CocoElectricalheatingAction
Browse files Browse the repository at this point in the history
  • Loading branch information
tijsverkoyen committed Jul 26, 2023
1 parent 7260d60 commit c8e383f
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 0 deletions.
11 changes: 11 additions & 0 deletions custom_components/nhc2/binary_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from .entities.comfort_action_basicstate import Nhc2ComfortActionBasicStateEntity
from .entities.comfort_action_mood_active import Nhc2ComfortActionMoodActiveEntity
from .entities.dimmer_action_aligned import Nhc2DimmerActionAlignedEntity
from .entities.electricalheating_action_basicstate import Nhc2ElectricalheatingActionBasicStateEntity
from .entities.electricity_clamp_centralmeter_report_instant_usage import \
Nhc2ElectricityClampCentralmeterReportInstantUsageEntity
from .entities.garagedoor_action_port_closed import Nhc2GaragedoorActionPortClosedEntity
Expand All @@ -42,6 +43,7 @@
from .nhccoco.devices.bellbutton_action import CocoBellbuttonAction
from .nhccoco.devices.comfort_action import CocoComfortAction
from .nhccoco.devices.dimmer_action import CocoDimmerAction
from .nhccoco.devices.electricalheating_action import CocoElectricalheatingAction
from .nhccoco.devices.electricity_clamp_centralmeter import CocoElectricityClampCentralmeter
from .nhccoco.devices.garagedoor_action import CocoGaragedoorAction
from .nhccoco.devices.gate_action import CocoGateAction
Expand Down Expand Up @@ -243,3 +245,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
entities.append(Nhc2HeatingcoolingActionHeatingModeEntity(device_instance, hub, gateway))

async_add_entities(entities)

device_instances = gateway.get_device_instances(CocoElectricalheatingAction)
_LOGGER.info('→ Found %s Electricalheating Actions (undocumented)', len(device_instances))
if len(device_instances) > 0:
entities = []
for device_instance in device_instances:
entities.append(Nhc2ElectricalheatingActionBasicStateEntity(device_instance, hub, gateway))

async_add_entities(entities)
11 changes: 11 additions & 0 deletions custom_components/nhc2/button.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@

from .entities.alloff_action_button import Nhc2AlloffActionButtonEntity
from .entities.comfort_action_button import Nhc2ComfortActionButtonEntity
from .entities.electricalheating_action_button import Nhc2ElectricalHeatingActionButtonEntity
from .nhccoco.devices.alloff_action import CocoAlloffAction
from .nhccoco.devices.comfort_action import CocoComfortAction
from .nhccoco.devices.electricalheating_action import CocoElectricalheatingAction

from .const import DOMAIN, KEY_GATEWAY

Expand Down Expand Up @@ -42,3 +44,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
entities.append(Nhc2ComfortActionButtonEntity(device_instance, hub, gateway))

async_add_entities(entities)

device_instances = gateway.get_device_instances(CocoElectricalheatingAction)
_LOGGER.info('→ Found %s Electricalheating Actions (undocumented)', len(device_instances))
if len(device_instances) > 0:
entities = []
for device_instance in device_instances:
entities.append(Nhc2ElectricalHeatingActionButtonEntity(device_instance, hub, gateway))

async_add_entities(entities)
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
from homeassistant.components.binary_sensor import BinarySensorEntity

from ..const import DOMAIN, BRAND

from ..nhccoco.devices.electricalheating_action import CocoElectricalheatingAction


class Nhc2ElectricalheatingActionBasicStateEntity(BinarySensorEntity):
_attr_has_entity_name = True

def __init__(self, device_instance: CocoElectricalheatingAction, hub, gateway):
"""Initialize a binary sensor."""
self._device = device_instance
self._hub = hub
self._gateway = gateway

self._device.after_change_callbacks.append(self.on_change)

self._attr_available = self._device.is_online
self._attr_unique_id = device_instance.uuid + '_basic_state'
self._attr_should_poll = False

self._attr_state = self._device.is_basic_state_on
self._attr_state_class = None

@property
def name(self) -> str:
return 'Basic State'

@property
def device_info(self):
"""Return the device info."""
return {
'identifiers': {
(DOMAIN, self._device.uuid)
},
'name': self._device.name,
'manufacturer': BRAND,
'model': str.title(f'{self._device.model} ({self._device.type})'),
'via_device': self._hub
}

@property
def is_on(self) -> bool:
return self._device.is_basic_state_on

def on_change(self):
self.schedule_update_ha_state()
46 changes: 46 additions & 0 deletions custom_components/nhc2/entities/electricalheating_action_button.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
from homeassistant.components.button import ButtonEntity

from ..const import DOMAIN, BRAND

from ..nhccoco.devices.electricalheating_action import CocoElectricalheatingAction


class Nhc2ElectricalHeatingActionButtonEntity(ButtonEntity):
_attr_has_entity_name = True
_attr_name = None

def __init__(self, device_instance: CocoElectricalheatingAction, hub, gateway):
"""Initialize a button."""
self._device = device_instance
self._hub = hub
self._gateway = gateway

self._device.after_change_callbacks.append(self.on_change)

self._attr_available = self._device.is_online
self._attr_unique_id = device_instance.uuid
self._attr_should_poll = False

@property
def device_info(self):
"""Return the device info."""
return {
'identifiers': {
(DOMAIN, self._device.uuid)
},
'name': self._device.name,
'manufacturer': BRAND,
'model': str.title(f'{self._device.model} ({self._device.type})'),
'via_device': self._hub
}

@property
def is_on(self) -> bool:
return self._device.is_basic_state_on

def on_change(self):
self.schedule_update_ha_state()

async def async_press(self) -> None:
self._device.press(self._gateway)
self.on_change()

0 comments on commit c8e383f

Please sign in to comment.