From 94ec9a27aec7cdd895df89140b3100f188e85b24 Mon Sep 17 00:00:00 2001 From: Philip Rosenberg-Watt Date: Sat, 12 May 2018 07:39:03 -0600 Subject: [PATCH 1/3] Add priority and cycles to LaMetric Priority can be "info", "warning" (default), or "critical" and cycles is the number of times the message is displayed. If cycles is set to 0 we get a persistent notification that has to be dismissed manually. --- homeassistant/components/notify/lametric.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/notify/lametric.py b/homeassistant/components/notify/lametric.py index 895ffd9db10f3..3d9eb7e82ccf6 100644 --- a/homeassistant/components/notify/lametric.py +++ b/homeassistant/components/notify/lametric.py @@ -23,11 +23,13 @@ CONF_LIFETIME = "lifetime" CONF_CYCLES = "cycles" +CONF_PRIORITY = "priority" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_ICON, default="i555"): cv.string, vol.Optional(CONF_LIFETIME, default=10): cv.positive_int, vol.Optional(CONF_CYCLES, default=1): cv.positive_int, + vol.Optional(CONF_PRIORITY, default="warning"): cv.string, }) @@ -38,18 +40,20 @@ def get_service(hass, config, discovery_info=None): return LaMetricNotificationService(hlmn, config[CONF_ICON], config[CONF_LIFETIME] * 1000, - config[CONF_CYCLES]) + config[CONF_CYCLES], + config[CONF_PRIORITY]) class LaMetricNotificationService(BaseNotificationService): """Implement the notification service for LaMetric.""" - def __init__(self, hasslametricmanager, icon, lifetime, cycles): + def __init__(self, hasslametricmanager, icon, lifetime, cycles, priority): """Initialize the service.""" self.hasslametricmanager = hasslametricmanager self._icon = icon self._lifetime = lifetime self._cycles = cycles + self._priority = priority self._devices = [] # pylint: disable=broad-except @@ -64,6 +68,7 @@ def send_message(self, message="", **kwargs): icon = self._icon cycles = self._cycles sound = None + priority = self._priority # Additional data? if data is not None: @@ -78,6 +83,14 @@ def send_message(self, message="", **kwargs): except AssertionError: _LOGGER.error("Sound ID %s unknown, ignoring", data["sound"]) + if "cycles" in data: + cycles = data['cycles'] + if "priority" in data: + if data['priority'] in ["info", "warning", "critical"]: + priority = data['priority'] + else: + _LOGGER.warning("Priority '%s' invalid, using default " + "'%s'" % (data['priority'], priority)) text_frame = SimpleFrame(icon, message) _LOGGER.debug("Icon/Message/Cycles/Lifetime: %s, %s, %d, %d", @@ -100,7 +113,8 @@ def send_message(self, message="", **kwargs): if targets is None or dev["name"] in targets: try: lmn.set_device(dev) - lmn.send_notification(model, lifetime=self._lifetime) + lmn.send_notification(model, lifetime=self._lifetime, + priority=priority) _LOGGER.debug("Sent notification to LaMetric %s", dev["name"]) except OSError: From e0f6e94badcaa28d9c58e50d24ba10d31c69fbbe Mon Sep 17 00:00:00 2001 From: Philip Rosenberg-Watt Date: Sun, 13 May 2018 06:50:39 -0600 Subject: [PATCH 2/3] Fix for schema and style --- homeassistant/components/notify/lametric.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/notify/lametric.py b/homeassistant/components/notify/lametric.py index 3d9eb7e82ccf6..1b9cb7895d805 100644 --- a/homeassistant/components/notify/lametric.py +++ b/homeassistant/components/notify/lametric.py @@ -25,11 +25,14 @@ CONF_CYCLES = "cycles" CONF_PRIORITY = "priority" +AVAILABLE_PRIORITIES = ["info", "warning", "critical"] + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_ICON, default="i555"): cv.string, vol.Optional(CONF_LIFETIME, default=10): cv.positive_int, vol.Optional(CONF_CYCLES, default=1): cv.positive_int, - vol.Optional(CONF_PRIORITY, default="warning"): cv.string, + vol.Optional(CONF_PRIORITY, default="warning"): + vol.In(AVAILABLE_PRIORITIES) }) @@ -86,11 +89,11 @@ def send_message(self, message="", **kwargs): if "cycles" in data: cycles = data['cycles'] if "priority" in data: - if data['priority'] in ["info", "warning", "critical"]: + if data['priority'] in AVAILABLE_PRIORITIES: priority = data['priority'] else: - _LOGGER.warning("Priority '%s' invalid, using default " - "'%s'" % (data['priority'], priority)) + _LOGGER.warning("Priority %s invalid, using default %s" % + (data['priority'], priority)) text_frame = SimpleFrame(icon, message) _LOGGER.debug("Icon/Message/Cycles/Lifetime: %s, %s, %d, %d", From 7f834f3f0fd813a85d404a0ce181420a43271e5b Mon Sep 17 00:00:00 2001 From: Philip Rosenberg-Watt Date: Sun, 13 May 2018 07:26:22 -0600 Subject: [PATCH 3/3] Fix for style --- homeassistant/components/notify/lametric.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/notify/lametric.py b/homeassistant/components/notify/lametric.py index 1b9cb7895d805..f6c3e152b0a3f 100644 --- a/homeassistant/components/notify/lametric.py +++ b/homeassistant/components/notify/lametric.py @@ -92,8 +92,8 @@ def send_message(self, message="", **kwargs): if data['priority'] in AVAILABLE_PRIORITIES: priority = data['priority'] else: - _LOGGER.warning("Priority %s invalid, using default %s" % - (data['priority'], priority)) + _LOGGER.warning("Priority %s invalid, using default %s", + data['priority'], priority) text_frame = SimpleFrame(icon, message) _LOGGER.debug("Icon/Message/Cycles/Lifetime: %s, %s, %d, %d",