summaryrefslogtreecommitdiff
path: root/src/home/mqtt/_wrapper.py
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2023-06-10 23:02:34 +0300
committerEvgeny Zinoviev <me@ch1p.io>2023-06-10 23:02:34 +0300
commitb0bf43e6a272d42a55158e657bd937cb82fc3d8d (patch)
treef1bc13253bc028abcaed9c88882f5aee384a269c /src/home/mqtt/_wrapper.py
parentf3b9d50496257d87757802dfb472b5ffae11962c (diff)
move files, rename home package to homekit
Diffstat (limited to 'src/home/mqtt/_wrapper.py')
-rw-r--r--src/home/mqtt/_wrapper.py60
1 files changed, 0 insertions, 60 deletions
diff --git a/src/home/mqtt/_wrapper.py b/src/home/mqtt/_wrapper.py
deleted file mode 100644
index 3c2774c..0000000
--- a/src/home/mqtt/_wrapper.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import paho.mqtt.client as mqtt
-
-from ._mqtt import Mqtt
-from ._node import MqttNode
-from ..util import strgen
-
-
-class MqttWrapper(Mqtt):
- _nodes: list[MqttNode]
-
- def __init__(self,
- client_id: str,
- topic_prefix='hk',
- randomize_client_id=False,
- clean_session=True):
- if randomize_client_id:
- client_id += '_'+strgen(6)
- super().__init__(clean_session=clean_session,
- client_id=client_id)
- self._nodes = []
- self._topic_prefix = topic_prefix
-
- def on_connect(self, client: mqtt.Client, userdata, flags, rc):
- super().on_connect(client, userdata, flags, rc)
- for node in self._nodes:
- node.on_connect(self)
-
- def on_disconnect(self, client: mqtt.Client, userdata, rc):
- super().on_disconnect(client, userdata, rc)
- for node in self._nodes:
- node.on_disconnect()
-
- def on_message(self, client: mqtt.Client, userdata, msg):
- try:
- topic = msg.topic
- topic_node = topic[len(self._topic_prefix)+1:topic.find('/', len(self._topic_prefix)+1)]
- for node in self._nodes:
- if node.id in ('+', topic_node):
- node.on_message(topic[len(f'{self._topic_prefix}/{node.id}/'):], msg.payload)
- except Exception as e:
- self._logger.exception(str(e))
-
- def add_node(self, node: MqttNode):
- self._nodes.append(node)
- if self._connected:
- node.on_connect(self)
-
- def subscribe(self,
- node_id: str,
- topic: str,
- qos: int):
- self._client.subscribe(f'{self._topic_prefix}/{node_id}/{topic}', qos)
-
- def publish(self,
- node_id: str,
- topic: str,
- payload: bytes,
- qos: int):
- self._client.publish(f'{self._topic_prefix}/{node_id}/{topic}', payload, qos)
- self._client.loop_write()