diff --git a/homeassistant/components/notify/ciscospark.py b/homeassistant/components/notify/ciscospark.py new file mode 100644 index 0000000000000000000000000000000000000000..3a4ef1384d9c90e4e9675da1ea936429b673bbfe --- /dev/null +++ b/homeassistant/components/notify/ciscospark.py @@ -0,0 +1,67 @@ +""" +Cisco Spark platform for notify component. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/notify.ciscospark/ +""" +import logging +import voluptuous as vol +from homeassistant.components.notify import ( + PLATFORM_SCHEMA, BaseNotificationService, ATTR_TITLE) +from homeassistant.const import (CONF_TOKEN) +import homeassistant.helpers.config_validation as cv + +CONF_ROOMID = "roomid" + +_LOGGER = logging.getLogger(__name__) + +REQUIREMENTS = ['ciscosparkapi==0.4.2'] + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_TOKEN): cv.string, + vol.Required(CONF_ROOMID): cv.string, +}) + + +# pylint: disable=unused-variable +def get_service(hass, config, discovery_info=None): + """Get the CiscoSpark notification service.""" + return CiscoSparkNotificationService( + config.get(CONF_TOKEN), + config.get(CONF_ROOMID)) + + +class CiscoSparkNotificationService(BaseNotificationService): + """CiscoSparkNotificationService.""" + + def __init__(self, token, default_room): + """ + Initialize the service. + + Args: + token: Cisco Spark Developer's Token + default_room: Cisco Spark Room ID + """ + from ciscosparkapi import CiscoSparkAPI + self._default_room = default_room + self._token = token + self._spark = CiscoSparkAPI(access_token=self._token) + + def send_message(self, message="", **kwargs): + """ + Send a message to a user. + + Args: + message: notificaiton text + kwargs: attributes used - 'title' + """ + from ciscosparkapi import SparkApiError + try: + title = "" + if kwargs.get(ATTR_TITLE) is not None: + title = kwargs.get(ATTR_TITLE) + ": " + self._spark.messages.create(roomId=self._default_room, + text=title + message) + except SparkApiError as api_error: + _LOGGER.error("Could not send CiscoSpark notification. Error: %s", + api_error) diff --git a/requirements_all.txt b/requirements_all.txt index 5b0c020b3161d7bdcaffe5aa72603273ae18206d..9f8ba5d2bcc32361a712ace17fe049f0bcb95e8e 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -80,6 +80,9 @@ boto3==1.4.3 # homeassistant.components.switch.broadlink broadlink==0.3 +# homeassistant.components.notify.ciscospark +ciscosparkapi==0.4.2 + # homeassistant.components.sensor.coinmarketcap coinmarketcap==2.0.1