async def async_setup(hass, config): """Set up the GreenEye Monitor component.""" monitors = Monitors() hass.data[DATA_GREENEYE_MONITOR] = monitors server_config = config[DOMAIN] server = await monitors.start_server(server_config[CONF_PORT]) async def close_server(*args): """Close the monitoring server.""" await server.close() hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, close_server) all_sensors = [] for monitor_config in server_config[CONF_MONITORS]: monitor_serial_number = { CONF_MONITOR_SERIAL_NUMBER: monitor_config[CONF_SERIAL_NUMBER] } channel_configs = monitor_config[CONF_CHANNELS] for channel_config in channel_configs: all_sensors.append({ CONF_SENSOR_TYPE: SENSOR_TYPE_CURRENT, **monitor_serial_number, **channel_config, }) sensor_configs = monitor_config[CONF_TEMPERATURE_SENSORS] if sensor_configs: temperature_unit = { CONF_TEMPERATURE_UNIT: sensor_configs[CONF_TEMPERATURE_UNIT] } for sensor_config in sensor_configs[CONF_SENSORS]: all_sensors.append({ CONF_SENSOR_TYPE: SENSOR_TYPE_TEMPERATURE, **monitor_serial_number, **temperature_unit, **sensor_config, }) counter_configs = monitor_config[CONF_PULSE_COUNTERS] for counter_config in counter_configs: all_sensors.append({ CONF_SENSOR_TYPE: SENSOR_TYPE_PULSE_COUNTER, **monitor_serial_number, **counter_config, }) if not all_sensors: _LOGGER.error("Configuration must specify at least one " "channel, pulse counter or temperature sensor") return False hass.async_create_task( async_load_platform(hass, "sensor", DOMAIN, all_sensors, config)) return True
async def async_setup(hass, config): """Set up the GreenEye Monitor component.""" monitors = Monitors() hass.data[DATA_GREENEYE_MONITOR] = monitors server_config = config[DOMAIN] server = await monitors.start_server(server_config[CONF_PORT]) async def close_server(*args): """Close the monitoring server.""" await server.close() hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, close_server) all_sensors = [] for monitor_config in server_config[CONF_MONITORS]: monitor_serial_number = { CONF_MONITOR_SERIAL_NUMBER: monitor_config[CONF_SERIAL_NUMBER] } channel_configs = monitor_config[CONF_CHANNELS] for channel_config in channel_configs: all_sensors.append({ CONF_SENSOR_TYPE: SENSOR_TYPE_CURRENT, **monitor_serial_number, **channel_config, }) voltage_configs = monitor_config[CONF_VOLTAGE_SENSORS] for voltage_config in voltage_configs: all_sensors.append({ CONF_SENSOR_TYPE: SENSOR_TYPE_VOLTAGE, **monitor_serial_number, **voltage_config, }) if sensor_configs := monitor_config[CONF_TEMPERATURE_SENSORS]: temperature_unit = { CONF_TEMPERATURE_UNIT: sensor_configs[CONF_TEMPERATURE_UNIT] } for sensor_config in sensor_configs[CONF_SENSORS]: all_sensors.append({ CONF_SENSOR_TYPE: SENSOR_TYPE_TEMPERATURE, **monitor_serial_number, **temperature_unit, **sensor_config, }) counter_configs = monitor_config[CONF_PULSE_COUNTERS] for counter_config in counter_configs: all_sensors.append({ CONF_SENSOR_TYPE: SENSOR_TYPE_PULSE_COUNTER, **monitor_serial_number, **counter_config, })