summaryrefslogtreecommitdiff
path: root/src/home/mqtt
diff options
context:
space:
mode:
Diffstat (limited to 'src/home/mqtt')
-rw-r--r--src/home/mqtt/__init__.py3
-rw-r--r--src/home/mqtt/util.py14
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