Improved logging mechanism (and a few minor goodies) (#54)

* Improved logging mechanism

* Allow for suppression of any errors regarding failed device updates
This commit is contained in:
Dennis Keitzel
2019-03-03 19:46:38 +01:00
committed by zewelor
parent c6a068f811
commit c9a634870f
14 changed files with 200 additions and 69 deletions
+13 -5
View File
@@ -1,29 +1,37 @@
from interruptingcow import timeout
import logging
from mqtt import MqttMessage
from workers.base import BaseWorker
import logger
REQUIREMENTS = ['git+https://github.com/open-homeautomation/miflora.git@84f39432082796412d05b754c948499a1ad710e7#egg=miflora', 'bluepy']
monitoredAttrs = ["temperature", "moisture", "light", "conductivity", "battery"]
_LOGGER = logger.get(__name__)
class MifloraWorker(BaseWorker):
def _setup(self):
from miflora.miflora_poller import MiFloraPoller
from btlewrap.bluepy import BluepyBackend
_LOGGER.info("Adding %d %s devices", len(self.devices), repr(self))
for name, mac in self.devices.items():
_LOGGER.debug("Adding %s device '%s' (%s)", repr(self), name, mac)
self.devices[name] = MiFloraPoller(mac, BluepyBackend)
def status_update(self):
from btlewrap.base import BluetoothBackendException
_LOGGER.info("Updating %d %s devices", len(self.devices), repr(self))
ret = []
for name, poller in self.devices.items():
_LOGGER.debug("Updating %s device '%s' (%s)", repr(self), name, poller._mac)
try:
ret += self.update_device_state(name, poller)
except RuntimeError:
pass
except BluetoothBackendException as e:
logger.log_exception(_LOGGER, "Error during update of %s device '%s' (%s): %s", repr(self), name, poller._mac, type(e).__name__, suppress=True)
return ret
@timeout(8.0)
def update_device_state(self, name, poller):
ret = []
poller.clear_cache()