107 lines
2.8 KiB
Python
107 lines
2.8 KiB
Python
from dataclasses import asdict
|
|
|
|
from homeassistant.helpers.entity import Entity
|
|
|
|
from . import get_coordinator
|
|
|
|
|
|
async def async_setup_entry(hass, _, async_add_entities):
|
|
"""Defer sensor setup to the shared sensor module."""
|
|
coordinator = await get_coordinator(hass)
|
|
|
|
async_add_entities([CoronaAugsburgSensor(coordinator)])
|
|
|
|
|
|
class CoronaAugsburgSensor(Entity):
|
|
"""Representation of a county with Corona cases."""
|
|
|
|
def __init__(self, coordinator):
|
|
"""Initialize sensor."""
|
|
self.coordinator = coordinator
|
|
self._name = "Coronavirus Augsburg"
|
|
self._state = None
|
|
|
|
@property
|
|
def available(self):
|
|
return self.coordinator.last_update_success and self.coordinator.data
|
|
|
|
@property
|
|
def name(self):
|
|
return self._name
|
|
|
|
@property
|
|
def unique_id(self):
|
|
return self._name
|
|
|
|
@property
|
|
def icon(self):
|
|
return "mdi:biohazard"
|
|
|
|
@property
|
|
def unit_of_measurement(self):
|
|
return ""
|
|
|
|
@property
|
|
def state(self):
|
|
return self.coordinator.data["incidence"].incidence
|
|
|
|
@property
|
|
def device_state_attributes(self):
|
|
data = self.coordinator.data["incidence"]
|
|
return asdict(data)
|
|
|
|
async def async_added_to_hass(self):
|
|
"""When entity is added to hass."""
|
|
self.coordinator.async_add_listener(self.async_write_ha_state)
|
|
|
|
async def async_will_remove_from_hass(self):
|
|
"""When entity will be removed from hass."""
|
|
self.coordinator.async_remove_listener(self.async_write_ha_state)
|
|
|
|
|
|
class CoronaAugsburgVaccinationSensor(Entity):
|
|
"""Representation of vaccination data for the city of Augsburg"""
|
|
|
|
def __init__(self, coordinator):
|
|
"""Initialize sensor."""
|
|
self.coordinator = coordinator
|
|
self._name = "COVID-19 Vaccinations Augsburg"
|
|
self._state = None
|
|
|
|
@property
|
|
def available(self):
|
|
return self.coordinator.last_update_success and self.coordinator.data
|
|
|
|
@property
|
|
def name(self):
|
|
return self._name
|
|
|
|
@property
|
|
def unique_id(self):
|
|
return self._name
|
|
|
|
@property
|
|
def icon(self):
|
|
return "mdi:biohazard"
|
|
|
|
@property
|
|
def unit_of_measurement(self):
|
|
return ""
|
|
|
|
@property
|
|
def state(self):
|
|
return self.coordinator.data["vaccination"].total_vaccinations
|
|
|
|
@property
|
|
def device_state_attributes(self):
|
|
data = self.coordinator.data["vaccination"]
|
|
return asdict(data)
|
|
|
|
async def async_added_to_hass(self):
|
|
"""When entity is added to hass."""
|
|
self.coordinator.async_add_listener(self.async_write_ha_state)
|
|
|
|
async def async_will_remove_from_hass(self):
|
|
"""When entity will be removed from hass."""
|
|
self.coordinator.async_remove_listener(self.async_write_ha_state)
|