Join by joaoapps component & notify platform (#2315)
* initial support for Join notifier add more functions for Join * rename to joaoapps_join add message default in schema move api_key check * move special join services to their own component update coveragerc and requirements_all add icon and smallicon
This commit is contained in:
parent
bef2f87ddc
commit
e58615b2a5
4 changed files with 148 additions and 0 deletions
|
@ -126,6 +126,7 @@ omit =
|
||||||
homeassistant/components/garage_door/rpi_gpio.py
|
homeassistant/components/garage_door/rpi_gpio.py
|
||||||
homeassistant/components/hdmi_cec.py
|
homeassistant/components/hdmi_cec.py
|
||||||
homeassistant/components/ifttt.py
|
homeassistant/components/ifttt.py
|
||||||
|
homeassistant/components/joaoapps_join.py
|
||||||
homeassistant/components/keyboard.py
|
homeassistant/components/keyboard.py
|
||||||
homeassistant/components/light/blinksticklight.py
|
homeassistant/components/light/blinksticklight.py
|
||||||
homeassistant/components/light/hue.py
|
homeassistant/components/light/hue.py
|
||||||
|
@ -162,6 +163,7 @@ omit =
|
||||||
homeassistant/components/notify/gntp.py
|
homeassistant/components/notify/gntp.py
|
||||||
homeassistant/components/notify/googlevoice.py
|
homeassistant/components/notify/googlevoice.py
|
||||||
homeassistant/components/notify/instapush.py
|
homeassistant/components/notify/instapush.py
|
||||||
|
homeassistant/components/notify/joaoapps_join.py
|
||||||
homeassistant/components/notify/message_bird.py
|
homeassistant/components/notify/message_bird.py
|
||||||
homeassistant/components/notify/nma.py
|
homeassistant/components/notify/nma.py
|
||||||
homeassistant/components/notify/pushbullet.py
|
homeassistant/components/notify/pushbullet.py
|
||||||
|
|
80
homeassistant/components/joaoapps_join.py
Normal file
80
homeassistant/components/joaoapps_join.py
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
"""
|
||||||
|
Component for Joaoapps Join services.
|
||||||
|
|
||||||
|
For more details about this platform, please refer to the documentation at
|
||||||
|
https://home-assistant.io/components/join/
|
||||||
|
"""
|
||||||
|
import logging
|
||||||
|
import voluptuous as vol
|
||||||
|
from homeassistant.const import CONF_NAME, CONF_API_KEY
|
||||||
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
|
REQUIREMENTS = [
|
||||||
|
'https://github.com/nkgilley/python-join-api/archive/'
|
||||||
|
'3e1e849f1af0b4080f551b62270c6d244d5fbcbd.zip#python-join-api==0.0.1']
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
DOMAIN = 'joaoapps_join'
|
||||||
|
CONF_DEVICE_ID = 'device_id'
|
||||||
|
|
||||||
|
CONFIG_SCHEMA = vol.Schema({
|
||||||
|
DOMAIN: vol.Schema({
|
||||||
|
vol.Required(CONF_DEVICE_ID): cv.string,
|
||||||
|
vol.Optional(CONF_NAME): cv.string,
|
||||||
|
vol.Optional(CONF_API_KEY): cv.string
|
||||||
|
})
|
||||||
|
}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
|
|
||||||
|
# pylint: disable=too-many-locals
|
||||||
|
def setup(hass, config):
|
||||||
|
"""Setup Join services."""
|
||||||
|
from pyjoin import (get_devices, ring_device, set_wallpaper, send_sms,
|
||||||
|
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):
|
||||||
|
"""Service to ring devices."""
|
||||||
|
ring_device(device_id, api_key=api_key)
|
||||||
|
|
||||||
|
def set_wallpaper_service(service):
|
||||||
|
"""Service to set wallpaper on devices."""
|
||||||
|
set_wallpaper(device_id, url=service.data.get('url'), api_key=api_key)
|
||||||
|
|
||||||
|
def send_file_service(service):
|
||||||
|
"""Service to send files to devices."""
|
||||||
|
send_file(device_id, url=service.data.get('url'), api_key=api_key)
|
||||||
|
|
||||||
|
def send_url_service(service):
|
||||||
|
"""Service to open url on devices."""
|
||||||
|
send_url(device_id, url=service.data.get('url'), api_key=api_key)
|
||||||
|
|
||||||
|
def send_tasker_service(service):
|
||||||
|
"""Service to open url on devices."""
|
||||||
|
send_notification(device_id=device_id,
|
||||||
|
text=service.data.get('command'),
|
||||||
|
api_key=api_key)
|
||||||
|
|
||||||
|
def send_sms_service(service):
|
||||||
|
"""Service to send sms from devices."""
|
||||||
|
send_sms(device_id=device_id,
|
||||||
|
sms_number=service.data.get('number'),
|
||||||
|
sms_text=service.data.get('message'),
|
||||||
|
api_key=api_key)
|
||||||
|
|
||||||
|
name = name.lower().replace(" ", "_") + "_" if name else ""
|
||||||
|
hass.services.register(DOMAIN, name + 'ring', ring_service)
|
||||||
|
hass.services.register(DOMAIN, name + 'set_wallpaper',
|
||||||
|
set_wallpaper_service)
|
||||||
|
hass.services.register(DOMAIN, name + 'send_sms', send_sms_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_tasker', send_tasker_service)
|
||||||
|
return True
|
62
homeassistant/components/notify/joaoapps_join.py
Normal file
62
homeassistant/components/notify/joaoapps_join.py
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
"""
|
||||||
|
Join platform for notify component.
|
||||||
|
|
||||||
|
For more details about this platform, please refer to the documentation at
|
||||||
|
https://home-assistant.io/components/notify.Join/
|
||||||
|
"""
|
||||||
|
import logging
|
||||||
|
import voluptuous as vol
|
||||||
|
from homeassistant.components.notify import (
|
||||||
|
ATTR_DATA, ATTR_TITLE, BaseNotificationService)
|
||||||
|
from homeassistant.const import CONF_PLATFORM, CONF_NAME, CONF_API_KEY
|
||||||
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
|
REQUIREMENTS = [
|
||||||
|
'https://github.com/nkgilley/python-join-api/archive/'
|
||||||
|
'3e1e849f1af0b4080f551b62270c6d244d5fbcbd.zip#python-join-api==0.0.1']
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
CONF_DEVICE_ID = 'device_id'
|
||||||
|
|
||||||
|
PLATFORM_SCHEMA = vol.Schema({
|
||||||
|
vol.Required(CONF_PLATFORM): 'joaoapps_join',
|
||||||
|
vol.Required(CONF_DEVICE_ID): cv.string,
|
||||||
|
vol.Optional(CONF_NAME): cv.string,
|
||||||
|
vol.Optional(CONF_API_KEY): cv.string
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
# pylint: disable=unused-variable
|
||||||
|
def get_service(hass, config):
|
||||||
|
"""Get the Join notification service."""
|
||||||
|
device_id = config.get(CONF_DEVICE_ID)
|
||||||
|
api_key = config.get(CONF_API_KEY)
|
||||||
|
if api_key:
|
||||||
|
from pyjoin import get_devices
|
||||||
|
if not get_devices(api_key):
|
||||||
|
_LOGGER.error("Error connecting to Join, check API key")
|
||||||
|
return False
|
||||||
|
return JoinNotificationService(device_id, api_key)
|
||||||
|
|
||||||
|
|
||||||
|
# pylint: disable=too-few-public-methods
|
||||||
|
class JoinNotificationService(BaseNotificationService):
|
||||||
|
"""Implement the notification service for Join."""
|
||||||
|
|
||||||
|
def __init__(self, device_id, api_key=None):
|
||||||
|
"""Initialize the service."""
|
||||||
|
self._device_id = device_id
|
||||||
|
self._api_key = api_key
|
||||||
|
|
||||||
|
def send_message(self, message="", **kwargs):
|
||||||
|
"""Send a message to a user."""
|
||||||
|
from pyjoin import send_notification
|
||||||
|
title = kwargs.get(ATTR_TITLE)
|
||||||
|
data = kwargs.get(ATTR_DATA) or {}
|
||||||
|
send_notification(device_id=self._device_id,
|
||||||
|
text=message,
|
||||||
|
title=title,
|
||||||
|
icon=data.get('icon'),
|
||||||
|
smallicon=data.get('smallicon'),
|
||||||
|
api_key=self._api_key)
|
|
@ -143,6 +143,10 @@ https://github.com/kellerza/pyqwikswitch/archive/v0.4.zip#pyqwikswitch==0.4
|
||||||
# homeassistant.components.ecobee
|
# homeassistant.components.ecobee
|
||||||
https://github.com/nkgilley/python-ecobee-api/archive/4856a704670c53afe1882178a89c209b5f98533d.zip#python-ecobee==0.0.6
|
https://github.com/nkgilley/python-ecobee-api/archive/4856a704670c53afe1882178a89c209b5f98533d.zip#python-ecobee==0.0.6
|
||||||
|
|
||||||
|
# homeassistant.components.joaoapps_join
|
||||||
|
# homeassistant.components.notify.joaoapps_join
|
||||||
|
https://github.com/nkgilley/python-join-api/archive/3e1e849f1af0b4080f551b62270c6d244d5fbcbd.zip#python-join-api==0.0.1
|
||||||
|
|
||||||
# homeassistant.components.switch.edimax
|
# homeassistant.components.switch.edimax
|
||||||
https://github.com/rkabadi/pyedimax/archive/365301ce3ff26129a7910c501ead09ea625f3700.zip#pyedimax==0.1
|
https://github.com/rkabadi/pyedimax/archive/365301ce3ff26129a7910c501ead09ea625f3700.zip#pyedimax==0.1
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue