Skip to content

Commit

Permalink
Cleaned up some more
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexwijn committed Jan 25, 2025
1 parent cad7115 commit 47e3dde
Show file tree
Hide file tree
Showing 20 changed files with 56 additions and 133 deletions.
6 changes: 3 additions & 3 deletions custom_components/sat/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -489,14 +489,14 @@ async def async_step_manufacturer(self, _user_input: dict[str, Any] | None = Non

try:
manufacturers = ManufacturerFactory.resolve_by_member_id(coordinator.member_id)
default_manufacturer = manufacturers[0].name if len(manufacturers) > 0 else -1
default_manufacturer = manufacturers[0].friendly_name if len(manufacturers) > 0 else -1
finally:
await coordinator.async_will_remove_from_hass()

options = []
for name, _info in MANUFACTURERS.items():
for name, _member_id in MANUFACTURERS.items():
manufacturer = ManufacturerFactory.resolve_by_name(name)
options.append({"value": name, "label": manufacturer.name})
options.append({"value": name, "label": manufacturer.friendly_name})

return self.async_show_form(
last_step=True,
Expand Down
73 changes: 34 additions & 39 deletions custom_components/sat/manufacturer.py
Original file line number Diff line number Diff line change
@@ -1,68 +1,63 @@
from abc import abstractmethod
from abc import ABC, abstractmethod
from typing import Optional, List, Type

from typing import List, Optional
from custom_components.sat.helpers import snake_case

MANUFACTURERS = {
"ATAG": "atag",
"Baxi": "baxi",
"Brotge": "brotge",
"DeDietrich": "dedietrich",
"Ferroli": "ferroli",
"Geminox": "geminox",
"Ideal": "ideal",
"Immergas": "immergas",
"Intergas": "intergas",
"Itho": "itho",
"Nefit": "nefit",
"Radiant": "radiant",
"Remeha": "remeha",
"Sime": "sime",
"Vaillant": "vaillant",
"Viessmann": "viessmann",
"Worcester": "worcester",
"Other": "other",
"Atag": 4,
"Baxi": 4,
"Brotge": 4,
"DeDietrich": 4,
"Ferroli": 9,
"Geminox": 4,
"Ideal": 6,
"Immergas": 27,
"Intergas": 173,
"Itho": 29,
"Nefit": 131,
"Radiant": 41,
"Remeha": 11,
"Sime": 27,
"Vaillant": 24,
"Viessmann": 33,
"Worcester": 95,
"Other": -1,
}


class Manufacturer:
class Manufacturer(ABC):
def __init__(self, member_id: int):
self._member_id = member_id

@property
@abstractmethod
def identifier(self) -> int:
pass
def member_id(self) -> int:
return self._member_id

@property
@abstractmethod
def name(self) -> str:
def friendly_name(self) -> str:
pass


class ManufacturerFactory:
@staticmethod
def all() -> List[Manufacturer]:
"""Resolve a list of all Manufacturer instances."""
return [
ManufacturerFactory._import_class(module, name)()
for name, module in MANUFACTURERS.items()
]

@staticmethod
def resolve_by_name(name: str) -> Optional[Manufacturer]:
"""Resolve a Manufacturer instance by its name."""
if not (module := MANUFACTURERS.get(name)):
if not (member_id := MANUFACTURERS.get(name)):
return None

return ManufacturerFactory._import_class(module, name)()
return ManufacturerFactory._import_class(snake_case(name), name)(member_id)

@staticmethod
def resolve_by_member_id(member_id: int) -> List[Manufacturer]:
"""Resolve a list of Manufacturer instances by member ID."""
return [
manufacturer
for manufacturer in ManufacturerFactory.all()
if manufacturer.identifier == member_id
ManufacturerFactory._import_class(snake_case(name), name)(identifier)
for name, identifier in MANUFACTURERS.items()
if member_id == identifier
]

@staticmethod
def _import_class(module_name: str, class_name: str):
def _import_class(module_name: str, class_name: str) -> Type[Manufacturer]:
"""Dynamically import and return a Manufacturer class."""
return getattr(__import__(f"custom_components.sat.manufacturers.{module_name}", fromlist=[class_name]), class_name)
8 changes: 2 additions & 6 deletions custom_components/sat/manufacturers/atag.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
from ..manufacturer import Manufacturer


class ATAG(Manufacturer):
class Atag(Manufacturer):
@property
def identifier(self) -> int:
return 4

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'ATAG'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/baxi.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Baxi(Manufacturer):
@property
def identifier(self) -> int:
return 4

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Baxi'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/brotge.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Brotge(Manufacturer):
@property
def identifier(self) -> int:
return 4

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'BRÖTGE'
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class DeDietrich(Manufacturer):
@property
def identifier(self) -> int:
return 4

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'De Dietrich'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/ferroli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Ferroli(Manufacturer):
@property
def identifier(self) -> int:
return 9

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Ferroli'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/geminox.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Geminox(Manufacturer):
@property
def identifier(self) -> int:
return 4

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Geminox'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/ideal.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Ideal(Manufacturer):
@property
def identifier(self) -> int:
return 6

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Ideal'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/immergas.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Immergas(Manufacturer):
@property
def identifier(self) -> int:
return 27

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Immergas'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/intergas.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Intergas(Manufacturer):
@property
def identifier(self) -> int:
return 173

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Intergas'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/itho.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Itho(Manufacturer):
@property
def identifier(self) -> int:
return 29

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Itho'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/nefit.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Nefit(Manufacturer):
@property
def identifier(self) -> int:
return 131

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Nefit'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/other.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Other(Manufacturer):
@property
def identifier(self) -> int:
return -1

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Other'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/radiant.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Radiant(Manufacturer):
@property
def identifier(self) -> int:
return 41

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Radiant'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/remeha.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Remeha(Manufacturer):
@property
def identifier(self) -> int:
return 11

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Remeha'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/sime.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Sime(Manufacturer):
@property
def identifier(self) -> int:
return 27

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Sime'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/vaillant.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Vaillant(Manufacturer):
@property
def identifier(self) -> int:
return 24

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Vaillant'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/viessmann.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Viessmann(Manufacturer):
@property
def identifier(self) -> int:
return 33

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Viessmann'
6 changes: 1 addition & 5 deletions custom_components/sat/manufacturers/worcester.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@

class Worcester(Manufacturer):
@property
def identifier(self) -> int:
return 4

@property
def name(self) -> str:
def friendly_name(self) -> str:
return 'Worcester Bosch'

0 comments on commit 47e3dde

Please sign in to comment.