diff --git a/homeassistant/components/bmw_connected_drive/const.py b/homeassistant/components/bmw_connected_drive/const.py
index 49990977f7178a3f6b4373f0d3625135acc1c193..5374b52e684b8a944c41e12bb08f4467ff50235e 100644
--- a/homeassistant/components/bmw_connected_drive/const.py
+++ b/homeassistant/components/bmw_connected_drive/const.py
@@ -28,3 +28,10 @@ SCAN_INTERVALS = {
     "north_america": 600,
     "rest_of_world": 300,
 }
+
+CLIMATE_ACTIVITY_STATE: list[str] = [
+    "cooling",
+    "heating",
+    "inactive",
+    "standby",
+]
diff --git a/homeassistant/components/bmw_connected_drive/icons.json b/homeassistant/components/bmw_connected_drive/icons.json
index a4eb37b369a84d8ecda79bd42e8d776057bf2073..fc30b87ed3fb9bf22deaabc006c32e95fba6c123 100644
--- a/homeassistant/components/bmw_connected_drive/icons.json
+++ b/homeassistant/components/bmw_connected_drive/icons.json
@@ -85,6 +85,9 @@
       },
       "remaining_fuel_percent": {
         "default": "mdi:gas-station"
+      },
+      "climate_status": {
+        "default": "mdi:fan"
       }
     },
     "switch": {
diff --git a/homeassistant/components/bmw_connected_drive/sensor.py b/homeassistant/components/bmw_connected_drive/sensor.py
index e1ed398cfec14c9e04e0c601122e42c79454b757..d3366543c551a810ff374e3670602320aa682c9f 100644
--- a/homeassistant/components/bmw_connected_drive/sensor.py
+++ b/homeassistant/components/bmw_connected_drive/sensor.py
@@ -23,7 +23,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
 from homeassistant.helpers.typing import StateType
 
 from . import BMWBaseEntity
-from .const import DOMAIN, UNIT_MAP
+from .const import CLIMATE_ACTIVITY_STATE, DOMAIN, UNIT_MAP
 from .coordinator import BMWDataUpdateCoordinator
 
 _LOGGER = logging.getLogger(__name__)
@@ -153,6 +153,15 @@ SENSOR_TYPES: list[BMWSensorEntityDescription] = [
         state_class=SensorStateClass.MEASUREMENT,
         is_available=lambda v: v.is_lsc_enabled and v.has_combustion_drivetrain,
     ),
+    BMWSensorEntityDescription(
+        key="activity",
+        translation_key="climate_status",
+        key_class="climate",
+        device_class=SensorDeviceClass.ENUM,
+        options=CLIMATE_ACTIVITY_STATE,
+        value=lambda x, _: x.lower() if x != "UNKNOWN" else None,
+        is_available=lambda v: v.is_remote_climate_stop_enabled,
+    ),
 ]
 
 
diff --git a/homeassistant/components/bmw_connected_drive/strings.json b/homeassistant/components/bmw_connected_drive/strings.json
index 69abd97ddfe1697186d6344a40c59e0bc76bc223..539c281a1a5c8867d455faa00a09a8b44b803094 100644
--- a/homeassistant/components/bmw_connected_drive/strings.json
+++ b/homeassistant/components/bmw_connected_drive/strings.json
@@ -122,6 +122,15 @@
       },
       "remaining_fuel_percent": {
         "name": "Remaining fuel percent"
+      },
+      "climate_status": {
+        "name": "Climate status",
+        "state": {
+          "cooling": "Cooling",
+          "heating": "Heating",
+          "inactive": "Inactive",
+          "standby": "Standby"
+        }
       }
     },
     "switch": {
diff --git a/tests/components/bmw_connected_drive/snapshots/test_sensor.ambr b/tests/components/bmw_connected_drive/snapshots/test_sensor.ambr
index c9dd4e3ddb853b3870d1059743a8cb68f06a7ff2..dcf68622fdcf7f6c2ada1e5d230cce57bbec6d4a 100644
--- a/tests/components/bmw_connected_drive/snapshots/test_sensor.ambr
+++ b/tests/components/bmw_connected_drive/snapshots/test_sensor.ambr
@@ -96,6 +96,25 @@
       'last_updated': <ANY>,
       'state': '340',
     }),
+    StateSnapshot({
+      'attributes': ReadOnlyDict({
+        'attribution': 'Data provided by MyBMW',
+        'device_class': 'enum',
+        'friendly_name': 'iX xDrive50 Climate status',
+        'options': list([
+          'cooling',
+          'heating',
+          'inactive',
+          'standby',
+        ]),
+      }),
+      'context': <ANY>,
+      'entity_id': 'sensor.ix_xdrive50_climate_status',
+      'last_changed': <ANY>,
+      'last_reported': <ANY>,
+      'last_updated': <ANY>,
+      'state': 'inactive',
+    }),
     StateSnapshot({
       'attributes': ReadOnlyDict({
         'attribution': 'Data provided by MyBMW',
@@ -191,6 +210,25 @@
       'last_updated': <ANY>,
       'state': '472',
     }),
+    StateSnapshot({
+      'attributes': ReadOnlyDict({
+        'attribution': 'Data provided by MyBMW',
+        'device_class': 'enum',
+        'friendly_name': 'i4 eDrive40 Climate status',
+        'options': list([
+          'cooling',
+          'heating',
+          'inactive',
+          'standby',
+        ]),
+      }),
+      'context': <ANY>,
+      'entity_id': 'sensor.i4_edrive40_climate_status',
+      'last_changed': <ANY>,
+      'last_reported': <ANY>,
+      'last_updated': <ANY>,
+      'state': 'heating',
+    }),
     StateSnapshot({
       'attributes': ReadOnlyDict({
         'attribution': 'Data provided by MyBMW',
@@ -261,6 +299,25 @@
       'last_updated': <ANY>,
       'state': '80',
     }),
+    StateSnapshot({
+      'attributes': ReadOnlyDict({
+        'attribution': 'Data provided by MyBMW',
+        'device_class': 'enum',
+        'friendly_name': 'M340i xDrive Climate status',
+        'options': list([
+          'cooling',
+          'heating',
+          'inactive',
+          'standby',
+        ]),
+      }),
+      'context': <ANY>,
+      'entity_id': 'sensor.m340i_xdrive_climate_status',
+      'last_changed': <ANY>,
+      'last_reported': <ANY>,
+      'last_updated': <ANY>,
+      'state': 'inactive',
+    }),
     StateSnapshot({
       'attributes': ReadOnlyDict({
         'attribution': 'Data provided by MyBMW',