예제 #1
0
파일: remote.py 프로젝트: fabiandevia/home
CONF_MODADDR = 'modaddr'
CONF_CONNADDR = 'connaddr'
CONF_COMMANDS = 'commands'
CONF_DATA = 'data'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_MAC):
    cv.string,
    vol.Required(CONF_HOST):
    cv.string,
    vol.Optional(CONF_PORT, default=DEFAULT_PORT):
    cv.port,
    vol.Required(CONF_DEVICES):
    vol.All(cv.ensure_list, [{
        vol.Optional(CONF_NAME):
        cv.string,
        vol.Optional(CONF_MODADDR):
        vol.Coerce(int),
        vol.Required(CONF_CONNADDR):
        vol.Coerce(int),
        vol.Required(CONF_COMMANDS):
        vol.All(cv.ensure_list, [{
            vol.Required(CONF_NAME): cv.string,
            vol.Required(CONF_DATA): cv.string,
        }])
    }])
})


def setup_platform(hass, config, add_entities, discovery_info=None):
    """Set up the ITach connection and devices."""
    import pyitachip2ir
예제 #2
0
DEFAULT_PORT = 4998
CONNECT_TIMEOUT = 5000

CONF_MODADDR = 'modaddr'
CONF_CONNADDR = 'connaddr'
CONF_COMMANDS = 'commands'
CONF_DATA = 'data'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_MAC): cv.string,
    vol.Required(CONF_HOST): cv.string,
    vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
    vol.Required(CONF_DEVICES): vol.All(cv.ensure_list, [{
        vol.Optional(CONF_NAME): cv.string,
        vol.Optional(CONF_MODADDR): vol.Coerce(int),
        vol.Required(CONF_CONNADDR): vol.Coerce(int),
        vol.Required(CONF_COMMANDS): vol.All(cv.ensure_list, [{
            vol.Required(CONF_NAME): cv.string,
            vol.Required(CONF_DATA): cv.string
        }])
    }])
})


# pylint: disable=unused-argument
def setup_platform(hass, config, add_devices, discovery_info=None):
    """Set up the ITach connection and devices."""
    import pyitachip2ir
    itachip2ir = pyitachip2ir.ITachIP2IR(
        config.get(CONF_MAC), config.get(CONF_HOST),
        int(config.get(CONF_PORT)))
예제 #3
0
    vol.Optional(CONF_TIMEOUT, default=10):
        vol.All(int, vol.Range(min=0)),
    vol.Optional(CONF_SLOT, default=1):
        vol.All(int, vol.Range(min=1, max=1000000)),
})

COMMAND_SCHEMA = vol.Schema({
    vol.Required(CONF_COMMAND): vol.All(cv.ensure_list, [cv.string])
    })

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_NAME): cv.string,
    vol.Required(CONF_HOST): cv.string,
    vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
        vol.All(int, vol.Range(min=0)),
    vol.Optional(CONF_SLOT, default=DEFAULT_SLOT):
        vol.All(int, vol.Range(min=1, max=1000000)),
    vol.Optional(ATTR_HIDDEN, default=True): cv.boolean,
    vol.Required(CONF_TOKEN): vol.All(str, vol.Length(min=32, max=32)),
    vol.Optional(CONF_COMMANDS, default={}):
        vol.Schema({cv.slug: COMMAND_SCHEMA}),
}, extra=vol.ALLOW_EXTRA)


@asyncio.coroutine
def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
    """Set up the Xiaomi IR Remote (Chuangmi IR) platform."""
    from miio import ChuangmiIr, DeviceException

    host = config.get(CONF_HOST)
    token = config.get(CONF_TOKEN)
예제 #4
0
_CONFIGURING: Dict[str, str] = {}
_LOGGER = logging.getLogger(__name__)

DEFAULT_NAME = "LG webOS Smart TV"

WEBOSTV_CONFIG_FILE = "webostv.conf"

MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(seconds=1)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_FILENAME, default=WEBOSTV_CONFIG_FILE):
    cv.string,
    vol.Optional(CONF_HOST):
    cv.string,
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_TIMEOUT, default=8):
    cv.positive_int,
})


def setup_platform(hass, config, add_entities, discovery_info=None):
    """Set up the LG WebOS TV platform."""
    #if discovery_info is not None:
    #    host = urlparse(discovery_info[1]).hostname
    #else:
    host = config.get(CONF_HOST)

    if host is None:
        _LOGGER.error("No TV found in configuration file or with discovery")
예제 #5
0
import voluptuous as vol

REQUIREMENTS = ['pyharmony==1.0.12']
_LOGGER = logging.getLogger(__name__)

ATTR_DEVICE = 'device'
ATTR_COMMAND = 'command'
ATTR_ACTIVITY = 'activity'

SERVICE_SYNC = 'harmony_sync'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_NAME):
    cv.string,
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_PORT):
    cv.string,
    vol.Required(ATTR_ACTIVITY, default=None):
    cv.string,
})

HARMONY_SYNC_SCHEMA = vol.Schema({
    vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
})

# List of devices that have been registered
DEVICES = []


def setup_platform(hass, config, add_devices, discovery_info=None):
    """Setup Harmony platform."""
예제 #6
0
from homeassistant.util import slugify

REQUIREMENTS = ['pyharmony==1.0.20']

_LOGGER = logging.getLogger(__name__)

DEFAULT_PORT = 5222
DEVICES = []
CONF_DEVICE_CACHE = 'harmony_device_cache'

SERVICE_SYNC = 'harmony_sync'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(ATTR_ACTIVITY): cv.string,
    vol.Required(CONF_NAME): cv.string,
    vol.Optional(ATTR_DELAY_SECS, default=DEFAULT_DELAY_SECS):
        vol.Coerce(float),
    vol.Optional(CONF_HOST): cv.string,
    vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
})

HARMONY_SYNC_SCHEMA = vol.Schema({
    vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
})


def setup_platform(hass, config, add_entities, discovery_info=None):
    """Set up the Harmony platform."""
    host = None
    activity = None

    if CONF_DEVICE_CACHE not in hass.data:
예제 #7
0
            vol.Optional(CONF_TIMEOUT, default=0):
            vol.All(int, vol.Range(min=0)),
            vol.Optional(CONF_PARAMS, default={}):
            cv.schema_with_slug_keys(PARAMS_SCHEMA)
        }, conf_validator_url_or_part))

PLATFORM_SCHEMA = vol.Schema(
    vol.All(
        PLATFORM_SCHEMA.extend(
            {
                vol.Required(CONF_NAME):
                cv.slug,
                vol.Optional(CONF_LOGRESP, default='DEBUG'):
                vol.In(('DEBUG', 'INFO')),
                vol.Optional(CONF_BASEURL, default=''):
                vol.Any(None, '', vol.Url()),
                vol.Optional(CONF_METHOD, default='GET'):
                vol.In(('GET', 'POSTFORM', 'POSTJSON', 'POSTBIN')),
                vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
                vol.All(int, vol.Range(min=1)),
                vol.Required(CONF_KEYS):
                cv.schema_with_slug_keys(KEY_SCHEMA)
            },
            extra=vol.ALLOW_EXTRA), conf_validator_baseurl_or_url))


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    friendly_name = config.get(CONF_NAME)
    base_url = config.get(CONF_BASEURL)
예제 #8
0
    vol.Optional(ATTR_DELAY_SECS, default=DEFAULT_DELAY_SECS):
    vol.Coerce(float)
})

