Пример #1
0
    "so2": ATTR_SULFUR_DIOXIDE,
}

ATTRIBUTION = "Data provided by the World Air Quality Index project"

CONF_LOCATIONS = "locations"
CONF_STATIONS = "stations"

SCAN_INTERVAL = timedelta(minutes=5)

TIMEOUT = 10

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_STATIONS):
    cv.ensure_list,
    vol.Required(CONF_TOKEN):
    cv.string,
    vol.Required(CONF_LOCATIONS):
    cv.ensure_list,
})


async def async_setup_platform(opp,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the requested World Air Quality Index locations."""

    token = config.get(CONF_TOKEN)
    station_filter = config.get(CONF_STATIONS)
    locations = config.get(CONF_LOCATIONS)
Пример #2
0
CONF_VISIBILITY_TEMPLATE = "visibility_template"
CONF_FORECAST_TEMPLATE = "forecast_template"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_NAME):
    cv.string,
    vol.Required(CONF_CONDITION_TEMPLATE):
    cv.template,
    vol.Required(CONF_TEMPERATURE_TEMPLATE):
    cv.template,
    vol.Required(CONF_HUMIDITY_TEMPLATE):
    cv.template,
    vol.Optional(CONF_ATTRIBUTION_TEMPLATE):
    cv.template,
    vol.Optional(CONF_PRESSURE_TEMPLATE):
    cv.template,
    vol.Optional(CONF_WIND_SPEED_TEMPLATE):
    cv.template,
    vol.Optional(CONF_WIND_BEARING_TEMPLATE):
    cv.template,
    vol.Optional(CONF_OZONE_TEMPLATE):
    cv.template,
    vol.Optional(CONF_VISIBILITY_TEMPLATE):
    cv.template,
    vol.Optional(CONF_FORECAST_TEMPLATE):
    cv.template,
    vol.Optional(CONF_UNIQUE_ID):
    cv.string,
})


async def async_setup_platform(opp,
Пример #3
0
            vol.Optional(CONF_COLOR_ACTION): cv.SCRIPT_SCHEMA,
            vol.Optional(CONF_WHITE_VALUE_TEMPLATE): cv.template,
            vol.Optional(CONF_WHITE_VALUE_ACTION): cv.SCRIPT_SCHEMA,
            vol.Inclusive(CONF_EFFECT_LIST_TEMPLATE, "effect"): cv.template,
            vol.Inclusive(CONF_EFFECT_TEMPLATE, "effect"): cv.template,
            vol.Inclusive(CONF_EFFECT_ACTION, "effect"): cv.SCRIPT_SCHEMA,
            vol.Optional(CONF_MAX_MIREDS_TEMPLATE): cv.template,
            vol.Optional(CONF_MIN_MIREDS_TEMPLATE): cv.template,
            vol.Optional(CONF_SUPPORTS_TRANSITION): cv.template,
            vol.Optional(CONF_UNIQUE_ID): cv.string,
        }
    ),
)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {vol.Required(CONF_LIGHTS): cv.schema_with_slug_keys(LIGHT_SCHEMA)}
)


async def _async_create_entities(opp, config):
    """Create the Template Lights."""
    lights = []

    for device, device_config in config[CONF_LIGHTS].items():
        friendly_name = device_config.get(CONF_FRIENDLY_NAME, device)

        state_template = device_config.get(CONF_VALUE_TEMPLATE)
        icon_template = device_config.get(CONF_ICON_TEMPLATE)
        entity_picture_template = device_config.get(CONF_ENTITY_PICTURE_TEMPLATE)
        availability_template = device_config.get(CONF_AVAILABILITY_TEMPLATE)
        unique_id = device_config.get(CONF_UNIQUE_ID)
Пример #4
0
import voluptuous as vol

from openpeerpower.components.sensor import SensorEntity
import openpeerpower.helpers.config_validation as cv
from openpeerpower.helpers.config_validation import PLATFORM_SCHEMA

SCAN_INTERVAL = timedelta(hours=12)

CONF_ZIP = "zip"
CONF_WASTE_TYPE = "waste_type"
CONF_NAME = "name"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_ZIP):
    cv.positive_int,
    vol.Required(CONF_WASTE_TYPE, default="waste"):
    cv.string,
    vol.Optional(CONF_NAME):
    cv.string,
})


def setup_platform(opp, config, add_entities, discovery_info=None):
    """Set up the sensor platform."""
    api_connector = OpenERZConnector(config[CONF_ZIP], config[CONF_WASTE_TYPE])
    add_entities([OpenERZSensor(api_connector, config.get(CONF_NAME))], True)


class OpenERZSensor(SensorEntity):
    """Representation of a Sensor."""
    def __init__(self, api_connector, name):
        """Initialize the sensor."""
Пример #5
0
                     | SUPPORT_VOLUME_STEP
                     | SUPPORT_TURN_ON
                     | SUPPORT_PAUSE
                     | SUPPORT_SELECT_SOURCE)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_PORT, default=DEFAULT_PORT):
    cv.port,
    vol.Optional(CONF_USERNAME, default=DEFAULT_USERNAME):
    cv.string,
    vol.Optional(CONF_PASSWORD, default=DEFAULT_PASSWORD):
    cv.string,
    vol.Optional(CONF_SSL, default=DEFAULT_SSL):
    cv.boolean,
    vol.Optional(CONF_USE_CHANNEL_ICON, default=DEFAULT_USE_CHANNEL_ICON):
    cv.boolean,
    vol.Optional(CONF_DEEP_STANDBY, default=DEFAULT_DEEP_STANDBY):
    cv.boolean,
    vol.Optional(CONF_MAC_ADDRESS, default=DEFAULT_MAC_ADDRESS):
    cv.string,
    vol.Optional(CONF_SOURCE_BOUQUET, default=DEFAULT_SOURCE_BOUQUET):
    cv.string,
})


def setup_platform(opp, config, add_devices, discovery_info=None):
    """Set up of an enigma2 media player."""
    if discovery_info:
Пример #6
0
    def test_validate_platform_config(self, caplog):
        """Test validating platform configuration."""
        platform_schema = PLATFORM_SCHEMA.extend({"hello": str})
        platform_schema_base = PLATFORM_SCHEMA_BASE.extend({})
        mock_integration(
            self.opp,
            MockModule("platform_conf",
                       platform_schema_base=platform_schema_base),
        )
        mock_entity_platform(
            self.opp,
            "platform_conf.whatever",
            MockPlatform(platform_schema=platform_schema),
        )

        with assert_setup_component(0):
            assert setup.setup_component(
                self.opp,
                "platform_conf",
                {
                    "platform_conf": {
                        "platform": "not_existing",
                        "hello": "world"
                    }
                },
            )

        self.opp.data.pop(setup.DATA_SETUP)
        self.opp.config.components.remove("platform_conf")

        with assert_setup_component(1):
            assert setup.setup_component(
                self.opp,
                "platform_conf",
                {"platform_conf": {
                    "platform": "whatever",
                    "hello": "world"
                }},
            )

        self.opp.data.pop(setup.DATA_SETUP)
        self.opp.config.components.remove("platform_conf")

        with assert_setup_component(1):
            assert setup.setup_component(
                self.opp,
                "platform_conf",
                {
                    "platform_conf": [{
                        "platform": "whatever",
                        "hello": "world"
                    }]
                },
            )

        self.opp.data.pop(setup.DATA_SETUP)
        self.opp.config.components.remove("platform_conf")

        # Any falsey platform config will be ignored (None, {}, etc)
        with assert_setup_component(0) as config:
            assert setup.setup_component(self.opp, "platform_conf",
                                         {"platform_conf": None})
            assert "platform_conf" in self.opp.config.components
            assert not config["platform_conf"]  # empty

            assert setup.setup_component(self.opp, "platform_conf",
                                         {"platform_conf": {}})
            assert "platform_conf" in self.opp.config.components
            assert not config["platform_conf"]  # empty
Пример #7
0
    [ATTR_CARBON_DIOXIDE, CONCENTRATION_PARTS_PER_MILLION, "mdi:molecule-co2"],
    "voc": [
        ATTR_VOLATILE_ORGANIC_COMPOUNDS,
        CONCENTRATION_PARTS_PER_BILLION,
        "mdi:cloud",
    ],
    "allpollu": [ATTR_FOOBOT_INDEX, PERCENTAGE, "mdi:percent"],
}

SCAN_INTERVAL = timedelta(minutes=10)
PARALLEL_UPDATES = 1

TIMEOUT = 10

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_TOKEN): cv.string,
    vol.Required(CONF_USERNAME): cv.string
})


async def async_setup_platform(opp,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the devices associated with the account."""
    token = config.get(CONF_TOKEN)
    username = config.get(CONF_USERNAME)

    client = FoobotClient(token,
                          username,
                          async_get_clientsession(opp),
                          timeout=TIMEOUT)