From cf6eaeced800c2aa3dcf2cd03c5adf241c386bbb Mon Sep 17 00:00:00 2001 From: Brett Adams Date: Fri, 31 Jul 2026 14:28:19 +1000 Subject: [PATCH] Add rear defroster binary sensor to Teslemetry (#177609) --- .../components/teslemetry/binary_sensor.py | 10 +++ .../components/teslemetry/strings.json | 3 + .../snapshots/test_binary_sensor.ambr | 65 +++++++++++++++++++ .../teslemetry/test_binary_sensor.py | 2 + 4 files changed, 80 insertions(+) diff --git a/homeassistant/components/teslemetry/binary_sensor.py b/homeassistant/components/teslemetry/binary_sensor.py index e64af7b6e078..f0d1f671ae37 100644 --- a/homeassistant/components/teslemetry/binary_sensor.py +++ b/homeassistant/components/teslemetry/binary_sensor.py @@ -139,6 +139,16 @@ VEHICLE_DESCRIPTIONS: tuple[TeslemetryBinarySensorEntityDescription, ...] = ( entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), + TeslemetryBinarySensorEntityDescription( + key="climate_state_is_rear_defroster_on", + polling=True, + streaming_listener=lambda vehicle, callback: vehicle.listen_RearDefrostEnabled( + callback + ), + device_class=BinarySensorDeviceClass.HEAT, + entity_category=EntityCategory.DIAGNOSTIC, + entity_registry_enabled_default=False, + ), TeslemetryBinarySensorEntityDescription( key="vehicle_state_dashcam_state", polling=True, diff --git a/homeassistant/components/teslemetry/strings.json b/homeassistant/components/teslemetry/strings.json index 84957296f254..974171c5b47a 100644 --- a/homeassistant/components/teslemetry/strings.json +++ b/homeassistant/components/teslemetry/strings.json @@ -104,6 +104,9 @@ "climate_state_is_preconditioning": { "name": "Preconditioning" }, + "climate_state_is_rear_defroster_on": { + "name": "Rear defroster" + }, "components_grid_services_enabled": { "name": "Grid services enabled" }, diff --git a/tests/components/teslemetry/snapshots/test_binary_sensor.ambr b/tests/components/teslemetry/snapshots/test_binary_sensor.ambr index f96e11d555b6..70d4447cff51 100644 --- a/tests/components/teslemetry/snapshots/test_binary_sensor.ambr +++ b/tests/components/teslemetry/snapshots/test_binary_sensor.ambr @@ -808,6 +808,57 @@ 'state': 'off', }) # --- +# name: test_binary_sensor[binary_sensor.test_rear_defroster-entry] + EntityRegistryEntrySnapshot({ + 'aliases': list([ + None, + ]), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'binary_sensor', + 'entity_category': , + 'entity_id': 'binary_sensor.test_rear_defroster', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Rear defroster', + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Rear defroster', + 'platform': 'teslemetry', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'climate_state_is_rear_defroster_on', + 'unique_id': 'LRW3F7EK4NC700000-climate_state_is_rear_defroster_on', + 'unit_of_measurement': None, + }) +# --- +# name: test_binary_sensor[binary_sensor.test_rear_defroster-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'heat', + : 'Test Rear defroster', + }), + 'context': , + 'entity_id': 'binary_sensor.test_rear_defroster', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'off', + }) +# --- # name: test_binary_sensor[binary_sensor.test_rear_driver_door-entry] EntityRegistryEntrySnapshot({ 'aliases': list([ @@ -1635,6 +1686,20 @@ 'state': 'off', }) # --- +# name: test_binary_sensor_refresh[binary_sensor.test_rear_defroster-statealt] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'heat', + : 'Test Rear defroster', + }), + 'context': , + 'entity_id': 'binary_sensor.test_rear_defroster', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'off', + }) +# --- # name: test_binary_sensor_refresh[binary_sensor.test_rear_driver_door-statealt] StateSnapshot({ 'attributes': ReadOnlyDict({ diff --git a/tests/components/teslemetry/test_binary_sensor.py b/tests/components/teslemetry/test_binary_sensor.py index bf7bea16d935..1f13871be3a7 100644 --- a/tests/components/teslemetry/test_binary_sensor.py +++ b/tests/components/teslemetry/test_binary_sensor.py @@ -86,6 +86,7 @@ async def test_binary_sensors_streaming( } }, Signal.DRIVER_SEAT_BELT: None, + Signal.REAR_DEFROST_ENABLED: True, }, "createdAt": "2024-10-04T10:45:17.537Z", } @@ -104,6 +105,7 @@ async def test_binary_sensors_streaming( assert hass.states.get("binary_sensor.test_front_driver_door").state == "off" assert hass.states.get("binary_sensor.test_front_passenger_door").state == "off" assert hass.states.get("binary_sensor.test_driver_seat_belt").state == "off" + assert hass.states.get("binary_sensor.test_rear_defroster").state == "on" async def test_binary_sensors_connectivity(