Exemplo n.º 1
0
    'weak_dry': '低温烘',
    'rinse_spin': '漂+脱',
    'spin': '单脱水',
    'drumclean': '筒清洁',
    'cottons': '棉织物',
    'down': '羽绒服',
    'wool': '羊毛',
    'shirt': '衬衣',
    'jeans': '牛仔',
    'underwears': '内衣',
}

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_TOKEN):
    vol.All(cv.string, vol.Length(min=32, max=32)),
    vol.Optional(CONF_NAME):
    cv.string,
})


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the light from config."""
    host = config[CONF_HOST]
    token = config[CONF_TOKEN]
    name = config.get(CONF_NAME)
    async_add_entities([VioMiWasher(name, host, token)], True)
Exemplo n.º 2
0
DEFAULT_NAME = "SmartIR Fan"
DEFAULT_DELAY = 0.5

CONF_UNIQUE_ID = 'unique_id'
CONF_DEVICE_CODE = 'device_code'
CONF_CONTROLLER_DATA = "controller_data"
CONF_DELAY = "delay"
CONF_POWER_SENSOR = 'power_sensor'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_UNIQUE_ID):
    cv.string,
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Required(CONF_DEVICE_CODE):
    cv.positive_int,
    vol.Required(CONF_CONTROLLER_DATA):
    cv.string,
    vol.Optional(CONF_DELAY, default=DEFAULT_DELAY):
    cv.string,
    vol.Optional(CONF_POWER_SENSOR):
    cv.entity_id
})


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the IR Fan platform."""
    device_code = config.get(CONF_DEVICE_CODE)
    device_files_subdir = os.path.join('codes', 'fan')
Exemplo n.º 3
0
CONF_MODEL = 'model'
MODEL_AIRPURIFIER_PRO = 'zhimi.airpurifier.v6'
MODEL_AIRPURIFIER_V3 = 'zhimi.airpurifier.v3'
MODEL_AIRHUMIDIFIER_V1 = 'zhimi.humidifier.v1'
MODEL_AIRHUMIDIFIER_CA = 'zhimi.humidifier.ca1'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST): cv.string,
    vol.Required(CONF_TOKEN): vol.All(cv.string, vol.Length(min=32, max=32)),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
    vol.Optional(CONF_MODEL): vol.In(
        ['zhimi.airpurifier.m1',
         'zhimi.airpurifier.m2',
         'zhimi.airpurifier.ma1',
         'zhimi.airpurifier.ma2',
         'zhimi.airpurifier.sa1',
         'zhimi.airpurifier.sa2',
         'zhimi.airpurifier.v1',
         'zhimi.airpurifier.v2',
         'zhimi.airpurifier.v3',
         'zhimi.airpurifier.v5',
         'zhimi.airpurifier.v6',
         'zhimi.humidifier.v1',
         'zhimi.humidifier.ca1']),
})

REQUIREMENTS = ['python-miio==0.3.9', 'construct==2.9.41']

ATTR_MODEL = 'model'

# Air Purifier
Exemplo n.º 4
0
ICON = "mdi:air-purifier"

SPEED_LIST = [
    "Auto Mode",
    "Allergen Mode",
    "Sleep Mode",
    "Speed 1",
    "Speed 2",
    "Speed 3",
    "Turbo",
]

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_PROTOCOL, default=DEFAULT_PROTOCOL):
    cv.string,
})

### Setup Platform ###


def setup_platform(hass, config, add_devices, discovery_info=None):
    add_devices([PhilipsAirPurifierFan(hass, config)])


class PhilipsAirPurifierFan(FanEntity):
    def __init__(self, hass, config):
        self.hass = hass
        self._host = config[CONF_HOST]
Exemplo n.º 5
0
    SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH, FanEntity, SUPPORT_SET_SPEED,
    PLATFORM_SCHEMA)
from homeassistant.components.velbus import DOMAIN
from homeassistant.const import CONF_NAME, CONF_DEVICES, STATE_OFF
import homeassistant.helpers.config_validation as cv

DEPENDENCIES = ['velbus']

_LOGGER = logging.getLogger(__name__)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_DEVICES): vol.All(cv.ensure_list, [
        {
            vol.Required('module'): cv.positive_int,
            vol.Required('channel_low'): cv.positive_int,
            vol.Required('channel_medium'): cv.positive_int,
            vol.Required('channel_high'): cv.positive_int,
            vol.Required(CONF_NAME): cv.string,
        }
    ])
})