SERVICE_LEARN_SCHEMA = MINIMUM_SERVICE_SCHEMA.extend({
    vol.Optional(ATTR_ALTERNATIVE, default=False):
    cv.boolean,
    vol.Optional(ATTR_TIMEOUT, default=DEFAULT_LEARNING_TIMEOUT):
    cv.positive_int,
})

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    vol.All(vol.Any(hostname, ip_address), cv.string),
    vol.Required(CONF_MAC):
    mac_address,
    vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
    cv.positive_int,
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
})


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the Broadlink remote."""
    host = config[CONF_HOST]
    mac_addr = config[CONF_MAC]
    timeout = config[CONF_TIMEOUT]
    name = config[CONF_NAME]
예제 #9
0
    find_unique_id_for_remote,
    get_harmony_client_if_available,
)

_LOGGER = logging.getLogger(__name__)

ATTR_CHANNEL = "channel"
ATTR_CURRENT_ACTIVITY = "current_activity"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Optional(ATTR_ACTIVITY):
        cv.string,
        vol.Required(CONF_NAME):
        cv.string,
        vol.Optional(ATTR_DELAY_SECS, default=DEFAULT_DELAY_SECS):
        vol.Coerce(float),
        vol.Required(CONF_HOST):
        cv.string,
        # The client ignores port so lets not confuse the user by pretenting we do anything with this
    },
    extra=vol.ALLOW_EXTRA,
)

HARMONY_SYNC_SCHEMA = vol.Schema({vol.Optional(ATTR_ENTITY_ID): cv.entity_ids})

HARMONY_CHANGE_CHANNEL_SCHEMA = vol.Schema({
    vol.Required(ATTR_ENTITY_ID):
    cv.entity_ids,
    vol.Required(ATTR_CHANNEL):
    cv.positive_int,
})
예제 #10
0
    CONF_NAME,
    CONF_PORT,
    DEVICE_DEFAULT_NAME,
)
import homeassistant.helpers.config_validation as cv

_LOGGER = logging.getLogger(__name__)

DEFAULT_PORT = 6091
CONNECT_TIMEOUT = 5000


PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Required(CONF_HOST): cv.string,
        vol.Optional(CONF_NAME): cv.string,
        vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port
    }
)

""" tcp hex code for xiaomi tv """
comm_home = "040041010000000b003a0100000000020000000003000000030400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_back = "040041010000000b003a0100000000020000000003000000040400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_menu = "040041010000000b003a0100000000020000000003000000520400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_off = "040041010000000b003a01000000000200000000030000001a0400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_up = "040041010000000b003a0100000000020000000003000000130400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_down = "040041010000000b003a0100000000020000000003000000140400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_left = "040041010000000b003a0100000000020000000003000000150400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_right = "040041010000000b003a0100000000020000000003000000160400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_enter = "040041010000000b003a0100000000020000000003000000170400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
comm_volup = "040041010000000b003a0100000000020000000003000000180400000000050000000006000000000700000000000000000800000000000000000affffffff0b00000000"
예제 #11
0
ENTITIES = []

LEARN_COMMAND_SCHEMA = vol.Schema({
    vol.Required(ATTR_ENTITY_ID):
    vol.All(str),
    vol.Required(CONF_SLOT):
    vol.All(int, vol.Range(**SOLT_RANGE)),
    vol.Optional(CONF_TIMEOUT, default=10):
    vol.All(int, vol.Range(min=0)),
})

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
        vol.Required(CONF_HOST): cv.string,
        vol.Optional(CONF_TYPE, default=TYPE_IR): vol.In((TYPE_IR, TYPE_RF)),
        vol.Optional(CONF_HIDDEN, default=True): cv.boolean,
        vol.Required(CONF_MODEL): vol.In(MODEL_K2 + MODEL_MINIK),
    },
    extra=vol.ALLOW_EXTRA)


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the Konke Remote platform."""
    from pykonkeio.manager import get_device

    name = config[CONF_NAME]
    host = config[CONF_HOST]
예제 #12
0
DEFAULT_TIMEOUT = 5
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=1)

