diff --git a/homeassistant/components/pilight.py b/homeassistant/components/pilight.py index 07771acee00..764b972d393 100644 --- a/homeassistant/components/pilight.py +++ b/homeassistant/components/pilight.py @@ -4,7 +4,6 @@ Component to create an interface to a Pilight daemon (https://pilight.org/). For more details about this component, please refer to the documentation at https://home-assistant.io/components/pilight/ """ -# pylint: disable=import-error import logging import socket @@ -12,46 +11,49 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.helpers.config_validation import ensure_list -from homeassistant.const import EVENT_HOMEASSISTANT_START -from homeassistant.const import EVENT_HOMEASSISTANT_STOP -from homeassistant.const import CONF_HOST, CONF_PORT +from homeassistant.const import ( + EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, CONF_HOST, CONF_PORT, + CONF_WHITELIST) REQUIREMENTS = ['pilight==0.0.2'] -DOMAIN = "pilight" +_LOGGER = logging.getLogger(__name__) + +ATTR_PROTOCOL = 'protocol' + +DEFAULT_HOST = '127.0.0.1' +DEFAULT_PORT = 5000 +DOMAIN = 'pilight' + EVENT = 'pilight_received' -SERVICE_NAME = 'send' - -CONF_WHITELIST = 'whitelist' - -CONFIG_SCHEMA = vol.Schema({ - DOMAIN: vol.Schema({ - vol.Required(CONF_HOST, default='127.0.0.1'): cv.string, - vol.Required(CONF_PORT, default=5000): vol.Coerce(int), - vol.Optional(CONF_WHITELIST): {cv.string: [cv.string]} - }), -}, extra=vol.ALLOW_EXTRA) # The pilight code schema depends on the protocol # Thus only require to have the protocol information -ATTR_PROTOCOL = 'protocol' RF_CODE_SCHEMA = vol.Schema({vol.Required(ATTR_PROTOCOL): cv.string}, extra=vol.ALLOW_EXTRA) +SERVICE_NAME = 'send' -_LOGGER = logging.getLogger(__name__) +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + vol.Required(CONF_HOST, default=DEFAULT_HOST): cv.string, + vol.Required(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_WHITELIST, default={}): {cv.string: [cv.string]} + }), +}, extra=vol.ALLOW_EXTRA) def setup(hass, config): """Setup the pilight component.""" from pilight import pilight + host = config[DOMAIN][CONF_HOST] + port = config[DOMAIN][CONF_PORT] + try: - pilight_client = pilight.Client(host=config[DOMAIN][CONF_HOST], - port=config[DOMAIN][CONF_PORT]) + pilight_client = pilight.Client(host=host, port=port) except (socket.error, socket.timeout) as err: - _LOGGER.error( - "Unable to connect to %s on port %s: %s", - config[CONF_HOST], config[CONF_PORT], err) + _LOGGER.error("Unable to connect to %s on port %s: %s", + host, port, err) return False # Start / stop pilight-daemon connection with HA start/stop @@ -74,7 +76,7 @@ def setup(hass, config): # Patch data because of bug: # https://github.com/pilight/pilight/issues/296 # Protocol has to be in a list otherwise segfault in pilight-daemon - message_data["protocol"] = ensure_list(message_data["protocol"]) + message_data['protocol'] = ensure_list(message_data['protocol']) try: pilight_client.send_code(message_data) @@ -86,7 +88,7 @@ def setup(hass, config): # Publish received codes on the HA event bus # A whitelist of codes to be published in the event bus - whitelist = config[DOMAIN].get('whitelist', False) + whitelist = config[DOMAIN].get(CONF_WHITELIST) def handle_received_code(data): """Called when RF codes are received."""