From 0449132c3556108a8c529addae2e52c2eaef5e08 Mon Sep 17 00:00:00 2001 From: Jeff Irion Date: Mon, 5 Aug 2019 09:58:42 -0700 Subject: [PATCH] Bump androidtv to 0.0.21; add 'state_detection_rules' config parameter (#25647) * Bump androidtv to 0.0.19; add 'state_detection_rules' config parameter * Bump androidtv to 0.0.20 * Add detailed config check for 'state_detection_rules' * Linting * Remove unused variable * Bump androidtv to 0.0.21, move config validation into backend package * dict() -> {} Co-Authored-By: Martin Hjelmare --- .../components/androidtv/manifest.json | 2 +- .../components/androidtv/media_player.py | 25 +++++++++++++------ requirements_all.txt | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/androidtv/manifest.json b/homeassistant/components/androidtv/manifest.json index 797ca35a378..1820c5123e4 100644 --- a/homeassistant/components/androidtv/manifest.json +++ b/homeassistant/components/androidtv/manifest.json @@ -3,7 +3,7 @@ "name": "Androidtv", "documentation": "https://www.home-assistant.io/components/androidtv", "requirements": [ - "androidtv==0.0.18" + "androidtv==0.0.21" ], "dependencies": [], "codeowners": ["@JeffLIrion"] diff --git a/homeassistant/components/androidtv/media_player.py b/homeassistant/components/androidtv/media_player.py index 381f0bb7cf1..96d0a2ce00c 100644 --- a/homeassistant/components/androidtv/media_player.py +++ b/homeassistant/components/androidtv/media_player.py @@ -3,6 +3,9 @@ import functools import logging import voluptuous as vol +from androidtv import setup, ha_state_detection_rules_validator +from androidtv.constants import APPS, KEYS + from homeassistant.components.media_player import MediaPlayerDevice, PLATFORM_SCHEMA from homeassistant.components.media_player.const import ( SUPPORT_NEXT_TRACK, @@ -64,6 +67,7 @@ CONF_ADB_SERVER_IP = "adb_server_ip" CONF_ADB_SERVER_PORT = "adb_server_port" CONF_APPS = "apps" CONF_GET_SOURCES = "get_sources" +CONF_STATE_DETECTION_RULES = "state_detection_rules" CONF_TURN_ON_COMMAND = "turn_on_command" CONF_TURN_OFF_COMMAND = "turn_off_command" @@ -99,6 +103,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( vol.Optional(CONF_APPS, default=dict()): vol.Schema({cv.string: cv.string}), vol.Optional(CONF_TURN_ON_COMMAND): cv.string, vol.Optional(CONF_TURN_OFF_COMMAND): cv.string, + vol.Optional(CONF_STATE_DETECTION_RULES, default={}): vol.Schema( + {cv.string: ha_state_detection_rules_validator(vol.Invalid)} + ), } ) @@ -114,8 +121,6 @@ ANDROIDTV_STATES = { def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the Android TV / Fire TV platform.""" - from androidtv import setup - hass.data.setdefault(ANDROIDTV_DOMAIN, {}) host = "{0}:{1}".format(config[CONF_HOST], config[CONF_PORT]) @@ -125,12 +130,19 @@ def setup_platform(hass, config, add_entities, discovery_info=None): adb_log = "using Python ADB implementation " if CONF_ADBKEY in config: aftv = setup( - host, config[CONF_ADBKEY], device_class=config[CONF_DEVICE_CLASS] + host, + config[CONF_ADBKEY], + device_class=config[CONF_DEVICE_CLASS], + state_detection_rules=config[CONF_STATE_DETECTION_RULES], ) adb_log += "with adbkey='{0}'".format(config[CONF_ADBKEY]) else: - aftv = setup(host, device_class=config[CONF_DEVICE_CLASS]) + aftv = setup( + host, + device_class=config[CONF_DEVICE_CLASS], + state_detection_rules=config[CONF_STATE_DETECTION_RULES], + ) adb_log += "without adbkey authentication" else: # Use "pure-python-adb" (communicate with ADB server) @@ -139,6 +151,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): adb_server_ip=config[CONF_ADB_SERVER_IP], adb_server_port=config[CONF_ADB_SERVER_PORT], device_class=config[CONF_DEVICE_CLASS], + state_detection_rules=config[CONF_STATE_DETECTION_RULES], ) adb_log = "using ADB server at {0}:{1}".format( config[CONF_ADB_SERVER_IP], config[CONF_ADB_SERVER_PORT] @@ -251,11 +264,9 @@ class ADBDevice(MediaPlayerDevice): def __init__(self, aftv, name, apps, turn_on_command, turn_off_command): """Initialize the Android TV / Fire TV device.""" - from androidtv.constants import APPS, KEYS - self.aftv = aftv self._name = name - self._apps = APPS + self._apps = APPS.copy() self._apps.update(apps) self._keys = KEYS diff --git a/requirements_all.txt b/requirements_all.txt index 412e15b825b..4062cdc501f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -190,7 +190,7 @@ ambiclimate==0.2.0 amcrest==1.5.3 # homeassistant.components.androidtv -androidtv==0.0.18 +androidtv==0.0.21 # homeassistant.components.anel_pwrctrl anel_pwrctrl-homeassistant==0.0.1.dev2