CONF_DEFAULT_SHARPNESS = "d_sharpness"
CONF_DEFAULT_BRIGHTNESS = "d_brightness"
CONF_DEFAULT_VOLUME = "d_volume"
CONF_DEFAULT_CONTRAST = "d_contrast"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_NAME): cv.string,
    vol.Required(CONF_URL): cv.string,
    vol.Optional(CONF_DEFAULT_SHARPNESS, default=50):
        vol.All(int, vol.Range(min=0, max=100)),
    vol.Optional(CONF_DEFAULT_VOLUME, default=50):
        vol.All(int, vol.Range(min=0, max=100)),
    vol.Optional(CONF_DEFAULT_CONTRAST, default=50):
        vol.All(int, vol.Range(min=0, max=100)),
    vol.Optional(CONF_DEFAULT_BRIGHTNESS, default=50):
        vol.All(int, vol.Range(min=0, max=100)),
    vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
        vol.All(int, vol.Range(min=0)),
}, extra=vol.ALLOW_EXTRA)


async def async_setup_platform(hass, config, async_add_entities,
                               discovery_info=None):
    """Set up the Xiaomi IR Remote (Chuangmi IR) platform."""

    friendly_name = config.get(CONF_NAME)
    url = config.get(CONF_URL)
    # Create handler
예제 #13
0
    DEVICE_DEFAULT_NAME,
)
import homeassistant.helpers.config_validation as cv

_LOGGER = logging.getLogger(__name__)

CONNECT_TIMEOUT = 5000
CONF_PSK = 'psk'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Required(CONF_DEVICES): vol.All(
            cv.ensure_list,
            [
                {
                    vol.Optional(CONF_HOST): cv.string,
                    vol.Optional(CONF_NAME): cv.string,
                    vol.Optional(CONF_PSK): cv.string,
                }
            ],
        ),
    }
)
COMMANDS = {
    'num1': 'AAAAAQAAAAEAAAAAAw==',
    'num2': 'AAAAAQAAAAEAAAABAw==',
    'num3': 'AAAAAQAAAAEAAAACAw==',
    'num4': 'AAAAAQAAAAEAAAADAw==',
    'num5': 'AAAAAQAAAAEAAAAEAw==',
    'num6': 'AAAAAQAAAAEAAAAFAw==',
    'num7': 'AAAAAQAAAAEAAAAGAw==',
    'num8': 'AAAAAQAAAAEAAAAHAw==',
    CONF_NAME,
    CONF_FILE_PATH
)
import homeassistant.helpers.config_validation as cv
import traceback
from homeassistant.util import Throttle
_LOGGER = logging.getLogger(__name__)

DATA_KEY = 'samsungctl_remote'


MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=1)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_NAME): cv.string,
    vol.Optional(CONF_FILE_PATH, os.path.join(
            os.path.dirname(__file__), 'samsungctl.conf')): cv.string,
}, extra=vol.ALLOW_EXTRA)


async def async_setup_platform(hass, config, async_add_entities,
                               discovery_info=None):
    """Set up the Xiaomi IR Remote (Chuangmi IR) platform."""

    friendly_name = config.get(CONF_NAME)
    fname = config.get(CONF_FILE_PATH)
    # Create handler
    _LOGGER.info("Initializing %s with url %s", friendly_name, fname)
    # The Chuang Mi IR Remote Controller wants to be re-discovered every
    # 5 minutes. As long as polling is disabled the device should be
    # re-discovered (lazy_discover=False) in front of every command.
예제 #15
0
    vol.Optional(CONF_SLOT, default=1):
    vol.All(int, vol.Range(min=1, max=1000000)),
})

