Bugfix/waqi sensor pwaqi version bump (#5944)

* Bump pwaqi to 1.4 to fix a typo in the underlying library.

* Update WAQI sensor to use pwaqi 2.0 which relies on AQICN public API.
This is a breaking change as the component now requires 'token' parameter.

* Fix lint
This commit is contained in:
Valentin Alexeev 2017-02-13 15:28:40 +02:00 committed by Fabian Affolter
parent f77eda2981
commit 2ffdf1fdcd
2 changed files with 12 additions and 7 deletions

View File

@ -16,7 +16,7 @@ from homeassistant.helpers.config_validation import PLATFORM_SCHEMA
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from homeassistant.util import Throttle from homeassistant.util import Throttle
REQUIREMENTS = ['pwaqi==1.4'] REQUIREMENTS = ['pwaqi==2.0']
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -33,6 +33,7 @@ ATTRIBUTION = 'Data provided by the World Air Quality Index project'
CONF_LOCATIONS = 'locations' CONF_LOCATIONS = 'locations'
CONF_STATIONS = 'stations' CONF_STATIONS = 'stations'
CONF_API_TOKEN = 'token'
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=10) MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=10)
@ -42,6 +43,7 @@ SENSOR_TYPES = {
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Optional(CONF_STATIONS): cv.ensure_list, vol.Optional(CONF_STATIONS): cv.ensure_list,
vol.Required(CONF_API_TOKEN): cv.string,
vol.Required(CONF_LOCATIONS): cv.ensure_list, vol.Required(CONF_LOCATIONS): cv.ensure_list,
}) })
@ -51,15 +53,16 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
import pwaqi import pwaqi
dev = [] dev = []
token = config.get(CONF_API_TOKEN)
station_filter = config.get(CONF_STATIONS) station_filter = config.get(CONF_STATIONS)
for location_name in config.get(CONF_LOCATIONS): for location_name in config.get(CONF_LOCATIONS):
station_ids = pwaqi.findStationCodesByCity(location_name) station_ids = pwaqi.findStationCodesByCity(location_name, token)
_LOGGER.info("The following stations were returned: %s", station_ids) _LOGGER.info("The following stations were returned: %s", station_ids)
for station in station_ids: for station in station_ids:
waqi_sensor = WaqiSensor(WaqiData(station), station) waqi_sensor = WaqiSensor(WaqiData(station, token), station)
if (not station_filter) or \ if (not station_filter) or \
(waqi_sensor.station_name in station_filter): (waqi_sensor.station_name in station_filter):
dev.append(WaqiSensor(WaqiData(station), station)) dev.append(WaqiSensor(WaqiData(station, token), station))
add_devices(dev) add_devices(dev)
@ -148,9 +151,10 @@ class WaqiSensor(Entity):
class WaqiData(object): class WaqiData(object):
"""Get the latest data and update the states.""" """Get the latest data and update the states."""
def __init__(self, station_id): def __init__(self, station_id, token):
"""Initialize the data object.""" """Initialize the data object."""
self._station_id = station_id self._station_id = station_id
self._token = token
self.data = None self.data = None
@Throttle(MIN_TIME_BETWEEN_UPDATES) @Throttle(MIN_TIME_BETWEEN_UPDATES)
@ -158,6 +162,7 @@ class WaqiData(object):
"""Get the data from World Air Quality Index and updates the states.""" """Get the data from World Air Quality Index and updates the states."""
import pwaqi import pwaqi
try: try:
self.data = pwaqi.getStationObservation(self._station_id) self.data = pwaqi.getStationObservation(
self._station_id, self._token)
except AttributeError: except AttributeError:
_LOGGER.exception("Unable to fetch data from WAQI") _LOGGER.exception("Unable to fetch data from WAQI")

View File

@ -406,7 +406,7 @@ pushbullet.py==0.10.0
pushetta==1.0.15 pushetta==1.0.15
# homeassistant.components.sensor.waqi # homeassistant.components.sensor.waqi
pwaqi==1.4 pwaqi==2.0
# homeassistant.components.sensor.cpuspeed # homeassistant.components.sensor.cpuspeed
py-cpuinfo==0.2.3 py-cpuinfo==0.2.3