expect a list of devices from config (#2567)

support multiple components. (#2565)
This commit is contained in:
Nolan Gilley 2016-07-19 22:14:41 -04:00 committed by Paulus Schoutsen
parent e34bfb7381
commit 3dd869f0c2

View File

@ -19,26 +19,19 @@ DOMAIN = 'joaoapps_join'
CONF_DEVICE_ID = 'device_id' CONF_DEVICE_ID = 'device_id'
CONFIG_SCHEMA = vol.Schema({ CONFIG_SCHEMA = vol.Schema({
DOMAIN: vol.Schema({ DOMAIN: vol.All(cv.ensure_list, [{
vol.Required(CONF_DEVICE_ID): cv.string, vol.Required(CONF_DEVICE_ID): cv.string,
vol.Optional(CONF_NAME): cv.string, vol.Optional(CONF_NAME): cv.string,
vol.Optional(CONF_API_KEY): cv.string vol.Optional(CONF_API_KEY): cv.string
}) }])
}, extra=vol.ALLOW_EXTRA) }, extra=vol.ALLOW_EXTRA)
# pylint: disable=too-many-locals # pylint: disable=too-many-locals
def setup(hass, config): def register_device(hass, device_id, api_key, name):
"""Setup Join services.""" """Method to register services for each join device listed."""
from pyjoin import (get_devices, ring_device, set_wallpaper, send_sms, from pyjoin import (ring_device, set_wallpaper, send_sms,
send_file, send_url, send_notification) send_file, send_url, send_notification)
device_id = config[DOMAIN].get(CONF_DEVICE_ID)
api_key = config[DOMAIN].get(CONF_API_KEY)
name = config[DOMAIN].get(CONF_NAME)
if api_key:
if not get_devices(api_key):
_LOGGER.error("Error connecting to Join, check API key")
return False
def ring_service(service): def ring_service(service):
"""Service to ring devices.""" """Service to ring devices."""
@ -69,7 +62,6 @@ def setup(hass, config):
sms_text=service.data.get('message'), sms_text=service.data.get('message'),
api_key=api_key) api_key=api_key)
name = name.lower().replace(" ", "_") + "_" if name else ""
hass.services.register(DOMAIN, name + 'ring', ring_service) hass.services.register(DOMAIN, name + 'ring', ring_service)
hass.services.register(DOMAIN, name + 'set_wallpaper', hass.services.register(DOMAIN, name + 'set_wallpaper',
set_wallpaper_service) set_wallpaper_service)
@ -77,4 +69,19 @@ def setup(hass, config):
hass.services.register(DOMAIN, name + 'send_file', send_file_service) hass.services.register(DOMAIN, name + 'send_file', send_file_service)
hass.services.register(DOMAIN, name + 'send_url', send_url_service) hass.services.register(DOMAIN, name + 'send_url', send_url_service)
hass.services.register(DOMAIN, name + 'send_tasker', send_tasker_service) hass.services.register(DOMAIN, name + 'send_tasker', send_tasker_service)
def setup(hass, config):
"""Setup Join services."""
from pyjoin import get_devices
for device in config[DOMAIN]:
device_id = device.get(CONF_DEVICE_ID)
api_key = device.get(CONF_API_KEY)
name = device.get(CONF_NAME)
name = name.lower().replace(" ", "_") + "_" if name else ""
if api_key:
if not get_devices(api_key):
_LOGGER.error("Error connecting to Join, check API key")
return False
register_device(hass, device_id, api_key, name)
return True return True