COMMAND_SCHEMA = vol.Schema(
    {vol.Required(CONF_COMMAND): vol.All(cv.ensure_list, [cv.string])})

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Optional(CONF_NAME):
        cv.string,
        vol.Required(CONF_HOST):
        cv.string,
        vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
        vol.All(int, vol.Range(min=0)),
        vol.Optional(CONF_SLOT, default=DEFAULT_SLOT):
        vol.All(int, vol.Range(min=1, max=1000000)),
        vol.Optional(ATTR_HIDDEN, default=True):
        cv.boolean,
        vol.Required(CONF_TOKEN):
        vol.All(str, vol.Length(min=32, max=32)),
        vol.Optional(CONF_COMMANDS, default={}):
        vol.Schema({cv.slug: COMMAND_SCHEMA}),
    },
    extra=vol.ALLOW_EXTRA)


@asyncio.coroutine
def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
    """Set up the Xiaomi IR Remote (Chuangmi IR) platform."""
    from miio import ChuangmiIr, DeviceException
    vol.Optional(CONF_KEYS, default=["NA_1"]):
    vol.All(cv.ensure_list, [cv.slug])
})

COMMAND_SCHEMA = vol.All(cv.ensure_list, [cv.string])

KEYS_SCHEMA = cv.schema_with_slug_keys(COMMAND_SCHEMA)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Required(CONF_NAME):
        cv.slug,
        vol.Required(CONF_HOST):
        cv.string,
        vol.Required(CONF_ID):
        cv.string,
        vol.Required(CONF_KEY):
        cv.string,
        vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
        vol.All(int, vol.Range(min=0)),
        vol.Optional(CONF_REMOTES, default={}):
        cv.schema_with_slug_keys(KEYS_SCHEMA),
    },
    extra=vol.ALLOW_EXTRA)


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the Xiaomi IR Remote (Chuangmi IR) platform."""
    from pygocomma.r9 import (R9, DEFAULT_PORT)
예제 #17
0
    PLATFORM_SCHEMA, DOMAIN, ATTR_DEVICE, ATTR_COMMAND, ATTR_ACTIVITY)
from homeassistant.util import slugify
from homeassistant.config import load_yaml_config_file

REQUIREMENTS = ['pyharmony==1.0.12']

_LOGGER = logging.getLogger(__name__)

DEFAULT_PORT = 5222
DEVICES = []

SERVICE_SYNC = 'harmony_sync'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_NAME): cv.string,
    vol.Required(CONF_HOST): cv.string,
    vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
    vol.Required(ATTR_ACTIVITY, default=None): cv.string,
})

HARMONY_SYNC_SCHEMA = vol.Schema({
    vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
})


def setup_platform(hass, config, add_devices, discovery_info=None):
    """Set up the Harmony platform."""
    import pyharmony
    global DEVICES

    name = config.get(CONF_NAME)
    host = config.get(CONF_HOST)
예제 #18
0
from homeassistant.components.remote import RemoteDevice
from homeassistant.const import DEVICE_DEFAULT_NAME
import voluptuous as vol

import homeassistant.components.remote as remote
import homeassistant.helpers.config_validation as cv
from homeassistant.const import (CONF_NAME, CONF_HOST, CONF_PORT,
                                 ATTR_ENTITY_ID)
from homeassistant.components.remote import (PLATFORM_SCHEMA, DOMAIN,
                                             ATTR_DEVICE, ATTR_ACTIVITY,
                                             ATTR_NUM_REPEATS, ATTR_DELAY_SECS)
import logging
import requests

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_NAME): cv.string,
    vol.Required(CONF_HOST): cv.string,
})
_Log = logging.getLogger(__name__)
COMMANDS = {
    'isalive': '/request?action=isalive',
    'power': '/controller?action=keyevent&keycode=power',
    'enter': '/controller?action=keyevent&keycode=enter',
    'back': '/controller?action=keyevent&keycode=back',
    'home': '/controller?action=keyevent&keycode=home',
    'menu': '/controller?action=keyevent&keycode=menu',
    'right': '/controller?action=keyevent&keycode=right',
    'left': '/controller?action=keyevent&keycode=left',
    'up': '/controller?action=keyevent&keycode=up',
    'down': '/controller?action=keyevent&keycode=down',
    'volumedown': '/controller?action=keyevent&keycode=volumedown',
    'volumeup': '/controller?action=keyevent&keycode=volumeup',
예제 #19
0
    vol.Coerce(float),
})

SERVICE_LEARN_SCHEMA = COMMAND_SCHEMA.extend({
    vol.Required(ATTR_DEVICE):
    vol.All(cv.string, vol.Length(min=1)),
    vol.Optional(ATTR_COMMAND_TYPE, default=COMMAND_TYPE_IR):
    vol.In(COMMAND_TYPES),
    vol.Optional(ATTR_ALTERNATIVE, default=False):
    cv.boolean,
})

SERVICE_DELETE_SCHEMA = COMMAND_SCHEMA.extend(
    {vol.Required(ATTR_DEVICE): vol.All(cv.string, vol.Length(min=1))})

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_HOST): cv.string},
                                         extra=vol.ALLOW_EXTRA)


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Import the device and discontinue platform.

    This is for backward compatibility.
    Do not use this method.
    """
    import_device(hass, config[CONF_HOST])
    _LOGGER.warning(
        "The remote platform is deprecated, please remove it from your configuration"
    )
