diff --git a/.coveragerc b/.coveragerc index 28cadab252f..2d9f32b7a06 100644 --- a/.coveragerc +++ b/.coveragerc @@ -53,6 +53,7 @@ omit = homeassistant/components/bbox/sensor.py homeassistant/components/bh1750/sensor.py homeassistant/components/bitcoin/sensor.py + homeassistant/components/bizkaibus/sensor.py homeassistant/components/blink/* homeassistant/components/blinksticklight/light.py homeassistant/components/blinkt/light.py diff --git a/CODEOWNERS b/CODEOWNERS index fa4c29d7ef9..e9a5d1142b0 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -33,6 +33,7 @@ homeassistant/components/automation/* @home-assistant/core homeassistant/components/aws/* @awarecan @robbiet480 homeassistant/components/axis/* @kane610 homeassistant/components/bitcoin/* @fabaff +homeassistant/components/bizkaibus/* @UgaitzEtxebarria homeassistant/components/blink/* @fronzbot homeassistant/components/bmw_connected_drive/* @ChristianKuehnel homeassistant/components/braviatv/* @robbiet480 diff --git a/homeassistant/components/bizkaibus/__init__.py b/homeassistant/components/bizkaibus/__init__.py new file mode 100644 index 00000000000..e37c17e5744 --- /dev/null +++ b/homeassistant/components/bizkaibus/__init__.py @@ -0,0 +1 @@ +"""The Bizkaibus bus tracker component.""" diff --git a/homeassistant/components/bizkaibus/manifest.json b/homeassistant/components/bizkaibus/manifest.json new file mode 100644 index 00000000000..98cbbc9be56 --- /dev/null +++ b/homeassistant/components/bizkaibus/manifest.json @@ -0,0 +1,8 @@ +{ + "domain": "bizkaibus", + "name": "Bizkaibus", + "documentation": "https://www.home-assistant.io/components/bizkaibus", + "dependencies": [], + "codeowners": ["@UgaitzEtxebarria"], + "requirements": ["bizkaibus==0.1.1"] +} diff --git a/homeassistant/components/bizkaibus/sensor.py b/homeassistant/components/bizkaibus/sensor.py new file mode 100755 index 00000000000..96e6ee5d56f --- /dev/null +++ b/homeassistant/components/bizkaibus/sensor.py @@ -0,0 +1,88 @@ +"""Support for Bizkaibus, Biscay (Basque Country, Spain) Bus service.""" + +import logging + +import voluptuous as vol +from bizkaibus.bizkaibus import BizkaibusData +import homeassistant.helpers.config_validation as cv + +from homeassistant.const import CONF_NAME +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.helpers.entity import Entity + + +_LOGGER = logging.getLogger(__name__) + +ATTR_DUE_IN = 'Due in' + +CONF_STOP_ID = 'stopid' +CONF_ROUTE = 'route' + +DEFAULT_NAME = 'Next bus' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_STOP_ID): cv.string, + vol.Required(CONF_ROUTE): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}) + + +def setup_platform(hass, config, add_entities, discovery_info=None): + """Set up the Bizkaibus public transport sensor.""" + name = config.get(CONF_NAME) + stop = config[CONF_STOP_ID] + route = config[CONF_ROUTE] + + data = Bizkaibus(stop, route) + add_entities([BizkaibusSensor(data, stop, route, name)], True) + + +class BizkaibusSensor(Entity): + """The class for handling the data.""" + + def __init__(self, data, stop, route, name): + """Initialize the sensor.""" + self.data = data + self.stop = stop + self.route = route + self._name = name + self._state = None + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def unit_of_measurement(self): + """Return the unit of measurement of the sensor.""" + return 'minutes' + + def update(self): + """Get the latest data from the webservice.""" + self.data.update() + try: + self._state = self.data.info[0][ATTR_DUE_IN] + except TypeError: + pass + + +class Bizkaibus: + """The class for handling the data retrieval.""" + + def __init__(self, stop, route): + """Initialize the data object.""" + self.stop = stop + self.route = route + self.info = None + + def update(self): + """Retrieve the information from API.""" + bridge = BizkaibusData(self.stop, self.route) + bridge.getNextBus() + self.info = bridge.info diff --git a/requirements_all.txt b/requirements_all.txt index c35145afe95..db00f4bb93f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -229,6 +229,9 @@ bellows-homeassistant==0.7.2 # homeassistant.components.bmw_connected_drive bimmer_connected==0.5.3 +# homeassistant.components.bizkaibus +bizkaibus==0.1.1 + # homeassistant.components.blink blinkpy==0.13.1