From b855177fe6fac518f6cfe48b152a08c881204146 Mon Sep 17 00:00:00 2001
From: "J. Nick Koston" <nick@koston.org>
Date: Sun, 5 Apr 2020 08:47:44 -0500
Subject: [PATCH] Make homekit aware of STATE_STANDBY (#33679)

---
 homeassistant/components/homekit/type_media_players.py | 8 +++++++-
 tests/components/homekit/test_type_media_players.py    | 9 +++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/homeassistant/components/homekit/type_media_players.py b/homeassistant/components/homekit/type_media_players.py
index e07e9cb4749..ec15438352c 100644
--- a/homeassistant/components/homekit/type_media_players.py
+++ b/homeassistant/components/homekit/type_media_players.py
@@ -33,6 +33,7 @@ from homeassistant.const import (
     STATE_OFF,
     STATE_PAUSED,
     STATE_PLAYING,
+    STATE_STANDBY,
     STATE_UNKNOWN,
 )
 
@@ -190,7 +191,12 @@ class MediaPlayer(HomeAccessory):
         current_state = new_state.state
 
         if self.chars[FEATURE_ON_OFF]:
-            hk_state = current_state not in (STATE_OFF, STATE_UNKNOWN, "None")
+            hk_state = current_state not in (
+                STATE_OFF,
+                STATE_UNKNOWN,
+                STATE_STANDBY,
+                "None",
+            )
             if not self._flag[FEATURE_ON_OFF]:
                 _LOGGER.debug(
                     '%s: Set current state for "on_off" to %s', self.entity_id, hk_state
diff --git a/tests/components/homekit/test_type_media_players.py b/tests/components/homekit/test_type_media_players.py
index 366617ee988..1fcc3dde40f 100644
--- a/tests/components/homekit/test_type_media_players.py
+++ b/tests/components/homekit/test_type_media_players.py
@@ -30,6 +30,7 @@ from homeassistant.const import (
     STATE_ON,
     STATE_PAUSED,
     STATE_PLAYING,
+    STATE_STANDBY,
 )
 from homeassistant.core import CoreState
 from homeassistant.helpers import entity_registry
@@ -75,6 +76,14 @@ async def test_media_player_set_state(hass, hk_driver, events):
     await hass.async_block_till_done()
     assert acc.chars[FEATURE_ON_OFF].value is False
 
+    hass.states.async_set(entity_id, STATE_ON)
+    await hass.async_block_till_done()
+    assert acc.chars[FEATURE_ON_OFF].value is True
+
+    hass.states.async_set(entity_id, STATE_STANDBY)
+    await hass.async_block_till_done()
+    assert acc.chars[FEATURE_ON_OFF].value is False
+
     hass.states.async_set(entity_id, STATE_PLAYING)
     await hass.async_block_till_done()
     assert acc.chars[FEATURE_PLAY_PAUSE].value is True
-- 
GitLab