diff --git a/homeassistant/components/iqvia/__init__.py b/homeassistant/components/iqvia/__init__.py index b6bd85fca53..3cf80a9d75c 100644 --- a/homeassistant/components/iqvia/__init__.py +++ b/homeassistant/components/iqvia/__init__.py @@ -20,11 +20,10 @@ from homeassistant.util.decorator import Registry from .const import ( DATA_CLIENT, DATA_LISTENER, DOMAIN, SENSORS, TOPIC_DATA_UPDATE, - TYPE_ALLERGY_FORECAST, TYPE_ALLERGY_HISTORIC, TYPE_ALLERGY_INDEX, - TYPE_ALLERGY_OUTLOOK, TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW, - TYPE_ALLERGY_YESTERDAY, TYPE_ASTHMA_FORECAST, TYPE_ASTHMA_HISTORIC, + TYPE_ALLERGY_FORECAST, TYPE_ALLERGY_INDEX, TYPE_ALLERGY_OUTLOOK, + TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW, TYPE_ASTHMA_FORECAST, TYPE_ASTHMA_INDEX, TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW, - TYPE_ASTHMA_YESTERDAY, TYPE_DISEASE_FORECAST) + TYPE_DISEASE_FORECAST) _LOGGER = logging.getLogger(__name__) @@ -38,12 +37,10 @@ DEFAULT_SCAN_INTERVAL = timedelta(minutes=30) FETCHER_MAPPING = { (TYPE_ALLERGY_FORECAST,): (TYPE_ALLERGY_FORECAST, TYPE_ALLERGY_OUTLOOK), - (TYPE_ALLERGY_HISTORIC,): (TYPE_ALLERGY_HISTORIC,), - (TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW, TYPE_ALLERGY_YESTERDAY): ( + (TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW): ( TYPE_ALLERGY_INDEX,), (TYPE_ASTHMA_FORECAST,): (TYPE_ASTHMA_FORECAST,), - (TYPE_ASTHMA_HISTORIC,): (TYPE_ASTHMA_HISTORIC,), - (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW, TYPE_ASTHMA_YESTERDAY): ( + (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW): ( TYPE_ASTHMA_INDEX,), (TYPE_DISEASE_FORECAST,): (TYPE_DISEASE_FORECAST,), } @@ -108,16 +105,12 @@ class IQVIAData: self.fetchers = Registry() self.fetchers.register(TYPE_ALLERGY_FORECAST)( self._client.allergens.extended) - self.fetchers.register(TYPE_ALLERGY_HISTORIC)( - self._client.allergens.historic) self.fetchers.register(TYPE_ALLERGY_OUTLOOK)( self._client.allergens.outlook) self.fetchers.register(TYPE_ALLERGY_INDEX)( self._client.allergens.current) self.fetchers.register(TYPE_ASTHMA_FORECAST)( self._client.asthma.extended) - self.fetchers.register(TYPE_ASTHMA_HISTORIC)( - self._client.asthma.historic) self.fetchers.register(TYPE_ASTHMA_INDEX)(self._client.asthma.current) self.fetchers.register(TYPE_DISEASE_FORECAST)( self._client.disease.extended) @@ -171,12 +164,10 @@ class IQVIAEntity(Entity): @property def available(self): """Return True if entity is available.""" - if self._type in (TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW, - TYPE_ALLERGY_YESTERDAY): + if self._type in (TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW): return self._iqvia.data.get(TYPE_ALLERGY_INDEX) is not None - if self._type in (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW, - TYPE_ASTHMA_YESTERDAY): + if self._type in (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW): return self._iqvia.data.get(TYPE_ASTHMA_INDEX) is not None return self._iqvia.data.get(self._type) is not None diff --git a/homeassistant/components/iqvia/const.py b/homeassistant/components/iqvia/const.py index 0ba9d7a0f1e..af8e2861a02 100644 --- a/homeassistant/components/iqvia/const.py +++ b/homeassistant/components/iqvia/const.py @@ -7,30 +7,22 @@ DATA_LISTENER = 'listener' TOPIC_DATA_UPDATE = 'data_update' TYPE_ALLERGY_FORECAST = 'allergy_average_forecasted' -TYPE_ALLERGY_HISTORIC = 'allergy_average_historical' TYPE_ALLERGY_INDEX = 'allergy_index' TYPE_ALLERGY_OUTLOOK = 'allergy_outlook' TYPE_ALLERGY_TODAY = 'allergy_index_today' TYPE_ALLERGY_TOMORROW = 'allergy_index_tomorrow' -TYPE_ALLERGY_YESTERDAY = 'allergy_index_yesterday' TYPE_ASTHMA_FORECAST = 'asthma_average_forecasted' -TYPE_ASTHMA_HISTORIC = 'asthma_average_historical' TYPE_ASTHMA_INDEX = 'asthma_index' TYPE_ASTHMA_TODAY = 'asthma_index_today' TYPE_ASTHMA_TOMORROW = 'asthma_index_tomorrow' -TYPE_ASTHMA_YESTERDAY = 'asthma_index_yesterday' TYPE_DISEASE_FORECAST = 'disease_average_forecasted' SENSORS = { TYPE_ALLERGY_FORECAST: ('Allergy Index: Forecasted Average', 'mdi:flower'), - TYPE_ALLERGY_HISTORIC: ('Allergy Index: Historical Average', 'mdi:flower'), TYPE_ALLERGY_TODAY: ('Allergy Index: Today', 'mdi:flower'), TYPE_ALLERGY_TOMORROW: ('Allergy Index: Tomorrow', 'mdi:flower'), - TYPE_ALLERGY_YESTERDAY: ('Allergy Index: Yesterday', 'mdi:flower'), TYPE_ASTHMA_TODAY: ('Asthma Index: Today', 'mdi:flower'), TYPE_ASTHMA_TOMORROW: ('Asthma Index: Tomorrow', 'mdi:flower'), - TYPE_ASTHMA_YESTERDAY: ('Asthma Index: Yesterday', 'mdi:flower'), TYPE_ASTHMA_FORECAST: ('Asthma Index: Forecasted Average', 'mdi:flower'), - TYPE_ASTHMA_HISTORIC: ('Asthma Index: Historical Average', 'mdi:flower'), TYPE_DISEASE_FORECAST: ('Cold & Flu: Forecasted Average', 'mdi:snowflake') } diff --git a/homeassistant/components/iqvia/sensor.py b/homeassistant/components/iqvia/sensor.py index 252007de21e..9dbea448e1c 100644 --- a/homeassistant/components/iqvia/sensor.py +++ b/homeassistant/components/iqvia/sensor.py @@ -5,12 +5,10 @@ from statistics import mean import numpy as np from homeassistant.components.iqvia import ( - DATA_CLIENT, DOMAIN, SENSORS, TYPE_ALLERGY_FORECAST, TYPE_ALLERGY_HISTORIC, - TYPE_ALLERGY_OUTLOOK, TYPE_ALLERGY_INDEX, TYPE_ALLERGY_TODAY, - TYPE_ALLERGY_TOMORROW, TYPE_ALLERGY_YESTERDAY, TYPE_ASTHMA_FORECAST, - TYPE_ASTHMA_HISTORIC, TYPE_ASTHMA_INDEX, TYPE_ASTHMA_TODAY, - TYPE_ASTHMA_TOMORROW, TYPE_ASTHMA_YESTERDAY, TYPE_DISEASE_FORECAST, - IQVIAEntity) + DATA_CLIENT, DOMAIN, SENSORS, TYPE_ALLERGY_FORECAST, TYPE_ALLERGY_OUTLOOK, + TYPE_ALLERGY_INDEX, TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW, + TYPE_ASTHMA_FORECAST, TYPE_ASTHMA_INDEX, TYPE_ASTHMA_TODAY, + TYPE_ASTHMA_TOMORROW, TYPE_DISEASE_FORECAST, IQVIAEntity) from homeassistant.const import ATTR_STATE _LOGGER = logging.getLogger(__name__) @@ -59,15 +57,11 @@ async def async_setup_platform( sensor_class_mapping = { TYPE_ALLERGY_FORECAST: ForecastSensor, - TYPE_ALLERGY_HISTORIC: HistoricalSensor, TYPE_ALLERGY_TODAY: IndexSensor, TYPE_ALLERGY_TOMORROW: IndexSensor, - TYPE_ALLERGY_YESTERDAY: IndexSensor, TYPE_ASTHMA_FORECAST: ForecastSensor, - TYPE_ASTHMA_HISTORIC: HistoricalSensor, TYPE_ASTHMA_TODAY: IndexSensor, TYPE_ASTHMA_TOMORROW: IndexSensor, - TYPE_ASTHMA_YESTERDAY: IndexSensor, TYPE_DISEASE_FORECAST: ForecastSensor, } @@ -80,14 +74,6 @@ async def async_setup_platform( async_add_entities(sensors, True) -def calculate_average_rating(indices): - """Calculate the human-friendly historical allergy average.""" - ratings = list( - r['label'] for n in indices for r in RATING_MAPPING - if r['minimum'] <= n <= r['maximum']) - return max(set(ratings), key=ratings.count) - - def calculate_trend(indices): """Calculate the "moving average" of a set of indices.""" def moving_average(data, samples): @@ -138,32 +124,6 @@ class ForecastSensor(IQVIAEntity): self._state = average -class HistoricalSensor(IQVIAEntity): - """Define sensor related to historical data.""" - - async def async_update(self): - """Update the sensor.""" - if not self._iqvia.data: - return - - data = self._iqvia.data[self._type].get('Location') - if not data: - return - - indices = [p['Index'] for p in data['periods']] - average = round(mean(indices), 1) - - self._attrs.update({ - ATTR_CITY: data['City'].title(), - ATTR_RATING: calculate_average_rating(indices), - ATTR_STATE: data['State'], - ATTR_TREND: calculate_trend(indices), - ATTR_ZIP_CODE: data['ZIP'] - }) - - self._state = average - - class IndexSensor(IQVIAEntity): """Define sensor related to indices.""" @@ -173,11 +133,9 @@ class IndexSensor(IQVIAEntity): return data = {} - if self._type in (TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW, - TYPE_ALLERGY_YESTERDAY): + if self._type in (TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW): data = self._iqvia.data[TYPE_ALLERGY_INDEX].get('Location') - elif self._type in (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW, - TYPE_ASTHMA_YESTERDAY): + elif self._type in (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW): data = self._iqvia.data[TYPE_ASTHMA_INDEX].get('Location') if not data: @@ -197,8 +155,7 @@ class IndexSensor(IQVIAEntity): ATTR_ZIP_CODE: data['ZIP'] }) - if self._type in (TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW, - TYPE_ALLERGY_YESTERDAY): + if self._type in (TYPE_ALLERGY_TODAY, TYPE_ALLERGY_TOMORROW): for idx, attrs in enumerate(period['Triggers']): index = idx + 1 self._attrs.update({ @@ -209,8 +166,7 @@ class IndexSensor(IQVIAEntity): '{0}_{1}'.format(ATTR_ALLERGEN_TYPE, index): attrs['PlantType'], }) - elif self._type in (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW, - TYPE_ASTHMA_YESTERDAY): + elif self._type in (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW): for idx, attrs in enumerate(period['Triggers']): index = idx + 1 self._attrs.update({