core/homeassistant/components/remote/__init__.py

151 lines
4.2 KiB
Python
Raw Normal View History

"""Support to interface with universal remote control devices."""
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
from datetime import timedelta
import functools as ft
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
import logging
import voluptuous as vol
from homeassistant.loader import bind_hass
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
from homeassistant.helpers.entity_component import EntityComponent
from homeassistant.helpers.entity import ToggleEntity
import homeassistant.helpers.config_validation as cv
from homeassistant.const import (
2019-07-31 19:25:30 +00:00
STATE_ON,
SERVICE_TURN_ON,
SERVICE_TURN_OFF,
SERVICE_TOGGLE,
)
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
from homeassistant.components import group
from homeassistant.helpers.config_validation import ( # noqa: F401
make_entity_service_schema,
2019-07-31 19:25:30 +00:00
PLATFORM_SCHEMA,
PLATFORM_SCHEMA_BASE,
)
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
# mypy: allow-untyped-defs, no-check-untyped-defs
_LOGGER = logging.getLogger(__name__)
2019-07-31 19:25:30 +00:00
ATTR_ACTIVITY = "activity"
ATTR_COMMAND = "command"
ATTR_DEVICE = "device"
ATTR_NUM_REPEATS = "num_repeats"
ATTR_DELAY_SECS = "delay_secs"
ATTR_HOLD_SECS = "hold_secs"
ATTR_ALTERNATIVE = "alternative"
ATTR_TIMEOUT = "timeout"
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
2019-07-31 19:25:30 +00:00
DOMAIN = "remote"
SCAN_INTERVAL = timedelta(seconds=30)
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
2019-07-31 19:25:30 +00:00
ENTITY_ID_ALL_REMOTES = group.ENTITY_ID_FORMAT.format("all_remotes")
ENTITY_ID_FORMAT = DOMAIN + ".{}"
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
2019-07-31 19:25:30 +00:00
GROUP_NAME_ALL_REMOTES = "all remotes"
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
2019-07-31 19:25:30 +00:00
SERVICE_SEND_COMMAND = "send_command"
SERVICE_LEARN_COMMAND = "learn_command"
SERVICE_SYNC = "sync"
DEFAULT_NUM_REPEATS = 1
DEFAULT_DELAY_SECS = 0.4
DEFAULT_HOLD_SECS = 0
SUPPORT_LEARN_COMMAND = 1
REMOTE_SERVICE_ACTIVITY_SCHEMA = make_entity_service_schema(
2019-07-31 19:25:30 +00:00
{vol.Optional(ATTR_ACTIVITY): cv.string}
)
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
@bind_hass
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
def is_on(hass, entity_id=None):
"""Return if the remote is on based on the statemachine."""
entity_id = entity_id or ENTITY_ID_ALL_REMOTES
return hass.states.is_state(entity_id, STATE_ON)
async def async_setup(hass, config):
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
"""Track states and offer events for remotes."""
component = EntityComponent(
2019-07-31 19:25:30 +00:00
_LOGGER, DOMAIN, hass, SCAN_INTERVAL, GROUP_NAME_ALL_REMOTES
)
await component.async_setup(config)
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
component.async_register_entity_service(
2019-07-31 19:25:30 +00:00
SERVICE_TURN_OFF, REMOTE_SERVICE_ACTIVITY_SCHEMA, "async_turn_off"
)
component.async_register_entity_service(
2019-07-31 19:25:30 +00:00
SERVICE_TURN_ON, REMOTE_SERVICE_ACTIVITY_SCHEMA, "async_turn_on"
)
component.async_register_entity_service(
2019-07-31 19:25:30 +00:00
SERVICE_TOGGLE, REMOTE_SERVICE_ACTIVITY_SCHEMA, "async_toggle"
)
component.async_register_entity_service(
SERVICE_SEND_COMMAND,
{
vol.Required(ATTR_COMMAND): vol.All(cv.ensure_list, [cv.string]),
vol.Optional(ATTR_DEVICE): cv.string,
vol.Optional(
ATTR_NUM_REPEATS, default=DEFAULT_NUM_REPEATS
): cv.positive_int,
vol.Optional(ATTR_DELAY_SECS): vol.Coerce(float),
vol.Optional(ATTR_HOLD_SECS, default=DEFAULT_HOLD_SECS): vol.Coerce(float),
},
"async_send_command",
)
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
component.async_register_entity_service(
2019-07-31 19:25:30 +00:00
SERVICE_LEARN_COMMAND,
{
vol.Optional(ATTR_DEVICE): cv.string,
vol.Optional(ATTR_COMMAND): vol.All(cv.ensure_list, [cv.string]),
vol.Optional(ATTR_ALTERNATIVE): cv.boolean,
vol.Optional(ATTR_TIMEOUT): cv.positive_int,
},
2019-07-31 19:25:30 +00:00
"async_learn_command",
)
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
return True
class RemoteDevice(ToggleEntity):
"""Representation of a remote."""
@property
def supported_features(self):
"""Flag supported features."""
return 0
def send_command(self, command, **kwargs):
Remote Component and Harmony Platform (#4254) * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * Initial Harmony device support, working current activity sensor and switch for each activity TODO: add new device per hub to send device specific activity Changes to be committed: new file: homeassistant/components/harmony.py new file: homeassistant/components/sensor/harmony.py new file: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * ready for beta, I think Changes to be committed: modified: homeassistant/components/harmony.py modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py * Changes to be committed: modified: homeassistant/components/harmony.py new file: homeassistant/components/remote/__init__.py new file: homeassistant/components/remote/harmony.py new file: homeassistant/components/remote/services.yaml modified: homeassistant/components/sensor/harmony.py modified: homeassistant/components/switch/harmony.py Implemented remote component and harmony platform * streamlined harmony support * typo * reworked token generation * delete * readded after rebase * cleaning up style errors * modified .coveragerc * moved import statements * added more debug logging * Added URL encoding of token received from Logitech * Corrected import for python 3 * new pyharmony version * new pyharmony version * remote tests * only write config file if not present or sync service is called * more tests * more tests * bumped pyharmony version to work with new auth * bumped pyharmony version to work with new auth * style corrections * harmony local auth and remote demo platform * style fix * PR refinements and permission issues * forgot a blank line * removed sync test from test_init * removed sync test from test_init * visual indent * send_command test in demo platform
2016-12-01 20:48:08 +00:00
"""Send a command to a device."""
raise NotImplementedError()
def async_send_command(self, command, **kwargs):
"""Send a command to a device.
This method must be run in the event loop and returns a coroutine.
"""
return self.hass.async_add_executor_job(
2019-07-31 19:25:30 +00:00
ft.partial(self.send_command, command, **kwargs)
)
def learn_command(self, **kwargs):
"""Learn a command from a device."""
raise NotImplementedError()
def async_learn_command(self, **kwargs):
"""Learn a command from a device.
This method must be run in the event loop and returns a coroutine.
"""
return self.hass.async_add_executor_job(
2019-07-31 19:25:30 +00:00
ft.partial(self.learn_command, **kwargs)
)