Skip to content

Commit

Permalink
beautifying
Browse files Browse the repository at this point in the history
  • Loading branch information
OStrama committed Nov 6, 2024
1 parent 8f0dba2 commit c3a4002
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 80 deletions.
2 changes: 1 addition & 1 deletion custom_components/weishaupt_modbus/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from homeassistant.const import CONF_HOST, CONF_PORT, CONF_PREFIX
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv
from homeassistant.config_entries import ConfigFlowResult
# from homeassistant.config_entries import ConfigFlowResult

# from . import wp
from .const import (
Expand Down
21 changes: 21 additions & 0 deletions custom_components/weishaupt_modbus/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,24 @@ class TypeConstants:


TYPES = TypeConstants()


@dataclass(frozen=True)
class DeviceConstants:
"""Device constants."""

SYS = "System"
WP = "Wärmepumpe"
WW = "Warmwasser"
HZ = "Heizkreis"
HZ2 = "Heizkreis2"
HZ3 = "Heizkreis3"
HZ4 = "Heizkreis4"
HZ5 = "Heizkreis5"
W2 = "2. Wärmeerzeuger"
ST = "Statistik"
UK = "Unknown"
IO = "Eingänge/Ausgänge"


DEVICES = DeviceConstants()
4 changes: 2 additions & 2 deletions custom_components/weishaupt_modbus/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ async def fetch_data(self, idx=None):
case TYPES.SENSOR_CALC:
r1 = await self.get_value_a(item)
item_x = ModbusItem(
item.getNumberFromText("x"),
item.get_number_from_text("x"),
"x",
FORMATS.TEMPERATUR,
TYPES.SENSOR_CALC,
Expand All @@ -138,7 +138,7 @@ async def fetch_data(self, idx=None):
)
r2 = await self.get_value(item_x)
item_y = ModbusItem(
item.getNumberFromText("y"),
item.get_number_from_text("y"),
"y",
FORMATS.TEMPERATUR,
TYPES.SENSOR_CALC,
Expand Down
27 changes: 16 additions & 11 deletions custom_components/weishaupt_modbus/entities.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@
from .modbusobject import ModbusObject, ModbusAPI
from .kennfeld import PowerMap
from .coordinator import MyCoordinator
from .hpconst import DEVICES, reverse_device_list
from .const import DEVICES
from .hpconst import reverse_device_list


async def check_available(modbus_item: ModbusItem, config_entry: ConfigEntry) -> bool:
Expand Down Expand Up @@ -185,11 +186,15 @@ def __init__(
self._attr_state_class = SensorStateClass.MEASUREMENT

if self._modbus_item.resultlist is not None:
self._attr_native_min_value = self._modbus_item.getNumberFromText("min")
self._attr_native_max_value = self._modbus_item.getNumberFromText("max")
self._attr_native_step = self._modbus_item.getNumberFromText("step")
self._divider = self._modbus_item.getNumberFromText("divider")
self._attr_device_class = self._modbus_item.getTextFromNumber(-1)
self._attr_native_min_value = self._modbus_item.get_number_from_text(
"min"
)
self._attr_native_max_value = self._modbus_item.get_number_from_text(
"max"
)
self._attr_native_step = self._modbus_item.get_number_from_text("step")
self._divider = self._modbus_item.get_number_from_text("divider")
self._attr_device_class = self._modbus_item.get_text_from_number(-1)

def calc_temperature(self, val: float) -> float:
"""Calcualte temperature."""
Expand Down Expand Up @@ -232,7 +237,7 @@ def translate_val(self, val) -> float:
case FORMATS.PERCENTAGE:
return self.calc_percentage(val)
case FORMATS.STATUS:
return self._modbus_item.getTextFromNumber(val)
return self._modbus_item.get_text_from_number(val)
case FORMATS.UNKNOWN:
return int(val)
case _:
Expand All @@ -244,7 +249,7 @@ def retranslate_val(self, value) -> int:
match self._modbus_item.format:
# logically, this belongs to the ModbusItem, but doing it here
case FORMATS.STATUS:
val = self._modbus_item.getNumberFromText(value)
val = self._modbus_item.get_number_from_text(value)
case _:
val = value * self._divider
return val
Expand Down Expand Up @@ -390,9 +395,9 @@ def __init__(
MyEntity.__init__(self, config_entry, modbus_item, coordinator._modbus_api)

if self._modbus_item.resultlist is not None:
self._attr_native_min_value = self._modbus_item.getNumberFromText("min")
self._attr_native_max_value = self._modbus_item.getNumberFromText("max")
self._attr_native_step = self._modbus_item.getNumberFromText("step")
self._attr_native_min_value = self._modbus_item.get_number_from_text("min")
self._attr_native_max_value = self._modbus_item.get_number_from_text("max")
self._attr_native_step = self._modbus_item.get_number_from_text("step")

@callback
def _handle_coordinator_update(self) -> None:
Expand Down
46 changes: 3 additions & 43 deletions custom_components/weishaupt_modbus/hpconst.py
Original file line number Diff line number Diff line change
@@ -1,53 +1,13 @@
"""Heatpump constants."""

import copy
from dataclasses import dataclass

from homeassistant.components.sensor import SensorDeviceClass

from .const import FORMATS, TYPES
from .const import FORMATS, TYPES, DEVICES
from .items import ModbusItem, StatusItem


@dataclass(frozen=True)
class DeviceConstants:
"""Device constants."""

SYS = "System"
WP = "Wärmepumpe"
WW = "Warmwasser"
HZ = "Heizkreis"
HZ2 = "Heizkreis2"
HZ3 = "Heizkreis3"
HZ4 = "Heizkreis4"
HZ5 = "Heizkreis5"
W2 = "2. Wärmeerzeuger"
ST = "Statistik"
UK = "Unknown"
IO = "Eingänge/Ausgänge"


DEVICES = DeviceConstants()


@dataclass(frozen=True)
class DeviceLists:
"""Device constants."""

SYS = "System"
WP = "Wärmepumpe"
WW = "Warmwasser"
HZ = "Heizkreis"
HZ2 = "Heizkreis2"
HZ3 = "Heizkreis3"
HZ4 = "Heizkreis4"
HZ5 = "Heizkreis5"
W2 = "2. Wärmeerzeuger"
ST = "Statistik"
UK = "Unknown"
IO = "Eingänge/Ausgänge"


reverse_device_list = {
"System": "SYS",
"Wärmepumpe": "WP",
Expand All @@ -63,11 +23,11 @@ class DeviceLists:
"Eingänge/Ausgänge": "IO",
}

##############################################################################################################################
################################################################################
# Listen mit Fehlermeldungen, Warnmeldungen und Statustexte
# Beschreibungstext ist ebenfalls möglich
# class StatusItem(): def __init__(self, number, text, description = None):
##############################################################################################################################
################################################################################

# fmt: off
SYS_FEHLER = [
Expand Down
55 changes: 32 additions & 23 deletions custom_components/weishaupt_modbus/items.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Item classes."""

from .const import TYPES
from .const import TYPES, FormatConstants, TypeConstants, DeviceConstants


# An item of a status, e.g. error code and error text along with a precise description
Expand All @@ -13,38 +13,38 @@ class StatusItem:
_text = None
_description = None

def __init__(self, number, text, description=None) -> None:
def __init__(self, number: int, text: str, description: str = None) -> None:
"""Initialise StatusItem."""
self._number = number
self._text = text
self._description = description

@property
def number(self):
def number(self) -> int:
"""Return number."""
return self._number

@number.setter
def number(self, value) -> None:
def number(self, value: int) -> None:
"""Set number."""
self._number = value

@property
def text(self):
def text(self) -> str:
"""Return text."""
return self._text

@text.setter
def text(self, value) -> None:
def text(self, value: str) -> None:
self._text = value

@property
def description(self):
def description(self) -> str:
"""Return description."""
return self._description

@description.setter
def description(self, value) -> None:
def description(self, value: str) -> None:
self._description = value


Expand All @@ -66,7 +66,15 @@ class ModbusItem:
_state = None
_is_invalid = False

def __init__(self, address, name, mformat, mtype, device, resultlist=None) -> None:
def __init__(
self,
address: int,
name: str,
mformat: FormatConstants,
mtype: TypeConstants,
device: DeviceConstants,
resultlist=None,
) -> None:
"""Initialise ModbusItem."""
self._address = address
self._name = name
Expand All @@ -78,45 +86,46 @@ def __init__(self, address, name, mformat, mtype, device, resultlist=None) -> No
self._is_invalid = False

@property
def is_invalid(self):
def is_invalid(self) -> bool:
"""Return state."""
return self._is_invalid

@is_invalid.setter
def is_invalid(self, val):
def is_invalid(self, val: bool):
self._is_invalid = val

@property
def address(self):
def address(self) -> int:
"""Return address."""
return self._address

@address.setter
def address(self, val):
def address(self, val: int):
"""Return address."""
self._address = val

@property
def state(self):
"""Return state."""
"""Return the state of the item set by modbusobject."""
return self._state

@state.setter
def state(self, val):
"""set the state of the item from modbus"""
self._state = val

@property
def name(self):
def name(self) -> str:
"""Return name."""
return self._name

@name.setter
def name(self, val):
def name(self, val: str):
"""Return name."""
self._name = val

@property
def format(self):
def format(self) -> FormatConstants:
"""Return format."""
return self._format

Expand All @@ -126,12 +135,12 @@ def type(self):
return self._type

@property
def device(self):
def device(self) -> DeviceConstants:
"""Return device."""
return self._device

@device.setter
def device(self, val):
def device(self, val: DeviceConstants):
"""Return device."""
self._device = val

Expand All @@ -140,20 +149,20 @@ def resultlist(self):
"""Return resultlist."""
return self._resultlist

def getTextFromNumber(self, val):
def get_text_from_number(self, val: int) -> str:
"""Get errortext from coresponding number."""
if self._resultlist is None:
return None
for index, item in enumerate(self._resultlist):
for _useless, item in enumerate(self._resultlist):
if val == item.number:
return item.text
return "unbekannt <" + str(val) + ">"

def getNumberFromText(self, val):
def get_number_from_text(self, val: str) -> int:
"""Get number of coresponding errortext."""
if self._resultlist is None:
return None
for index, item in enumerate(self._resultlist):
for _useless, item in enumerate(self._resultlist):
if val == item.text:
return item.number
return -1

0 comments on commit c3a4002

Please sign in to comment.