def setup_platform(hass, config, add_devices, discovery_info=None):
    """Set up Fans."""
    velbus = hass.data[DOMAIN]
    add_devices(VelbusFan(fan, velbus) for fan in config[CONF_DEVICES])


class VelbusFan(FanEntity):
    """Representation of a Velbus Fan."""
Exemplo n.º 6
0
from homeassistant.components.fan import (
    FanEntity,
    SPEED_OFF,
    SUPPORT_SET_SPEED,
    SUPPORT_PRESET_MODE,
    PLATFORM_SCHEMA,
    DOMAIN,
)
from miio import DeviceException
from miio.device import Device

_LOGGER = logging.getLogger(__name__)

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

AVAILABLE_PROPERTIES = [
    "state",
    "process",
    "cycle",
    "time_remain",
    "child_lock",
    "volume",
]

PRESET_MODES = [
    'pause',
    'start',
Exemplo n.º 7
0
import logging
import voluptuous as vol
from homeassistant.components.fan import (FanEntity, SPEED_OFF, SPEED_LOW,
                                          SPEED_MEDIUM, SPEED_HIGH,
                                          SUPPORT_SET_SPEED, PLATFORM_SCHEMA)
from homeassistant.const import CONF_HOST
import homeassistant.helpers.config_validation as cv

_LOGGER = logging.getLogger(__name__)

# Validation of the user's configuration
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_HOST): cv.string})


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    import quietcool
    host = config.get(CONF_HOST)
    _LOGGER.info(f"Calling get fans for hub: {host}")
    hub = await quietcool.Hub.create(host)
    fans = await hub.get_fans()
    async_add_entities(QuietcoolFan(fan) for fan in fans)


class QuietcoolFan(FanEntity):
    def __init__(self, fan) -> None:
        self._fan = fan

    @property
Exemplo n.º 8
0
    SPEED_LOW,
    SPEED_MEDIUM,
    SPEED_HIGH,
    SUPPORT_SET_SPEED,
    SUPPORT_OSCILLATE,
    SUPPORT_DIRECTION,
)
from homeassistant.const import CONF_ID, CONF_FRIENDLY_NAME, STATE_OFF
import homeassistant.helpers.config_validation as cv

from . import BASE_PLATFORM_SCHEMA, prepare_setup_entities, import_from_yaml
from .pytuya import TuyaDevice

_LOGGER = logging.getLogger(__name__)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(BASE_PLATFORM_SCHEMA)


def flow_schema(dps):
    """Return schema used in config flow."""
    return {}


async def async_setup_entry(hass, config_entry, async_add_entities):
    """Setup a Tuya fan based on a config entry."""
    device, entities_to_setup = prepare_setup_entities(config_entry, DOMAIN)
    if not entities_to_setup:
        return

    fans = []
CONF_TYPE = 'type'

DEVICE_SCHEMA = vol.Schema({
    vol.Required(CONF_C4ID): cv.positive_int,
    vol.Optional(CONF_TYPE, default="fan"): cv.string,
    vol.Optional(CONF_DESC, default=""): cv.string,
    vol.Optional(CONF_LATITUDE, default=0): cv.latitude,
    vol.Optional(CONF_LONGITUDE, default=0): cv.longitude,
    vol.Optional(CONF_DIMMABLE, default=True): cv.boolean,
    vol.Optional(CONF_C4VAR_FAN_SPEED, default=1001): cv.positive_int,
    vol.Optional(CONF_C4VAR_STATUS, default=1000): cv.positive_int,
    vol.Optional(CONF_SCAN_INTERVAL, default=10): vol.All(vol.Coerce(int), vol.Range(min=1))
})

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_DEVICES, default={}): {cv.string: DEVICE_SCHEMA}
})


async def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
    """Set up Control4 fans"""
    _LOGGER.debug('async_setup_platform: %s, %s', str(config), str(discovery_info))

    switch = hass.data[DATA_CONTROL4].control4
    devices = [Control4Fan(device_name, device, switch) for device_name, device in config[CONF_DEVICES].items()]

    async_add_devices(devices, True)


async def async_setup_entry(hass, entry, async_add_devices):
    """Set up Control4 fans"""
Exemplo n.º 10
0
    SPEED_OFF,
    SUPPORT_SET_SPEED,
    FanEntity,
    PLATFORM_SCHEMA,
)

from homeassistant.components.switch import SwitchEntity

_LOGGER = logging.getLogger(__name__)

DOMAIN = "dl_4112_fan"

# Validation of the user's configuration
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required("fans"):
    vol.All(cv.ensure_list, [cv.string]),
})


def setup_platform(hass, config, add_entities, discovery_info=None):
    """Set up the Awesome Light platform."""
    # Assign configuration variables.
    # The configuration check takes care they are present.
    host = config[CONF_HOST]
    fans = config["fans"]

    d = DeviceApi(host)
    try:
        d.ping()
    except APIError as e:
Exemplo n.º 11
0
import homeassistant.helpers.config_validation as cv

import voluptuous as vol
from miio import Device, DeviceException

_LOGGER = logging.getLogger(__name__)

DEFAULT_NAME = "Xiaomi Miio Device"
DATA_KEY = "fan.xiaomi_airpurifierProH"

REQUIREMENTS = ['python-miio>=0.4.8']

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Required(CONF_HOST): cv.string,
        vol.Required(CONF_TOKEN): vol.All(str, vol.Length(min=32, max=32)),
        vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
    },
    extra=vol.ALLOW_EXTRA,
)

# Air Purifier
ATTR_POWER = "power"
ATTR_SPEED = "speed"
ATTR_TEMPERATURE = "temperature"
ATTR_HUMIDITY = "humidity"
ATTR_AIR_QUALITY_INDEX = "aqi"
ATTR_FILTER_HOURS_USED = "filter_hours_used"
ATTR_FILTER_LIFE = "filter_life_remaining"
ATTR_FAVORITE_LEVEL = "favorite_level"
ATTR_BUZZER = "buzzer"
ATTR_CHILD_LOCK = "child_lock"
Exemplo n.º 12
0
    int_states_in_range,
    ranged_value_to_percentage,
    percentage_to_ranged_value,
)

from . import AIRSCAPE_DOMAIN
from .const import fan_to_hass_attr, DEFAULT_TIMEOUT, DEFAULT_MINIMUM

_LOGGER = logging.getLogger(__name__)

# Validation of the user's configuration
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_NAME):
    cv.string,
    vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
    cv.positive_int,
    vol.Optional(CONF_MINIMUM, default=DEFAULT_MINIMUM):
    cv.positive_int,
})


def setup_platform(hass, config, add_entities, discovery_info=None):
    """Set up the Airscape Fan platform."""
    # Setup connection to the fan
    host = config.get(CONF_HOST)
    name = config.get(CONF_NAME)
    minimum = config.get(CONF_MINIMUM)
    timeout = config.get(CONF_TIMEOUT)

    try:
Exemplo n.º 13
0
DEFAULT_NAME = 'Broadlink Fan'
DEFAULT_TIMEOUT = 10
DEFAULT_RETRY = 3
DEFAULT_SPEED_LIST = [STATE_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH]
DEFAULT_SPEED = SPEED_MEDIUM
DEFAULT_DIRECTION = DIRECTION_ANTICLOCKWISE

CUSTOMIZE_SCHEMA = vol.Schema({
    vol.Optional(CONF_SPEEDS): vol.All(cv.ensure_list, [cv.string])
})

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
    vol.Required(CONF_HOST): cv.string,
    vol.Required(CONF_MAC): cv.string,
    vol.Required(CONF_RFCODES_INI): cv.string,
    vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int,
    vol.Optional(CONF_CUSTOMIZE, default={}): CUSTOMIZE_SCHEMA,
    vol.Optional(CONF_DEFAULT_SPEED, default=DEFAULT_SPEED): cv.string,
    vol.Optional(CONF_DEFAULT_DIRECTION, default=DEFAULT_DIRECTION): cv.string
})

# pylint: disable=unused-argument
def setup_platform(hass, config, add_devices_callback, discovery_info=None):
    """Set up the Broadlink-controlled fan platform."""
    name = config.get(CONF_NAME)
    ip_addr = config.get(CONF_HOST)
    mac_addr = binascii.unhexlify(config.get(CONF_MAC).encode().replace(b':', b''))
    speed_list = config.get(CONF_CUSTOMIZE).get(CONF_SPEEDS, []) or DEFAULT_SPEED_LIST
    if not STATE_OFF in speed_list:
        speed_list.insert(0, STATE_OFF)
    default_speed = config.get(CONF_DEFAULT_SPEED)
