From 984f02882bb867143cbf732ebfde0dc1ef85911d Mon Sep 17 00:00:00 2001
From: Aidan Timson <contact@timmo.xyz>
Date: Sun, 14 Mar 2021 08:05:47 +0000
Subject: [PATCH] Add HVAC action to Lyric climate platform (#47876)

---
 homeassistant/components/lyric/climate.py | 30 +++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/homeassistant/components/lyric/climate.py b/homeassistant/components/lyric/climate.py
index 41e8fa90b67..6424083158a 100644
--- a/homeassistant/components/lyric/climate.py
+++ b/homeassistant/components/lyric/climate.py
@@ -11,6 +11,10 @@ from homeassistant.components.climate import ClimateEntity
 from homeassistant.components.climate.const import (
     ATTR_TARGET_TEMP_HIGH,
     ATTR_TARGET_TEMP_LOW,
+    CURRENT_HVAC_COOL,
+    CURRENT_HVAC_HEAT,
+    CURRENT_HVAC_IDLE,
+    CURRENT_HVAC_OFF,
     HVAC_MODE_COOL,
     HVAC_MODE_HEAT,
     HVAC_MODE_HEAT_COOL,
@@ -41,6 +45,10 @@ _LOGGER = logging.getLogger(__name__)
 
 SUPPORT_FLAGS = SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE
 
+LYRIC_HVAC_ACTION_OFF = "EquipmentOff"
+LYRIC_HVAC_ACTION_HEAT = "Heat"
+LYRIC_HVAC_ACTION_COOL = "Cool"
+
 LYRIC_HVAC_MODE_OFF = "Off"
 LYRIC_HVAC_MODE_HEAT = "Heat"
 LYRIC_HVAC_MODE_COOL = "Cool"
@@ -60,6 +68,20 @@ HVAC_MODES = {
     LYRIC_HVAC_MODE_HEAT_COOL: HVAC_MODE_HEAT_COOL,
 }
 
+
+HVAC_ACTIONS = {
+    LYRIC_HVAC_ACTION_OFF: CURRENT_HVAC_OFF,
+    LYRIC_HVAC_ACTION_HEAT: CURRENT_HVAC_HEAT,
+    LYRIC_HVAC_ACTION_COOL: CURRENT_HVAC_COOL,
+}
+
+HVAC_MODES = {
+    LYRIC_HVAC_MODE_OFF: HVAC_MODE_OFF,
+    LYRIC_HVAC_MODE_HEAT: HVAC_MODE_HEAT,
+    LYRIC_HVAC_MODE_COOL: HVAC_MODE_COOL,
+    LYRIC_HVAC_MODE_HEAT_COOL: HVAC_MODE_HEAT_COOL,
+}
+
 SERVICE_HOLD_TIME = "set_hold_time"
 ATTR_TIME_PERIOD = "time_period"
 
@@ -152,6 +174,14 @@ class LyricClimate(LyricDeviceEntity, ClimateEntity):
         """Return the current temperature."""
         return self.device.indoorTemperature
 
+    @property
+    def hvac_action(self) -> str:
+        """Return the current hvac action."""
+        action = HVAC_ACTIONS.get(self.device.operationStatus.mode, None)
+        if action == CURRENT_HVAC_OFF and self.hvac_mode != HVAC_MODE_OFF:
+            action = CURRENT_HVAC_IDLE
+        return action
+
     @property
     def hvac_mode(self) -> str:
         """Return the hvac mode."""