From 1f889c45a3952af07513e05c51043de86f02c499 Mon Sep 17 00:00:00 2001 From: Oleksandr B <7982859+o-borovets@users.noreply.github.com> Date: Tue, 8 Sep 2026 15:36:53 +0300 Subject: [PATCH] Add select platform to Tuya qccdz (EV charger) (#181642) --- homeassistant/components/tuya/select.py | 6 + homeassistant/components/tuya/strings.json | 9 ++ .../tuya/snapshots/test_select.ambr | 126 ++++++++++++++++++ 3 files changed, 141 insertions(+) diff --git a/homeassistant/components/tuya/select.py b/homeassistant/components/tuya/select.py index dc6ff7bef274..43cb4a509eeb 100644 --- a/homeassistant/components/tuya/select.py +++ b/homeassistant/components/tuya/select.py @@ -190,6 +190,12 @@ SELECTS: dict[DeviceCategory, tuple[SelectEntityDescription, ...]] = { translation_key="countdown", ), ), + DeviceCategory.QCCDZ: ( + SelectEntityDescription( + key=DPCode.WORK_MODE, + translation_key="charger_work_mode", + ), + ), DeviceCategory.QN: ( SelectEntityDescription( key=DPCode.LEVEL, diff --git a/homeassistant/components/tuya/strings.json b/homeassistant/components/tuya/strings.json index cacfe96f945b..27f0f9c7adc6 100644 --- a/homeassistant/components/tuya/strings.json +++ b/homeassistant/components/tuya/strings.json @@ -340,6 +340,15 @@ "brightness": { "name": "Brightness" }, + "charger_work_mode": { + "name": "Charging mode", + "state": { + "charge_energy": "Charge by energy", + "charge_now": "Charge now", + "charge_pct": "Charge to percentage", + "charge_schedule": "Scheduled" + } + }, "concentration": { "name": "Concentration" }, diff --git a/tests/components/tuya/snapshots/test_select.ambr b/tests/components/tuya/snapshots/test_select.ambr index acb322b43021..52cc3d2f35cd 100644 --- a/tests/components/tuya/snapshots/test_select.ambr +++ b/tests/components/tuya/snapshots/test_select.ambr @@ -243,6 +243,69 @@ 'state': 'power_on', }) # --- +# name: test_platform_setup_and_discovery[select.ac_charging_control_box_charging_mode-entry] + EntityRegistryEntrySnapshot({ + 'aliases': list([ + None, + ]), + 'area_id': None, + 'capabilities': dict({ + : list([ + 'charge_now', + 'charge_pct', + 'charge_energy', + 'charge_schedule', + ]), + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'select', + 'entity_category': None, + 'entity_id': 'select.ac_charging_control_box_charging_mode', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Charging mode', + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Charging mode', + 'platform': 'tuya', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'charger_work_mode', + 'unique_id': 'tuya.qyy1auihjyoogvb7zdccqwork_mode', + 'unit_of_measurement': None, + }) +# --- +# name: test_platform_setup_and_discovery[select.ac_charging_control_box_charging_mode-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'AC charging control box Charging mode', + : list([ + 'charge_now', + 'charge_pct', + 'charge_energy', + 'charge_schedule', + ]), + }), + 'context': , + 'entity_id': 'select.ac_charging_control_box_charging_mode', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'charge_now', + }) +# --- # name: test_platform_setup_and_discovery[select.aqi_volume-entry] EntityRegistryEntrySnapshot({ 'aliases': list([ @@ -2862,6 +2925,69 @@ 'state': 'last', }) # --- +# name: test_platform_setup_and_discovery[select.ev_charger_charging_mode-entry] + EntityRegistryEntrySnapshot({ + 'aliases': list([ + None, + ]), + 'area_id': None, + 'capabilities': dict({ + : list([ + 'charge_now', + 'charge_pct', + 'charge_energy', + 'charge_schedule', + ]), + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'select', + 'entity_category': None, + 'entity_id': 'select.ev_charger_charging_mode', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Charging mode', + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Charging mode', + 'platform': 'tuya', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'charger_work_mode', + 'unique_id': 'tuya.lr7th3bpx7masmsdzdccqwork_mode', + 'unit_of_measurement': None, + }) +# --- +# name: test_platform_setup_and_discovery[select.ev_charger_charging_mode-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'EV Charger Charging mode', + : list([ + 'charge_now', + 'charge_pct', + 'charge_energy', + 'charge_schedule', + ]), + }), + 'context': , + 'entity_id': 'select.ev_charger_charging_mode', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'charge_now', + }) +# --- # name: test_platform_setup_and_discovery[select.framboisier_indicator_light_mode-entry] EntityRegistryEntrySnapshot({ 'aliases': list([