From ddc224f389a9d5a9c8f03ff1fef7259c56a43936 Mon Sep 17 00:00:00 2001 From: zewelor Date: Wed, 29 Nov 2017 09:29:06 +0100 Subject: [PATCH] Fix installing requirements --- workers/thermostat.py | 37 +++++++++++++++++++------------------ workers_manager.py | 3 ++- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/workers/thermostat.py b/workers/thermostat.py index 0cd8266..ab6b93f 100644 --- a/workers/thermostat.py +++ b/workers/thermostat.py @@ -1,4 +1,5 @@ from builtins import staticmethod + from mqtt import MqttMessage from workers.base import BaseWorker @@ -12,26 +13,25 @@ STATE_MANUAL = 'manual' class ThermostatWorker(BaseWorker): class ModesMapper(): - from eq3bt import Mode + def __init__(self): + from eq3bt import Mode - MAPPED_MODES = { - Mode.Closed: 'off', - Mode.Open: 'on', - Mode.Auto: 'auto', - Mode.Manual: STATE_MANUAL, - Mode.Away: STATE_AWAY, - Mode.Boost: STATE_BOOST, - } + self._mapped_modes = { + Mode.Closed: 'off', + Mode.Open: 'on', + Mode.Auto: 'auto', + Mode.Manual: STATE_MANUAL, + Mode.Away: STATE_AWAY, + Mode.Boost: STATE_BOOST, + } - REVERSED_MODES = {v: k for k, v in MAPPED_MODES.items()} + self._reverse_modes = {v: k for k, v in self._mapped_modes.items()} - @classmethod - def get_mapping(cls, mode): - return cls.MAPPED_MODES[mode] + def get_mapping(self, mode): + return self._mapped_modes[mode] - @classmethod - def get_reverse_mapping(cls, mode): - return cls.REVERSED_MODES[mode] + def get_reverse_mapping(self, mode): + return self._reverse_modes[mode] @staticmethod def away_mode_on_off(mode): @@ -54,6 +54,7 @@ class ThermostatWorker(BaseWorker): for name, mac in self.devices.items(): self.devices[name] = Thermostat(mac) + self._modes_mapper = self.ModesMapper() def status_update(self): ret = [] @@ -72,7 +73,7 @@ class ThermostatWorker(BaseWorker): # It needs to be on separate if because first if can change method if method == "mode": - value = ModesMapper.get_reverse_mapping(value) + value = self._modes_mapper.get_reverse_mapping(value) elif method == "target_temperature": value = float(value) @@ -86,7 +87,7 @@ class ThermostatWorker(BaseWorker): for attr in monitoredAttrs: ret.append(MqttMessage(topic=self.format_topic(name, attr), payload=getattr(thermostat, attr))) - ret.append(MqttMessage(topic=self.format_topic(name, 'mode'), payload=self.ModesMapper.get_mapping(thermostat.mode))) + ret.append(MqttMessage(topic=self.format_topic(name, 'mode'), payload=self._modes_mapper.get_mapping(thermostat.mode))) ret.append(MqttMessage(topic=self.format_topic(name, 'away'), payload=self.ModesMapper.away_mode_on_off(thermostat.mode))) return ret diff --git a/workers_manager.py b/workers_manager.py index 2f0a6eb..a6c1c88 100644 --- a/workers_manager.py +++ b/workers_manager.py @@ -28,11 +28,12 @@ class WorkersManager: for (worker_name, worker_config) in config.items(): module_obj = importlib.import_module("workers.%s" % worker_name) klass = getattr(module_obj, "%sWorker" % worker_name.title()) - worker_obj = klass(**worker_config['args']) if module_obj.REQUIREMENTS is not None: cls._pip_install_helper(module_obj.REQUIREMENTS) + worker_obj = klass(**worker_config['args']) + if 'update_interval' in worker_config: _LOGGER.debug("Added: %s with %d seconds interval" % (worker_name, worker_config['update_interval'])) _WORKERS_QUEUE.put(cls.Command(worker_obj.status_update, []))