diff options
Diffstat (limited to 'src/home/mqtt')
-rw-r--r-- | src/home/mqtt/__init__.py | 3 | ||||
-rw-r--r-- | src/home/mqtt/util.py | 14 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/home/mqtt/__init__.py b/src/home/mqtt/__init__.py index 3fbd744..c95061f 100644 --- a/src/home/mqtt/__init__.py +++ b/src/home/mqtt/__init__.py @@ -4,5 +4,6 @@ from ._module import MqttModule from .util import ( poll_tick, get_modules as get_mqtt_modules, - import_module as import_mqtt_module + import_module as import_mqtt_module, + add_module as add_mqtt_module )
\ No newline at end of file diff --git a/src/home/mqtt/util.py b/src/home/mqtt/util.py index 78cbcaa..91b6baf 100644 --- a/src/home/mqtt/util.py +++ b/src/home/mqtt/util.py @@ -3,6 +3,8 @@ import os import re import importlib +from ._node import MqttNode +from . import MqttModule from typing import List @@ -23,4 +25,14 @@ def get_modules() -> List[str]: def import_module(module: str): return importlib.import_module( - f'..module.{module}', __name__)
\ No newline at end of file + f'..module.{module}', __name__) + + +def add_module(mqtt_node: MqttNode, module: str) -> MqttModule: + module = import_module(module) + if not hasattr(module, 'MODULE_NAME'): + raise RuntimeError(f'MODULE_NAME not found in module {module}') + cl = getattr(module, getattr(module, 'MODULE_NAME')) + instance = cl() + mqtt_node.add_module(instance) + return instance
\ No newline at end of file |