예제 #20
0
DEFAULT_TIMEOUT = 10
DEFAULT_SLOT = 1

COMMAND_SCHEMA = vol.Schema(
    {vol.Required(CONF_COMMAND): vol.All(cv.ensure_list, [cv.string])})

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Optional(CONF_NAME):
        cv.string,
        vol.Required(CONF_HOST):
        cv.string,
        vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
        cv.positive_int,
        vol.Optional(CONF_SLOT, default=DEFAULT_SLOT):
        vol.All(int, vol.Range(min=1, max=1000000)),
        vol.Required(CONF_TOKEN):
        vol.All(str, vol.Length(min=32, max=32)),
        vol.Optional(CONF_COMMANDS, default={}):
        cv.schema_with_slug_keys(COMMAND_SCHEMA),
    },
    extra=vol.ALLOW_EXTRA,
)


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the Xiaomi IR Remote (Chuangmi IR) platform."""
예제 #21
0
REQUIREMENTS = ['pyharmony==1.0.20']

_LOGGER = logging.getLogger(__name__)

DEFAULT_PORT = 5222
DEVICES = []
CONF_DEVICE_CACHE = 'harmony_device_cache'

SERVICE_SYNC = 'harmony_sync'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(ATTR_ACTIVITY):
    cv.string,
    vol.Required(CONF_NAME):
    cv.string,
    vol.Optional(ATTR_DELAY_SECS, default=DEFAULT_DELAY_SECS):
    vol.Coerce(float),
    vol.Optional(CONF_HOST):
    cv.string,
    vol.Optional(CONF_PORT, default=DEFAULT_PORT):
    cv.port,
})

HARMONY_SYNC_SCHEMA = vol.Schema({
    vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
})


def setup_platform(hass, config, add_devices, discovery_info=None):
    """Set up the Harmony platform."""
    host = None
    activity = None
예제 #22
0
import homeassistant.helpers.config_validation as cv
from homeassistant.util import (Throttle, slugify)
import traceback
REQUIREMENTS = ['async-upnp-client==0.14.8']
_LOGGER = logging.getLogger(__name__)

DATA_KEY = 'upnp_maintvagent2_remote'

DEFAULT_TIMEOUT = 5
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=1)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Required(CONF_NAME):
        cv.string,
        vol.Required(CONF_URL):
        cv.string,
        vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
        vol.All(int, vol.Range(min=0))
    },
    extra=vol.ALLOW_EXTRA)


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the Xiaomi IR Remote (Chuangmi IR) platform."""

    friendly_name = config.get(CONF_NAME)
    url = config.get(CONF_URL)
    # Create handler