diff --git a/.coveragerc b/.coveragerc index c443b33cc4d..c6c696cac57 100644 --- a/.coveragerc +++ b/.coveragerc @@ -76,6 +76,7 @@ omit = homeassistant/components/media_player/plex.py homeassistant/components/media_player/sonos.py homeassistant/components/media_player/squeezebox.py + homeassistant/components/notify/freesms.py homeassistant/components/notify/instapush.py homeassistant/components/notify/nma.py homeassistant/components/notify/pushbullet.py diff --git a/homeassistant/components/notify/freesms.py b/homeassistant/components/notify/freesms.py new file mode 100644 index 00000000000..6e765ecfb74 --- /dev/null +++ b/homeassistant/components/notify/freesms.py @@ -0,0 +1,51 @@ +""" +homeassistant.components.notify.freesms +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +FreeSMS platform for notify component. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/notify. ... / +""" +import logging +from homeassistant.helpers import validate_config +from homeassistant.components.notify import ( + DOMAIN, BaseNotificationService) +from homeassistant.const import CONF_USERNAME, CONF_ACCESS_TOKEN + +_LOGGER = logging.getLogger(__name__) +REQUIREMENTS = ['freesms==0.1.0'] + + +def get_service(hass, config): + """ Get the FreeSMS notification service. """ + + if not validate_config({DOMAIN: config}, + {DOMAIN: [CONF_USERNAME, + CONF_ACCESS_TOKEN]}, + _LOGGER): + return None + + return FreeSMSNotificationService(config[CONF_USERNAME], + config[CONF_ACCESS_TOKEN]) + + +# pylint: disable=too-few-public-methods +class FreeSMSNotificationService(BaseNotificationService): + """ Implements notification service for the Free SMS service. """ + + def __init__(self, username, access_token): + from freesms import FreeClient + self.free_client = FreeClient(username, access_token) + + def send_message(self, message="", **kwargs): + """ Send a message to the Free Mobile user cell. """ + resp = self.free_client.send_sms(message) + + if resp.status_code == 400: + _LOGGER.error("At least one parameter is missing") + elif resp.status_code == 402: + _LOGGER.error("Too much sms send in a few time") + elif resp.status_code == 403: + _LOGGER.error("Wrong Username/Password") + elif resp.status_code == 500: + _LOGGER.error("Server error, try later") diff --git a/requirements_all.txt b/requirements_all.txt index 356c751a40f..ab82ecfda3a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -92,6 +92,9 @@ paho-mqtt==1.1 # homeassistant.components.mysensors https://github.com/theolind/pymysensors/archive/005bff4c5ca7a56acd30e816bc3bcdb5cb2d46fd.zip#pymysensors==0.4 +# homeassistant.components.notify.freesms +freesms==0.1.0 + # homeassistant.components.notify.pushbullet pushbullet.py==0.9.0