diff --git a/.gitmodules b/.gitmodules index 98f8bb5..9612d14 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "report"] path = report url = https://git.mount-mockery.de/pylib/report.git +[submodule "mqtt"] + path = mqtt + url = https://git.mount-mockery.de/pylib/mqtt.git diff --git a/mqtt b/mqtt new file mode 160000 index 0000000..3d9fc16 --- /dev/null +++ b/mqtt @@ -0,0 +1 @@ +Subproject commit 3d9fc164b4a2cca4a528bd71f04b87a50cd5a078 diff --git a/remote_control.py b/remote_control.py index b6a02d3..cc8d852 100644 --- a/remote_control.py +++ b/remote_control.py @@ -2,7 +2,7 @@ import config import json import lirc import logging -import paho.mqtt.client as paho +import mqtt import report import socket import time @@ -14,26 +14,19 @@ except ImportError: logger = logging.getLogger(ROOT_LOGGER_NAME).getChild('main') -class remote_control(object): +class remote_control(mqtt.mqtt_client): def __init__(self): self.__lirc_client__ = None self.__lirc_init__() # self.__start_data__ = None # - self.__client__ = paho.Client(config.APP_NAME) # create client object - self.__client__.on_message = self.__receive__ # attach function to callback - self.__client__.username_pw_set(config.MQTT_USER, config.MQTT_PASS) # login with credentials - try: - self.__client__.connect(config.MQTT_SERVER, 1883) # establish connection - self.__client__.loop_start() # start the loop - for remote in config.SUPPORTED_REMOTES: - for command in config.SUPPORTED_REMOTES[remote]: - topic = config.MQTT_TOPIC + "/" + remote + "/" + command - logger.debug("Subscribing \"%s\"", topic) - self.__client__.subscribe(topic) # subscibe a topic - except (socket.timeout, OSError) as e: - logger.warning("Erro while setting up mqtt instance and listener") + mqtt.mqtt_client.__init__(self, config.APP_NAME, config.MQTT_SERVER, 1883, config.MQTT_USER, config.MQTT_PASS) + # + for remote in config.SUPPORTED_REMOTES: + for command in config.SUPPORTED_REMOTES[remote]: + topic = config.MQTT_TOPIC + "/" + remote + "/" + command + self.add_callback(topic, self.mqtt_to_lirc) def __lirc_init__(self): if self.__lirc_client__ is not None: @@ -42,7 +35,7 @@ class remote_control(object): logger.info("Initiating lirc connection") self.__lirc_client__ = lirc.Client() - def __receive__(self, client, userdata, message): + def mqtt_to_lirc(self, client, userdata, message): try: payload = json.loads(message.payload) except json.decoder.JSONDecodeError: