""" Support for Juicenet cloud. For more details about this component, please refer to the documentation at https://home-assistant.io/components/juicenet """ import logging import voluptuous as vol from homeassistant.helpers import discovery from homeassistant.const import CONF_ACCESS_TOKEN from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['python-juicenet==0.0.5'] _LOGGER = logging.getLogger(__name__) DOMAIN = 'juicenet' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ vol.Required(CONF_ACCESS_TOKEN): cv.string }) }, extra=vol.ALLOW_EXTRA) def setup(hass, config): """Set up the Juicenet component.""" import pyjuicenet hass.data[DOMAIN] = {} access_token = config[DOMAIN].get(CONF_ACCESS_TOKEN) hass.data[DOMAIN]['api'] = pyjuicenet.Api(access_token) discovery.load_platform(hass, 'sensor', DOMAIN, {}, config) return True class JuicenetDevice(Entity): """Represent a base Juicenet device.""" def __init__(self, device, sensor_type, hass): """Initialise the sensor.""" self.hass = hass self.device = device self.type = sensor_type @property def name(self): """Return the name of the device.""" return self.device.name() def update(self): """Update state of the device.""" self.device.update_state() @property def _manufacturer_device_id(self): """Return the manufacturer device id.""" return self.device.id() @property def _token(self): """Return the device API token.""" return self.device.token() @property def unique_id(self): """Return a unique ID.""" return "{}-{}".format(self.device.id(), self.type)