Skip to content

Commit

Permalink
Add groups of parameters for display (#71)
Browse files Browse the repository at this point in the history
This can be used to group parameters for display purposes or generate abstractions around parameters.
  • Loading branch information
elupus authored Nov 30, 2022
1 parent 867c155 commit 3a769a0
Show file tree
Hide file tree
Showing 2 changed files with 222 additions and 1 deletion.
2 changes: 1 addition & 1 deletion nibe/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "1.3.1"
__version__ = "1.4.0"
221 changes: 221 additions & 0 deletions nibe/coil_groups.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
from __future__ import annotations

from dataclasses import dataclass

from .heatpump import Series


@dataclass
class CoilGroup:
name: str


@dataclass
class UnitCoilGroup(CoilGroup):
prio: int
cooling_with_room_sensor: int


@dataclass
class CompressorCoilGroup(CoilGroup):
pass


@dataclass
class ClimateCoilGroup(CoilGroup):
active_accessory: int | None
current: int
setpoint_heat: int
setpoint_cool: int
mixing_valve_state: int
use_room_sensor: int


@dataclass
class WaterHeaterCoilGroup(CoilGroup):
hot_water_load: int
hot_water_comfort_mode: int
start_temperature: dict[str, int]
stop_temperature: dict[str, int]
active_accessory: int | None
temporary_lux: int | None


@dataclass
class FanCoilGroup(CoilGroup):
speed: int | None
speeds: dict[str, int]


_UNIT_COILGROUPS_F = {
"main": UnitCoilGroup(name="Main", prio=43086, cooling_with_room_sensor=47340),
}

_UNIT_COILGROUPS_S = {
"main": UnitCoilGroup(name="Main", prio=31029, cooling_with_room_sensor=40171)
}

UNIT_COILGROUPS = {
Series.F: _UNIT_COILGROUPS_F,
Series.S: _UNIT_COILGROUPS_S,
}

_CLIMATE_COILGROUPS_F = {
"s1": ClimateCoilGroup(
name="Climate System S1",
current=40033,
setpoint_heat=47398,
setpoint_cool=48785,
mixing_valve_state=43096,
active_accessory=None,
use_room_sensor=47394,
),
"s2": ClimateCoilGroup(
name="Climate System S2",
current=40032,
setpoint_heat=47397,
setpoint_cool=48784,
mixing_valve_state=43095,
active_accessory=47302,
use_room_sensor=47393,
),
"s3": ClimateCoilGroup(
name="Climate System S3",
current=40031,
setpoint_heat=47396,
setpoint_cool=48783,
mixing_valve_state=43094,
active_accessory=47303,
use_room_sensor=47392,
),
"s4": ClimateCoilGroup(
name="Climate System S4",
current=40030,
setpoint_heat=47395,
setpoint_cool=48782,
mixing_valve_state=43093,
active_accessory=47304,
use_room_sensor=47391,
),
}

_CLIMATE_COILGROUPS_S = {
"s1": ClimateCoilGroup(
name="Climate System S1",
current=30027,
setpoint_heat=40207,
setpoint_cool=40989,
mixing_valve_state=31034,
active_accessory=None,
use_room_sensor=40203,
),
"s2": ClimateCoilGroup(
name="Climate System S2",
current=30026,
setpoint_heat=40206,
setpoint_cool=40988,
mixing_valve_state=31033,
active_accessory=None,
use_room_sensor=40202,
),
"s3": ClimateCoilGroup(
name="Climate System S3",
current=30025,
setpoint_heat=40205,
setpoint_cool=40987,
mixing_valve_state=31032,
active_accessory=None,
use_room_sensor=40201,
),
"s4": ClimateCoilGroup(
name="Climate System S4",
current=30024,
setpoint_heat=40204,
setpoint_cool=40986,
mixing_valve_state=31031,
active_accessory=None,
use_room_sensor=40200,
),
}

CLIMATE_COILGROUPS = {
Series.F: _CLIMATE_COILGROUPS_F,
Series.S: _CLIMATE_COILGROUPS_S,
}

_WATER_HEATER_COILGROUPS_F = {
"hw1": WaterHeaterCoilGroup(
name="Hot Water",
hot_water_load=40014,
hot_water_comfort_mode=47041,
start_temperature={
"ECONOMY": 47045,
"NORMAL": 47044,
"LUXURY": 47043,
},
stop_temperature={
"ECONOMY": 47049,
"NORMAL": 47048,
"LUXURY": 47047,
},
active_accessory=None,
temporary_lux=48132,
),
}

_WATER_HEATER_COILGROUPS_S = {
"hw1": WaterHeaterCoilGroup(
name="Hot Water",
hot_water_load=30010,
hot_water_comfort_mode=31039,
start_temperature={
"LOW": 40061,
"NORMAL": 40060,
"HIGH": 40059,
},
stop_temperature={
"LOW": 40065,
"NORMAL": 40064,
"HIGH": 40063,
},
active_accessory=None,
temporary_lux=None,
),
}

WATER_HEATER_COILGROUPS = {
Series.F: _WATER_HEATER_COILGROUPS_F,
Series.S: _WATER_HEATER_COILGROUPS_S,
}

_FAN_COILGROUPS_F = {
"exhaust": FanCoilGroup(
name="Exhaust",
speed=47260,
speeds={
"0": 47265,
"1": 47264,
"2": 47263,
"3": 47262,
"4": 47261,
},
),
"supply": FanCoilGroup(
name="Supply",
speed=47260,
speeds={
"0": 47270,
"1": 47269,
"2": 47268,
"3": 47267,
"4": 47266,
},
),
}

_FAN_COILGROUPS_S = {}

FAN_COILGROUPS = {
Series.F: _FAN_COILGROUPS_F,
Series.S: _FAN_COILGROUPS_S,
}

0 comments on commit 3a769a0

Please sign in to comment.