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",