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:
parent
5aa9a1a7c2
commit
e08f2ad18d
3 changed files with 20 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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'),
|
||||
}
|
||||
|
|
|
@ -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']
|
||||
|
|
Loading…
Add table
Reference in a new issue