diff --git a/homeassistant/components/notify/freesms.py b/homeassistant/components/notify/freesms.py new file mode 100644 index 00000000000..e1e813b0d60 --- /dev/null +++ b/homeassistant/components/notify/freesms.py @@ -0,0 +1,53 @@ +""" +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, ATTR_TITLE, 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")