"""Support for Notion sensors.""" import logging from . import SENSOR_TEMPERATURE, SENSOR_TYPES, NotionEntity from .const import DATA_CLIENT, DOMAIN _LOGGER = logging.getLogger(__name__) async def async_setup_entry(hass, entry, async_add_entities): """Set up Notion sensors based on a config entry.""" notion = hass.data[DOMAIN][DATA_CLIENT][entry.entry_id] sensor_list = [] for task_id, task in notion.tasks.items(): if task['task_type'] not in SENSOR_TYPES: continue name, device_class, unit = SENSOR_TYPES[task['task_type']] sensor = notion.sensors[task['sensor_id']] sensor_list.append( NotionSensor( notion, task_id, sensor['id'], sensor['bridge']['id'], sensor['system_id'], name, device_class, unit )) async_add_entities(sensor_list, True) class NotionSensor(NotionEntity): """Define a Notion sensor.""" def __init__( self, notion, task_id, sensor_id, bridge_id, system_id, name, device_class, unit): """Initialize the entity.""" super().__init__( notion, task_id, sensor_id, bridge_id, system_id, name, device_class) self._unit = unit @property def state(self): """Return the state of the sensor.""" return self._state @property def unit_of_measurement(self): """Return the unit of measurement.""" return self._unit async def async_update(self): """Fetch new state data for the sensor.""" task = self._notion.tasks[self._task_id] if task['task_type'] == SENSOR_TEMPERATURE: self._state = round(float(task['status']['value']), 1) else: _LOGGER.error( 'Unknown task type: %s: %s', self._notion.sensors[self._sensor_id], task['task_type'])