Fix installing requirements

This commit is contained in:
zewelor
2017-11-29 09:29:06 +01:00
parent a1676b3e10
commit ddc224f389
2 changed files with 21 additions and 19 deletions
+11 -10
View File
@@ -1,4 +1,5 @@
from builtins import staticmethod from builtins import staticmethod
from mqtt import MqttMessage from mqtt import MqttMessage
from workers.base import BaseWorker from workers.base import BaseWorker
@@ -12,9 +13,10 @@ STATE_MANUAL = 'manual'
class ThermostatWorker(BaseWorker): class ThermostatWorker(BaseWorker):
class ModesMapper(): class ModesMapper():
def __init__(self):
from eq3bt import Mode from eq3bt import Mode
MAPPED_MODES = { self._mapped_modes = {
Mode.Closed: 'off', Mode.Closed: 'off',
Mode.Open: 'on', Mode.Open: 'on',
Mode.Auto: 'auto', Mode.Auto: 'auto',
@@ -23,15 +25,13 @@ class ThermostatWorker(BaseWorker):
Mode.Boost: STATE_BOOST, 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(self, mode):
def get_mapping(cls, mode): return self._mapped_modes[mode]
return cls.MAPPED_MODES[mode]
@classmethod def get_reverse_mapping(self, mode):
def get_reverse_mapping(cls, mode): return self._reverse_modes[mode]
return cls.REVERSED_MODES[mode]
@staticmethod @staticmethod
def away_mode_on_off(mode): def away_mode_on_off(mode):
@@ -54,6 +54,7 @@ class ThermostatWorker(BaseWorker):
for name, mac in self.devices.items(): for name, mac in self.devices.items():
self.devices[name] = Thermostat(mac) self.devices[name] = Thermostat(mac)
self._modes_mapper = self.ModesMapper()
def status_update(self): def status_update(self):
ret = [] ret = []
@@ -72,7 +73,7 @@ class ThermostatWorker(BaseWorker):
# It needs to be on separate if because first if can change method # It needs to be on separate if because first if can change method
if method == "mode": if method == "mode":
value = ModesMapper.get_reverse_mapping(value) value = self._modes_mapper.get_reverse_mapping(value)
elif method == "target_temperature": elif method == "target_temperature":
value = float(value) value = float(value)
@@ -86,7 +87,7 @@ class ThermostatWorker(BaseWorker):
for attr in monitoredAttrs: 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, 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))) ret.append(MqttMessage(topic=self.format_topic(name, 'away'), payload=self.ModesMapper.away_mode_on_off(thermostat.mode)))
return ret return ret
+2 -1
View File
@@ -28,11 +28,12 @@ class WorkersManager:
for (worker_name, worker_config) in config.items(): for (worker_name, worker_config) in config.items():
module_obj = importlib.import_module("workers.%s" % worker_name) module_obj = importlib.import_module("workers.%s" % worker_name)
klass = getattr(module_obj, "%sWorker" % worker_name.title()) klass = getattr(module_obj, "%sWorker" % worker_name.title())
worker_obj = klass(**worker_config['args'])
if module_obj.REQUIREMENTS is not None: if module_obj.REQUIREMENTS is not None:
cls._pip_install_helper(module_obj.REQUIREMENTS) cls._pip_install_helper(module_obj.REQUIREMENTS)
worker_obj = klass(**worker_config['args'])
if 'update_interval' in worker_config: if 'update_interval' in worker_config:
_LOGGER.debug("Added: %s with %d seconds interval" % (worker_name, worker_config['update_interval'])) _LOGGER.debug("Added: %s with %d seconds interval" % (worker_name, worker_config['update_interval']))
_WORKERS_QUEUE.put(cls.Command(worker_obj.status_update, [])) _WORKERS_QUEUE.put(cls.Command(worker_obj.status_update, []))