예제 #1
0
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
예제 #2
0
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,
            })