From c31522eea9b625522df83d0927aebc3348b4d96e Mon Sep 17 00:00:00 2001 From: magnusknutas Date: Wed, 27 Jan 2016 17:27:55 +0100 Subject: [PATCH 1/6] Logbook service --- homeassistant/components/logbook.py | 31 ++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 98d02af5eb0..387fa9ae948 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -6,9 +6,11 @@ Parses events and generates a human log. For more details about this component, please refer to the documentation at https://home-assistant.io/components/logbook/ """ +import logging from datetime import timedelta from itertools import groupby import re +from functools import partial from homeassistant.core import State, DOMAIN as HA_DOMAIN from homeassistant.const import ( @@ -36,6 +38,22 @@ ATTR_MESSAGE = 'message' ATTR_DOMAIN = 'domain' ATTR_ENTITY_ID = 'entity_id' +_LOGGER = logging.getLogger(__name__) + + +# pylint: disable=too-few-public-methods +class LogbookService(object): + """ Implements logging service for Logbook. """ + + def __init__(self, hass, name): + self.hass = hass + self.name = name + + def send_message(self, message="", **kwargs): + """ Adds an entry to the logbook. """ + _LOGGER.error("IM HERE") + log_entry(self.hass, self.name, message, DOMAIN) + def log_entry(hass, name, message, domain=None, entity_id=None): """ Adds an entry to the logbook. """ @@ -53,8 +71,19 @@ def log_entry(hass, name, message, domain=None, entity_id=None): def setup(hass, config): """ Listens for download events to download files. """ - hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook) + # create service handler + def notify_message(notify_service, call): + """ Handle sending notification message service calls. """ + message = call.data.get(ATTR_MESSAGE) + if message is None: + return + + notify_service.send_message(message) + + service = LogbookService(hass, config.get(ATTR_NAME, None)) + hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook) + hass.services.register(DOMAIN, DOMAIN, partial(notify_message, service)) return True From 8b0d19835c9f98648a47d07e6335d19aed18db0b Mon Sep 17 00:00:00 2001 From: magnusknutas Date: Wed, 27 Jan 2016 17:32:57 +0100 Subject: [PATCH 2/6] Cleanup --- homeassistant/components/logbook.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 387fa9ae948..6811d1f6917 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -6,7 +6,6 @@ Parses events and generates a human log. For more details about this component, please refer to the documentation at https://home-assistant.io/components/logbook/ """ -import logging from datetime import timedelta from itertools import groupby import re @@ -38,8 +37,6 @@ ATTR_MESSAGE = 'message' ATTR_DOMAIN = 'domain' ATTR_ENTITY_ID = 'entity_id' -_LOGGER = logging.getLogger(__name__) - # pylint: disable=too-few-public-methods class LogbookService(object): @@ -51,7 +48,6 @@ class LogbookService(object): def send_message(self, message="", **kwargs): """ Adds an entry to the logbook. """ - _LOGGER.error("IM HERE") log_entry(self.hass, self.name, message, DOMAIN) From 403b9cbe3e5e4f86f9463d6053c771e129870d4e Mon Sep 17 00:00:00 2001 From: magnusknutas Date: Wed, 27 Jan 2016 17:37:15 +0100 Subject: [PATCH 3/6] And with template support --- homeassistant/components/logbook.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 6811d1f6917..7fb25b36ba0 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -18,6 +18,7 @@ from homeassistant.const import ( import homeassistant.util.dt as dt_util from homeassistant.components import recorder, sun from homeassistant.helpers.entity import split_entity_id +from homeassistant.util import template DOMAIN = "logbook" DEPENDENCIES = ['recorder', 'http'] @@ -74,7 +75,7 @@ def setup(hass, config): if message is None: return - + message = template.render(hass, message) notify_service.send_message(message) service = LogbookService(hass, config.get(ATTR_NAME, None)) From 24893bc28df6851b851e4b04e9e6cce083129554 Mon Sep 17 00:00:00 2001 From: magnusknutas Date: Wed, 27 Jan 2016 18:03:37 +0100 Subject: [PATCH 4/6] Less complex service setup --- homeassistant/components/logbook.py | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 7fb25b36ba0..3cbd5c1ac47 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -6,10 +6,10 @@ Parses events and generates a human log. For more details about this component, please refer to the documentation at https://home-assistant.io/components/logbook/ """ +import logging from datetime import timedelta from itertools import groupby import re -from functools import partial from homeassistant.core import State, DOMAIN as HA_DOMAIN from homeassistant.const import ( @@ -29,6 +29,8 @@ QUERY_EVENTS_BETWEEN = """ SELECT * FROM events WHERE time_fired > ? AND time_fired < ? """ +_LOGGER = logging.getLogger(__name__) + EVENT_LOGBOOK_ENTRY = 'logbook_entry' GROUP_BY_MINUTES = 15 @@ -39,19 +41,6 @@ ATTR_DOMAIN = 'domain' ATTR_ENTITY_ID = 'entity_id' -# pylint: disable=too-few-public-methods -class LogbookService(object): - """ Implements logging service for Logbook. """ - - def __init__(self, hass, name): - self.hass = hass - self.name = name - - def send_message(self, message="", **kwargs): - """ Adds an entry to the logbook. """ - log_entry(self.hass, self.name, message, DOMAIN) - - def log_entry(hass, name, message, domain=None, entity_id=None): """ Adds an entry to the logbook. """ data = { @@ -69,18 +58,18 @@ def log_entry(hass, name, message, domain=None, entity_id=None): def setup(hass, config): """ Listens for download events to download files. """ # create service handler - def notify_message(notify_service, call): + def log_message(service): """ Handle sending notification message service calls. """ - message = call.data.get(ATTR_MESSAGE) + message = service.data.get(ATTR_MESSAGE) + name = service.data.get(ATTR_NAME, None) if message is None: return message = template.render(hass, message) - notify_service.send_message(message) + log_entry(hass, name, message) - service = LogbookService(hass, config.get(ATTR_NAME, None)) hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook) - hass.services.register(DOMAIN, DOMAIN, partial(notify_message, service)) + hass.services.register(DOMAIN, DOMAIN, log_message) return True From fda88f8fdacbe4646d15f65b2037550d75b93112 Mon Sep 17 00:00:00 2001 From: magnusknutas Date: Thu, 28 Jan 2016 09:51:05 +0100 Subject: [PATCH 5/6] logbook.log the name of the game --- homeassistant/components/logbook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 3cbd5c1ac47..9b39cf4bce0 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -69,7 +69,7 @@ def setup(hass, config): log_entry(hass, name, message) hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook) - hass.services.register(DOMAIN, DOMAIN, log_message) + hass.services.register(DOMAIN, 'log', log_message) return True From 24d84dbb428c735c4bd99cc0a898ab37ccc6a8d4 Mon Sep 17 00:00:00 2001 From: magnusknutas Date: Fri, 29 Jan 2016 08:13:46 +0100 Subject: [PATCH 6/6] Added entity_id and domain --- homeassistant/components/logbook.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 9b39cf4bce0..db1a4be3228 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -61,12 +61,15 @@ def setup(hass, config): def log_message(service): """ Handle sending notification message service calls. """ message = service.data.get(ATTR_MESSAGE) - name = service.data.get(ATTR_NAME, None) + name = service.data.get(ATTR_NAME) + domain = service.data.get(ATTR_DOMAIN, None) + entity_id = service.data.get(ATTR_ENTITY_ID, None) - if message is None: + if not message or not name: return + message = template.render(hass, message) - log_entry(hass, name, message) + log_entry(hass, name, message, domain, entity_id) hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook) hass.services.register(DOMAIN, 'log', log_message)