Exemplo n.º 14
0
MODEL_FAN_SA1 = "zhimi.fan.sa1"
MODEL_FAN_ZA1 = "zhimi.fan.za1"
MODEL_FAN_ZA3 = "zhimi.fan.za3"
MODEL_FAN_ZA4 = "zhimi.fan.za4"
MODEL_FAN_P5 = "dmaker.fan.p5"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_TOKEN):
    vol.All(cv.string, vol.Length(min=32, max=32)),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_MODEL):
    vol.In([
        MODEL_FAN_V2,
        MODEL_FAN_V3,
        MODEL_FAN_SA1,
        MODEL_FAN_ZA1,
        MODEL_FAN_ZA3,
        MODEL_FAN_ZA4,
        MODEL_FAN_P5,
    ]),
    vol.Optional(CONF_RETRIES, default=DEFAULT_RETRIES):
    cv.positive_int,
})

ATTR_MODEL = "model"
ATTR_BRIGHTNESS = "brightness"

ATTR_TEMPERATURE = "temperature"
ATTR_HUMIDITY = "humidity"
Exemplo n.º 15
0
                                          SPEED_MEDIUM, SPEED_HIGH)
from homeassistant.const import (CONF_NAME, STATE_ON)
from homeassistant.helpers.restore_state import RestoreEntity
from homeassistant.util.percentage import ordered_list_item_to_percentage, percentage_to_ordered_list_item
from .const import DEFAULT_NAME, CONF_REMOTE_ENTITY, CONF_COMMAND_ON_OFF, CONF_COMMAND_SPEED, CONF_COMMAND_OSCILLATE, CONF_COMMAND_DEVICE, \
    DEFAULT_DELAY

_LOGGER = logging.getLogger(__name__)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Required(CONF_REMOTE_ENTITY):
    cv.string,
    vol.Required(CONF_COMMAND_DEVICE):
    cv.string,
    vol.Required(CONF_COMMAND_ON_OFF):
    cv.string,
    vol.Required(CONF_COMMAND_SPEED):
    cv.string,
    vol.Required(CONF_COMMAND_OSCILLATE):
    cv.string,
})

