Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit

Permalink
add Heizkreis Komfort/Normal/Absenk
Browse files Browse the repository at this point in the history
MadOne committed Aug 8, 2024
1 parent 0367c8e commit c6c09ea
Showing 11 changed files with 157 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
/*/
!/custom_components/
/custom_components/__pycache__/
/custom_components/weishaupt_modbus/__pycache__/
!.github/workflows/
!.gitignore
!README.md
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
129 changes: 129 additions & 0 deletions custom_components/weishaupt_modbus/number.py
Original file line number Diff line number Diff line change
@@ -38,6 +38,9 @@ async def async_setup_entry(
WW_Absenk(host, port),
HK_Party(host, port),
HK_Pause(host, port),
HK_Raum_Soll_Komfort(host, port),
HK_Raum_Soll_Normal(host, port),
HK_Raum_Soll_Absenk(host, port),
],
update_before_add=True,
)
@@ -225,3 +228,129 @@ def device_info(self) -> DeviceInfo:
return {
"identifiers": {(DOMAIN, "Heizkreis")},
}


class HK_Raum_Soll_Komfort(NumberEntity):
"""Representation of a WEM Portal number."""

_attr_name = "HK Raumsollwert Komfort"
_attr_unique_id = DOMAIN + _attr_name
_attr_native_value = 0
_attr_should_poll = True
_attr_native_min_value = 20
_attr_native_max_value = 30
_attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS

def __init__(self, host, port) -> None:
"""Init."""
self._host = host
self._port = port
# whp = wp.heat_pump(host, port)
# whp.connect()
# self._attr_native_value = whp.WW_Absenk
# self.async_write_ha_state()

async def async_set_native_value(self, value: float) -> None:
"""Update the current value."""
whp = wp.heat_pump(self._host, self._port)
whp.connect()
whp.HK_RaumSoll_Komfort = int(value)
self._attr_native_value = whp.HK_RaumSoll_Komfort
self.async_write_ha_state()

async def async_update(self) -> None:
"""Update Entity Only used by the generic entity update service."""
whp = wp.heat_pump(self._host, self._port)
whp.connect()
self._attr_native_value = whp.HK_RaumSoll_Komfort

@property
def device_info(self) -> DeviceInfo:
"""Information about this entity/device."""
return {
"identifiers": {(DOMAIN, "Heizkreis")},
}


class HK_Raum_Soll_Normal(NumberEntity):
"""Representation of a WEM Portal number."""

_attr_name = "HK Raumsollwert Normal"
_attr_unique_id = DOMAIN + _attr_name
_attr_native_value = 0
_attr_should_poll = True
_attr_native_min_value = 15
_attr_native_max_value = 25
_attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS

def __init__(self, host, port) -> None:
"""Init."""
self._host = host
self._port = port
# whp = wp.heat_pump(host, port)
# whp.connect()
# self._attr_native_value = whp.WW_Absenk
# self.async_write_ha_state()

async def async_set_native_value(self, value: float) -> None:
"""Update the current value."""
whp = wp.heat_pump(self._host, self._port)
whp.connect()
whp.HK_RaumSoll_Normal = int(value)
self._attr_native_value = whp.HK_RaumSoll_Normal
self.async_write_ha_state()

async def async_update(self) -> None:
"""Update Entity Only used by the generic entity update service."""
whp = wp.heat_pump(self._host, self._port)
whp.connect()
self._attr_native_value = whp.HK_RaumSoll_Normal

@property
def device_info(self) -> DeviceInfo:
"""Information about this entity/device."""
return {
"identifiers": {(DOMAIN, "Heizkreis")},
}


class HK_Raum_Soll_Absenk(NumberEntity):
"""Representation of a WEM Portal number."""

_attr_name = "HK Raumsollwert Absenk"
_attr_unique_id = DOMAIN + _attr_name
_attr_native_value = 0
_attr_should_poll = True
_attr_native_min_value = 10
_attr_native_max_value = 20
_attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS

def __init__(self, host, port) -> None:
"""Init."""
self._host = host
self._port = port
# whp = wp.heat_pump(host, port)
# whp.connect()
# self._attr_native_value = whp.WW_Absenk
# self.async_write_ha_state()

async def async_set_native_value(self, value: float) -> None:
"""Update the current value."""
whp = wp.heat_pump(self._host, self._port)
whp.connect()
whp.HK_RaumSoll_Absenk = int(value)
self._attr_native_value = whp.HK_RaumSoll_Absenk
self.async_write_ha_state()

async def async_update(self) -> None:
"""Update Entity Only used by the generic entity update service."""
whp = wp.heat_pump(self._host, self._port)
whp.connect()
self._attr_native_value = whp.HK_RaumSoll_Absenk

@property
def device_info(self) -> DeviceInfo:
"""Information about this entity/device."""
return {
"identifiers": {(DOMAIN, "Heizkreis")},
}
27 changes: 27 additions & 0 deletions custom_components/weishaupt_modbus/wp.py
Original file line number Diff line number Diff line change
@@ -326,6 +326,33 @@ def HK_Pause_Party(self, val):
# self.WWP.write_register(41104, return_value, slave=1)
self.WWP.write_register(41104, val, slave=1)

@property
def HK_RaumSoll_Komfort(self):
"""Test."""
return self.WWP.read_holding_registers(41105, slave=1).registers[0] / 10

@HK_RaumSoll_Komfort.setter
def HK_RaumSoll_Komfort(self, value):
self.WWP.write_register(41105, value * 10, slave=1)

@property
def HK_RaumSoll_Normal(self):
"""Test."""
return self.WWP.read_holding_registers(41106, slave=1).registers[0] / 10

@HK_RaumSoll_Normal.setter
def HK_RaumSoll_Normal(self, value):
self.WWP.write_register(41106, value * 10, slave=1)

@property
def HK_RaumSoll_Absenk(self):
"""Test."""
return self.WWP.read_holding_registers(41107, slave=1).registers[0] / 10

@HK_RaumSoll_Absenk.setter
def HK_RaumSoll_Absenk(self, value):
self.WWP.write_register(41107, value * 10, slave=1)

#####################
# Warm Water #
#####################

0 comments on commit c6c09ea

Please sign in to comment.