diff --git a/homeassistant/components/iqvia/__init__.py b/homeassistant/components/iqvia/__init__.py index 3cf80a9d75c..978d84c65c6 100644 --- a/homeassistant/components/iqvia/__init__.py +++ b/homeassistant/components/iqvia/__init__.py @@ -23,7 +23,7 @@ from .const import ( 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_DISEASE_FORECAST) + TYPE_DISEASE_FORECAST, TYPE_DISEASE_INDEX, TYPE_DISEASE_TODAY) _LOGGER = logging.getLogger(__name__) @@ -43,6 +43,7 @@ FETCHER_MAPPING = { (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW): ( TYPE_ASTHMA_INDEX,), (TYPE_DISEASE_FORECAST,): (TYPE_DISEASE_FORECAST,), + (TYPE_DISEASE_TODAY,): (TYPE_DISEASE_INDEX,), } @@ -114,6 +115,8 @@ class IQVIAData: self.fetchers.register(TYPE_ASTHMA_INDEX)(self._client.asthma.current) self.fetchers.register(TYPE_DISEASE_FORECAST)( self._client.disease.extended) + self.fetchers.register(TYPE_DISEASE_INDEX)( + self._client.disease.current) async def async_update(self): """Update IQVIA data.""" @@ -170,6 +173,9 @@ class IQVIAEntity(Entity): if self._type in (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW): return self._iqvia.data.get(TYPE_ASTHMA_INDEX) is not None + if self._type == TYPE_DISEASE_TODAY: + return self._iqvia.data.get(TYPE_DISEASE_INDEX) is not None + return self._iqvia.data.get(self._type) is not None @property diff --git a/homeassistant/components/iqvia/const.py b/homeassistant/components/iqvia/const.py index af8e2861a02..025fa8a9505 100644 --- a/homeassistant/components/iqvia/const.py +++ b/homeassistant/components/iqvia/const.py @@ -16,6 +16,8 @@ TYPE_ASTHMA_INDEX = 'asthma_index' TYPE_ASTHMA_TODAY = 'asthma_index_today' TYPE_ASTHMA_TOMORROW = 'asthma_index_tomorrow' TYPE_DISEASE_FORECAST = 'disease_average_forecasted' +TYPE_DISEASE_INDEX = 'disease_index' +TYPE_DISEASE_TODAY = 'disease_index_today' SENSORS = { TYPE_ALLERGY_FORECAST: ('Allergy Index: Forecasted Average', 'mdi:flower'), @@ -24,5 +26,6 @@ SENSORS = { TYPE_ASTHMA_TODAY: ('Asthma Index: Today', 'mdi:flower'), TYPE_ASTHMA_TOMORROW: ('Asthma Index: Tomorrow', 'mdi:flower'), TYPE_ASTHMA_FORECAST: ('Asthma Index: Forecasted Average', 'mdi:flower'), - TYPE_DISEASE_FORECAST: ('Cold & Flu: Forecasted Average', 'mdi:snowflake') + TYPE_DISEASE_FORECAST: ('Cold & Flu: Forecasted Average', 'mdi:snowflake'), + TYPE_DISEASE_TODAY: ('Cold & Flu Index: Today', 'mdi:pill'), } diff --git a/homeassistant/components/iqvia/sensor.py b/homeassistant/components/iqvia/sensor.py index f7e899b5d7d..b0b09c3f977 100644 --- a/homeassistant/components/iqvia/sensor.py +++ b/homeassistant/components/iqvia/sensor.py @@ -8,7 +8,8 @@ from homeassistant.components.iqvia import ( 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) + TYPE_ASTHMA_TOMORROW, TYPE_DISEASE_FORECAST, TYPE_DISEASE_INDEX, + TYPE_DISEASE_TODAY, IQVIAEntity) from homeassistant.const import ATTR_STATE _LOGGER = logging.getLogger(__name__) @@ -64,6 +65,7 @@ async def async_setup_platform( TYPE_ASTHMA_TODAY: IndexSensor, TYPE_ASTHMA_TOMORROW: IndexSensor, TYPE_DISEASE_FORECAST: ForecastSensor, + TYPE_DISEASE_TODAY: IndexSensor, } sensors = [] @@ -139,6 +141,8 @@ class IndexSensor(IQVIAEntity): data = self._iqvia.data[TYPE_ALLERGY_INDEX].get('Location') elif self._type in (TYPE_ASTHMA_TODAY, TYPE_ASTHMA_TOMORROW): data = self._iqvia.data[TYPE_ASTHMA_INDEX].get('Location') + elif self._type == TYPE_DISEASE_TODAY: + data = self._iqvia.data[TYPE_DISEASE_INDEX].get('Location') if not data: return @@ -177,5 +181,9 @@ class IndexSensor(IQVIAEntity): '{0}_{1}'.format(ATTR_ALLERGEN_AMOUNT, index): attrs['PPM'], }) + elif self._type == TYPE_DISEASE_TODAY: + for attrs in period['Triggers']: + self._attrs['{0}_index'.format( + attrs['Name'].lower())] = attrs['Index'] self._state = period['Index']