FAN_SPEEDS = [SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH]


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the IR Fan platform."""
Exemplo n.º 16
0
MINIMUM_DELAY_BETWEEN_STATE_CHANGES = 15.0

# FIXME: support enabling exhaust-only mode
VENTILATION_NORMAL = "normal"
VENTILATION_SUMMER = "summer"
VENTILATION_EXHAUST = "exhaust-only"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Optional(
            CONF_NAME
        ): cv.string,  # NOTE: we default the name later based on logic
        vol.Optional(CONF_RELAY_W1): cv.string,  # cv.entity_id
        vol.Optional(CONF_RELAY_W2): cv.string,  # cv.entity_id
        vol.Optional(CONF_DEFAULT_SPEED, default=DEFAULT_SPEED): vol.In(SPEED_LIST),
        #        vol.Optional(CONF_CONTROLLER_CODING, default='e2-usa'): cv.string,
        vol.Optional(CONF_CONTROLLER_CODING, default="e2-usa"): vol.In(
            LUNOS_CODING_CONFIG.keys()
        ),
        vol.Optional(CONF_FAN_COUNT): vol.In(
            [1, 2, 3, 4]
        ),  # default is based on how controller is coded (see below)
    }
)

# pylint: disable=unused-argument
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
    """Initialize the LUNOS fans from config."""
    name = config.get(CONF_NAME)
    if not name:
        name = DEFAULT_LUNOS_NAME
Exemplo n.º 17
0
CONF_DEVICE_ID = 'device_id'
CONF_LOCAL_KEY = 'local_key'
CONF_PROTOCOL_VERSION = 'protocol_version'

DEFAULT_ID = '1'
DEFAULT_PROTOCOL_VERSION = 3.3

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_ICON):
    cv.icon,
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_DEVICE_ID):
    cv.string,
    vol.Required(CONF_LOCAL_KEY):
    cv.string,
    vol.Required(CONF_NAME):
    cv.string,
    vol.Required(CONF_FRIENDLY_NAME):
    cv.string,
    vol.Required(CONF_PROTOCOL_VERSION, default=DEFAULT_PROTOCOL_VERSION):
    vol.Coerce(float),
    vol.Optional(CONF_ID, default=DEFAULT_ID):
    cv.string,
})


def setup_platform(hass, config, add_entities, discovery_info=None):
    """Set up of the Tuya switch."""
    from . import pytuya
    fans = []
    localtuyadevice = pytuya.FanDevice(config.get(CONF_DEVICE_ID),
Exemplo n.º 18
0
MODEL_AIRHUMIDIFIER_CA = 'zhimi.humidifier.ca1'

MODEL_AIRFRESH_VA2 = 'zhimi.airfresh.va2'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST): cv.string,
    vol.Required(CONF_TOKEN): vol.All(cv.string, vol.Length(min=32, max=32)),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
    vol.Optional(CONF_MODEL): vol.In(
        [MODEL_AIRPURIFIER_V1,
         MODEL_AIRPURIFIER_V2,
         MODEL_AIRPURIFIER_V3,
         MODEL_AIRPURIFIER_V5,
         MODEL_AIRPURIFIER_PRO,
         MODEL_AIRPURIFIER_PRO_V7,
         MODEL_AIRPURIFIER_M1,
         MODEL_AIRPURIFIER_M2,
         MODEL_AIRPURIFIER_MA1,
         MODEL_AIRPURIFIER_MA2,
         MODEL_AIRPURIFIER_SA1,
         MODEL_AIRPURIFIER_SA2,
         MODEL_AIRPURIFIER_2S,
         MODEL_AIRHUMIDIFIER_V1,
         MODEL_AIRHUMIDIFIER_CA,
         MODEL_AIRFRESH_VA2,
         ]),
})

ATTR_MODEL = 'model'

# Air Purifier
Exemplo n.º 19
0
)

# mypy: allow-untyped-calls, allow-untyped-defs, no-check-untyped-defs

SERVICES = {
    switch.DOMAIN: (switch.SERVICE_TURN_ON, switch.SERVICE_TURN_OFF),
    light.DOMAIN: (light.SERVICE_TURN_ON, light.SERVICE_TURN_OFF)
}

_LOGGER = logging.getLogger(__name__)

DEFAULT_NAME = "Fan Switch"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Required(CONF_ENTITY_ID):
    cv.string,
})


async def async_setup_platform(
    hass: HomeAssistantType,
    config: ConfigType,
    async_add_entities: Callable[[Sequence[Entity], bool], None],
    discovery_info: Optional[DiscoveryInfoType] = None,
) -> None:
    """Initialize Fan Switch platform."""
    async_add_entities(
        [FanSwitch(cast(str, config.get(CONF_NAME)), config[CONF_ENTITY_ID])],
        True)
Exemplo n.º 20
0
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_TOKEN):
    vol.All(cv.string, vol.Length(min=32, max=32)),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_MODEL):
    vol.In([
        MODEL_FAN_V2,
        MODEL_FAN_V3,
        MODEL_FAN_SA1,
        MODEL_FAN_ZA1,
        MODEL_FAN_ZA3,
        MODEL_FAN_ZA4,
        MODEL_FAN_ZA5,
        MODEL_FAN_P5,
        MODEL_FAN_P8,
        MODEL_FAN_P9,
        MODEL_FAN_P10,
        MODEL_FAN_P11,
        MODEL_FAN_P15,
        MODEL_FAN_LESHOW_SS4,
        MODEL_FAN_1C,
    ]),
    vol.Optional(CONF_RETRIES, default=DEFAULT_RETRIES):
    cv.positive_int,
    vol.Optional(CONF_PRESET_MODES_OVERRIDE, default=None):
    vol.Any(None, [cv.string]),
})
Exemplo n.º 21
0
SUPPORTED_FLAGS = {
    FanEntityFeature.SET_SPEED,
    FanEntityFeature.DIRECTION,
    FanEntityFeature.OSCILLATE,
}

DEFAULT_NAME = "Fan Group"

# No limit on parallel updates to enable a group calling another group
PARALLEL_UPDATES = 0

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_ENTITIES):
    cv.entities_domain(DOMAIN),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_UNIQUE_ID):
    cv.string,
})

_LOGGER = logging.getLogger(__name__)


async def async_setup_platform(
    hass: HomeAssistant,
    config: ConfigType,
    async_add_entities: AddEntitiesCallback,
    discovery_info: DiscoveryInfoType | None = None,
) -> None:
    """Set up the Fan Group platform."""
    async_add_entities([
Exemplo n.º 22
0
DEFAULT_NAME = "Generic MIoT fan"
DATA_KEY = "fan.xiaomi_miot_raw"

CONF_UPDATE_INSTANT = "update_instant"
CONF_MAPPING = 'mapping'
CONF_CONTROL_PARAMS = 'params'

ATTR_STATE_VALUE = "state_value"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_TOKEN):
    vol.All(cv.string, vol.Length(min=32, max=32)),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_UPDATE_INSTANT, default=True):
    cv.boolean,
    vol.Required(CONF_MAPPING):
    vol.All(),
    vol.Required(CONF_CONTROL_PARAMS):
    vol.All(),
})

ATTR_MODEL = "model"
ATTR_FIRMWARE_VERSION = "firmware_version"
ATTR_HARDWARE_VERSION = "hardware_version"


# pylint: disable=unused-argument
@asyncio.coroutine
def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
Exemplo n.º 23
0
FULL_SUPPORT = SUPPORT_SET_SPEED | SUPPORT_OSCILLATE | SUPPORT_DIRECTION
LIMITED_SUPPORT = SUPPORT_SET_SPEED

REQUIREMENTS = ['pytuya==7.0.2', 'pyaes==1.6.1']

CONF_DEVICE_ID = 'device_id'
CONF_LOCAL_KEY = 'local_key'

DEFAULT_ID = 1

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_NAME):
    cv.string,
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_DEVICE_ID):
    cv.string,
    vol.Required(CONF_LOCAL_KEY):
    cv.string,
    vol.Optional(CONF_ID, default=DEFAULT_ID):
    cv.string,
})


def setup_platform(hass, config, add_devices, discovery_info=None):
    """Set up of the Tuya switch."""
    import pytuya

    add_devices([
        TuyaLocalFan(
            pytuya.OutletDevice(
                config.get(CONF_DEVICE_ID),
Exemplo n.º 24
0
    ATTR_HARDWARE_VERSION,
    SCHEMA,
    MAP,
    DUMMY_IP,
    DUMMY_TOKEN,
)
import copy

TYPE = 'fan'
_LOGGER = logging.getLogger(__name__)

DEFAULT_NAME = "Generic MIoT " + TYPE
DATA_KEY = TYPE + '.' + DOMAIN

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    SCHEMA
)

SCAN_INTERVAL = timedelta(seconds=10)

NEW_FAN = True if StrictVersion(current_version.replace(".dev","a")) >= StrictVersion("2021.2.9") else False
SUPPORT_PRESET_MODE = 8

# pylint: disable=unused-argument
@asyncio.coroutine
async def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
    await async_generic_setup_platform(
        hass,
        config,
        async_add_devices,
        discovery_info,
Exemplo n.º 25
0
DEFAULT_SPEED_LIST = [STATE_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH]
DEFAULT_SPEED = SPEED_MEDIUM
DEFAULT_DIRECTION = DIRECTION_ANTICLOCKWISE

CUSTOMIZE_SCHEMA = vol.Schema(
    {vol.Optional(CONF_SPEEDS): vol.All(cv.ensure_list, [cv.string])})

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_MAC):
    cv.string,
    vol.Required(CONF_RFCODES_INI):
    cv.string,
    vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
    cv.positive_int,
    vol.Optional(CONF_CUSTOMIZE, default={}):
    CUSTOMIZE_SCHEMA,
    vol.Optional(CONF_DEFAULT_SPEED, default=DEFAULT_SPEED):
    cv.string,
    vol.Optional(CONF_DEFAULT_DIRECTION, default=DEFAULT_DIRECTION):
    cv.string
})


# pylint: disable=unused-argument
def setup_platform(hass, config, add_devices_callback, discovery_info=None):
    """Set up the Broadlink-controlled fan platform."""
    name = config.get(CONF_NAME)
    ip_addr = config.get(CONF_HOST)
Exemplo n.º 26
0
MODEL_AIRFRESH_VA2 = "zhimi.airfresh.va2"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_TOKEN):
    vol.All(cv.string, vol.Length(min=32, max=32)),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_MODEL):
    vol.In([
        MODEL_AIRPURIFIER_V1,
        MODEL_AIRPURIFIER_V2,
        MODEL_AIRPURIFIER_V3,
        MODEL_AIRPURIFIER_V5,
        MODEL_AIRPURIFIER_PRO,
        MODEL_AIRPURIFIER_PRO_V7,
        MODEL_AIRPURIFIER_M1,
        MODEL_AIRPURIFIER_M2,
        MODEL_AIRPURIFIER_MA1,
        MODEL_AIRPURIFIER_MA2,
        MODEL_AIRPURIFIER_SA1,
        MODEL_AIRPURIFIER_SA2,
        MODEL_AIRPURIFIER_2S,
        MODEL_AIRHUMIDIFIER_V1,
        MODEL_AIRHUMIDIFIER_CA,
        MODEL_AIRFRESH_VA2,
    ]),
})

ATTR_MODEL = "model"
Exemplo n.º 27
0
from homeassistant.components.fan import (PLATFORM_SCHEMA, FanEntity, DOMAIN,
                                          SPEED_OFF, SUPPORT_SET_SPEED)
from datetime import datetime
from .const import (
    DOMAIN,
    CONF_ADDRESS,
)
from .snooz_device import SnoozeDevice

_LOGGER = logging.getLogger(__name__)

VALID_SPEEDS = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
SIGNAL_STATE_UPDATED = f"{DOMAIN}.updated"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_NAME): cv.string,
    vol.Required(CONF_ADDRESS): cv.string
})


async def async_setup_platform(hass,
                               config,
                               async_add_entities,
                               discovery_info=None):
    def on_state_change(id: str):
        hass.helpers.dispatcher.async_dispatcher_send(SIGNAL_STATE_UPDATED)

    device = SnoozeDevice(hass.loop, on_state_change)
    address = config[CONF_ADDRESS]
    name = config.get(CONF_NAME)

    @callback
Exemplo n.º 28
0
)
import homeassistant.helpers.config_validation as cv

from dukaonesdk.device import Device, Mode, Speed
from dukaonesdk.dukaclient import DukaClient

from . import DukaEntityComponent
from .const import (ATTR_MANUAL_SPEED, ATTR_MODE, DOMAIN, MODE_IN, MODE_INOUT,
                    MODE_OUT, SPEED_MANUAL)

_LOGGER = logging.getLogger(__name__)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_DEVICE_ID):
    cv.string,
    vol.Optional(CONF_PASSWORD, default="1111"):
    cv.string,
    vol.Optional(CONF_IP_ADDRESS, default="<broadcast>"):
    cv.string,
})

VALID_MODE = vol.Any(vol.All(vol.Coerce(int), vol.Clamp(min=0, max=2)),
                     cv.string)
SET_MODE_SCHEMA = vol.Schema({
    vol.Required(ATTR_ENTITY_ID): cv.entity_ids,
    vol.Required(ATTR_MODE): VALID_MODE
})
RESET_FILTER_TIMER_SCHEMA = vol.Schema(
    {vol.Required(ATTR_ENTITY_ID): cv.entity_ids})
SET_MANUAL_SPEED_SCHEMA = vol.Schema({
    vol.Required(ATTR_ENTITY_ID): cv.entity_ids,
    vol.Required(ATTR_MANUAL_SPEED): int
Exemplo n.º 29
0
CONFIG_PAYLOAD_VENTILATE = 'payload_ventilate'
CONFIG_PAYLOAD_COOL = 'payload_cool'
CONFIG_PAYLOAD_DRY = 'payload_dry'

DEFAULT_SPEED = 'Heat'
SPEED_LIST = ['Heat', 'Ventilate', 'Cool', 'Dry']

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_NAME):
    cv.string,
    vol.Optional(CONFIG_DEFAULT_SPEED, default=DEFAULT_SPEED):
    cv.string,
    vol.Required(CONFIG_TOPIC):
    cv.string,
    vol.Required(CONFIG_PAYLOAD_CLOSE):
    cv.string,
    vol.Required(CONFIG_PAYLOAD_HEAT):
    cv.string,
    vol.Required(CONFIG_PAYLOAD_VENTILATE):
    cv.string,
    vol.Required(CONFIG_PAYLOAD_COOL):
    cv.string,
    vol.Required(CONFIG_PAYLOAD_DRY):
    cv.string,
})


def setup_platform(hass, config, add_devices_callback, discovery_info=None):

    name = config.get(CONF_NAME)
    mqtt_topic = config.get(CONFIG_TOPIC)
    default_speed = config.get(CONFIG_DEFAULT_SPEED)
Exemplo n.º 30
0
    PRESET_MODE_TURBO,
)

_LOGGER = logging.getLogger(__name__)

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST):
    cv.string,
    vol.Required(CONF_MODEL):
    vol.In([
        MODEL_AC1214,
        MODEL_AC2729,
        MODEL_AC2889,
        MODEL_AC2939,
        MODEL_AC2958,
        MODEL_AC3033,
        MODEL_AC3059,
        MODEL_AC3829,
        MODEL_AC3858,
        MODEL_AC4236,
    ]),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME):
    cv.string,
    vol.Optional(CONF_ICON, default=DEFAULT_ICON):
    cv.icon,
})


async def async_setup_platform(
    hass: HomeAssistantType,
    config: ConfigType,
Exemplo n.º 31
0
    SERVICE_SET_VOLUME,
)
from .device import XiaomiMiioEntity

_LOGGER = logging.getLogger(__name__)

DEFAULT_NAME = "Xiaomi Miio Device"
DATA_KEY = "fan.xiaomi_miio"

CONF_MODEL = "model"


PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Required(CONF_HOST): cv.string,
        vol.Required(CONF_TOKEN): vol.All(cv.string, vol.Length(min=32, max=32)),
        vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
        vol.Optional(CONF_MODEL): vol.In(MODELS_FAN),
    }
)

ATTR_MODEL = "model"

# Air Purifier
ATTR_HUMIDITY = "humidity"
ATTR_AIR_QUALITY_INDEX = "aqi"
ATTR_FILTER_HOURS_USED = "filter_hours_used"
ATTR_FILTER_LIFE = "filter_life_remaining"
ATTR_FAVORITE_LEVEL = "favorite_level"
ATTR_BUZZER = "buzzer"
ATTR_CHILD_LOCK = "child_lock"
ATTR_LED = "led"
Exemplo n.º 32
0
from homeassistant.components.fan import (FanEntity, PLATFORM_SCHEMA,
                                          SUPPORT_SET_SPEED, DOMAIN)
from homeassistant.config import load_yaml_config_file
from homeassistant.const import (CONF_NAME, CONF_HOST, CONF_TOKEN,
                                 ATTR_ENTITY_ID, )
from homeassistant.exceptions import PlatformNotReady
import homeassistant.helpers.config_validation as cv

_LOGGER = logging.getLogger(__name__)

DEFAULT_NAME = 'Xiaomi Air Purifier'
PLATFORM = 'xiaomi_miio'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_HOST): cv.string,
    vol.Required(CONF_TOKEN): vol.All(cv.string, vol.Length(min=32, max=32)),
    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
})

REQUIREMENTS = ['python-miio==0.3.1']

ATTR_TEMPERATURE = 'temperature'
ATTR_HUMIDITY = 'humidity'
ATTR_AIR_QUALITY_INDEX = 'aqi'
ATTR_MODE = 'mode'
ATTR_FILTER_HOURS_USED = 'filter_hours_used'
ATTR_FILTER_LIFE = 'filter_life_remaining'
ATTR_FAVORITE_LEVEL = 'favorite_level'
ATTR_BUZZER = 'buzzer'
ATTR_CHILD_LOCK = 'child_lock'
ATTR_LED = 'led'
Exemplo n.º 33
0
                    TUNE_DIRECTION_UP, TUNE_DIRECTION_DOWN, TUNE_DIRECTION_REVERSE)

_LOGGER = logging.getLogger(__name__)
_LOGGER.setLevel(LOG_LEVEL)

SERVICE_FAN_START_SPEED_TUNE = 'fan_start_speed_tune'
SERVICE_FAN_STOP_SPEED_TUNE = 'fan_stop_speed_tune'
SERVICE_FAN_LOAD_PRESET = 'fan_load_preset'
SERVICE_FAN_SAVE_PRESET = 'fan_save_preset'


PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Optional(CONF_BROADCAST, default=False): cv.boolean,
    vol.Optional(CONF_SCAN_INTERVAL, default=SCAN_INTERVAL): cv.time_period,
    vol.Optional(CONF_SPEED_ENABLED, default=False): cv.boolean,
    vol.Optional(CONF_SPEED_COUNT, default=100): cv.positive_int,
    vol.Required(CONF_NAME): cv.string,
    vol.Required(CONF_CHANNEL): cv.positive_int,
    vol.Required(CONF_MODE, default=MODE_NOOLITE_F): vol.In(MODES_NOOLITE),
})


async def async_setup_platform(hass, config, add_devices, discovery_info=None):
    _LOGGER.info(config)
    add_devices([NooLiteFan(config, hass.data[DOMAIN])], should_pull_on_start(config))

    platform = entity_platform.async_get_current_platform()
    platform.async_register_entity_service(SERVICE_FAN_START_SPEED_TUNE, TUNE_SCHEMA, _start_speed_tune)
    platform.async_register_entity_service(SERVICE_FAN_STOP_SPEED_TUNE, {}, _stop_speed_tune)
    platform.async_register_entity_service(SERVICE_FAN_LOAD_PRESET, {}, _load_preset)
    platform.async_register_entity_service(SERVICE_FAN_SAVE_PRESET, {}, _save_preset)