Add current disease data to IQVIA (#23052)

* Add current and historical disease data to IQVIA

* Added fetcher

* Added disease sensor mapping

* Changed incorrect key

* Removed other extraneous const usage
This commit is contained in:
Aaron Bach 2019-04-29 09:06:23 -06:00 committed by GitHub
parent 5aa9a1a7c2
commit e08f2ad18d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 3 deletions

View file

@ -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

View file

@ -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'),
}

View file

@ -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']