diff --git a/homeassistant/components/switchbot_cloud/binary_sensor.py b/homeassistant/components/switchbot_cloud/binary_sensor.py index cfd4e5fc1914..55141e5b832e 100644 --- a/homeassistant/components/switchbot_cloud/binary_sensor.py +++ b/homeassistant/components/switchbot_cloud/binary_sensor.py @@ -114,6 +114,7 @@ BINARY_SENSOR_DESCRIPTIONS_BY_DEVICE_TYPES = { ), "Curtain": (CALIBRATION_DESCRIPTION,), "Curtain3": (CALIBRATION_DESCRIPTION,), + "Curtain4": (CALIBRATION_DESCRIPTION,), "Roller Shade": (CALIBRATION_DESCRIPTION,), "Blind Tilt": (CALIBRATION_DESCRIPTION,), "Garage Door Opener": (DOOR_OPEN_DESCRIPTION,), diff --git a/homeassistant/components/switchbot_cloud/const.py b/homeassistant/components/switchbot_cloud/const.py index 57a519aef327..7f1ae51f1988 100644 --- a/homeassistant/components/switchbot_cloud/const.py +++ b/homeassistant/components/switchbot_cloud/const.py @@ -164,6 +164,9 @@ DEVICE_SUPPORT_MAP: Final[dict[str, SwitchbotCloudDeviceConfig]] = { "Curtain3": SwitchbotCloudDeviceConfig( True, entity_config=(Platform.SENSOR, Platform.BINARY_SENSOR, Platform.COVER) ), + "Curtain4": SwitchbotCloudDeviceConfig( + True, entity_config=(Platform.SENSOR, Platform.BINARY_SENSOR, Platform.COVER) + ), "Roller Shade": SwitchbotCloudDeviceConfig( True, entity_config=(Platform.SENSOR, Platform.BINARY_SENSOR, Platform.COVER) ), diff --git a/homeassistant/components/switchbot_cloud/sensor.py b/homeassistant/components/switchbot_cloud/sensor.py index e7bb6f207faf..376f69eb0ec9 100644 --- a/homeassistant/components/switchbot_cloud/sensor.py +++ b/homeassistant/components/switchbot_cloud/sensor.py @@ -258,6 +258,7 @@ SENSOR_DESCRIPTIONS_BY_DEVICE_TYPES = { ), "Curtain": (BATTERY_DESCRIPTION,), "Curtain3": (BATTERY_DESCRIPTION,), + "Curtain4": (BATTERY_DESCRIPTION,), "Roller Shade": (BATTERY_DESCRIPTION,), "Blind Tilt": (BATTERY_DESCRIPTION,), "Hub 3": ( diff --git a/tests/components/switchbot_cloud/fixtures/sensor_status.json b/tests/components/switchbot_cloud/fixtures/sensor_status.json index 389028792190..d54cf269b572 100644 --- a/tests/components/switchbot_cloud/fixtures/sensor_status.json +++ b/tests/components/switchbot_cloud/fixtures/sensor_status.json @@ -286,6 +286,17 @@ "version": "V6.3", "slidePosition": 50 }, + { + "deviceId": "07E6C4A290F2", + "deviceType": "Curtain4", + "hubDeviceId": "BBBBBBBBBB", + "calibrate": false, + "group": false, + "moving": false, + "battery": 100, + "version": "V6.3", + "slidePosition": 49 + }, { "deviceId": "F6D5B3A190E2", "deviceType": "Roller Shade", diff --git a/tests/components/switchbot_cloud/snapshots/test_binary_sensor.ambr b/tests/components/switchbot_cloud/snapshots/test_binary_sensor.ambr index 891c009be9fb..3f1f8c46d2f2 100644 --- a/tests/components/switchbot_cloud/snapshots/test_binary_sensor.ambr +++ b/tests/components/switchbot_cloud/snapshots/test_binary_sensor.ambr @@ -254,6 +254,57 @@ 'state': 'on', }) # --- +# name: test_coordinator_data[Curtain4][binary_sensor.test_device_name_1_calibration-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_device_name_1_calibration', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Calibration', + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Calibration', + 'platform': 'switchbot_cloud', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'calibration', + 'unique_id': 'test-device-id-1_calibrate', + 'unit_of_measurement': None, + }) +# --- +# name: test_coordinator_data[Curtain4][binary_sensor.test_device_name_1_calibration-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'problem', + : 'test-device-name-1 Calibration', + }), + 'context': , + 'entity_id': 'binary_sensor.test_device_name_1_calibration', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'on', + }) +# --- # name: test_coordinator_data[Curtain][binary_sensor.test_device_name_1_calibration-entry] EntityRegistryEntrySnapshot({ 'aliases': list([ @@ -1886,6 +1937,57 @@ 'state': 'unknown', }) # --- +# name: test_no_coordinator_data[Curtain4][binary_sensor.test_device_name_1_calibration-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_device_name_1_calibration', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Calibration', + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Calibration', + 'platform': 'switchbot_cloud', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'calibration', + 'unique_id': 'test-device-id-1_calibrate', + 'unit_of_measurement': None, + }) +# --- +# name: test_no_coordinator_data[Curtain4][binary_sensor.test_device_name_1_calibration-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'problem', + : 'test-device-name-1 Calibration', + }), + 'context': , + 'entity_id': 'binary_sensor.test_device_name_1_calibration', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unknown', + }) +# --- # name: test_no_coordinator_data[Curtain][binary_sensor.test_device_name_1_calibration-entry] EntityRegistryEntrySnapshot({ 'aliases': list([ diff --git a/tests/components/switchbot_cloud/snapshots/test_sensor.ambr b/tests/components/switchbot_cloud/snapshots/test_sensor.ambr index 89827073ccec..85ddbf7df352 100644 --- a/tests/components/switchbot_cloud/snapshots/test_sensor.ambr +++ b/tests/components/switchbot_cloud/snapshots/test_sensor.ambr @@ -384,6 +384,61 @@ 'state': '100', }) # --- +# name: test_coordinator_data[Curtain4][sensor.test_device_name_1_battery-entry] + EntityRegistryEntrySnapshot({ + 'aliases': list([ + None, + ]), + 'area_id': None, + 'capabilities': dict({ + : , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.test_device_name_1_battery', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Battery', + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Battery', + 'platform': 'switchbot_cloud', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': 'test-device-id-1_battery', + 'unit_of_measurement': , + }) +# --- +# name: test_coordinator_data[Curtain4][sensor.test_device_name_1_battery-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'battery', + : 'test-device-name-1 Battery', + : , + : , + }), + 'context': , + 'entity_id': 'sensor.test_device_name_1_battery', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '100', + }) +# --- # name: test_coordinator_data[Curtain][sensor.test_device_name_1_battery-entry] EntityRegistryEntrySnapshot({ 'aliases': list([ @@ -4097,6 +4152,61 @@ 'state': 'unknown', }) # --- +# name: test_no_coordinator_data[Curtain4][sensor.test_device_name_1_battery-entry] + EntityRegistryEntrySnapshot({ + 'aliases': list([ + None, + ]), + 'area_id': None, + 'capabilities': dict({ + : , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.test_device_name_1_battery', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Battery', + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Battery', + 'platform': 'switchbot_cloud', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': 'test-device-id-1_battery', + 'unit_of_measurement': , + }) +# --- +# name: test_no_coordinator_data[Curtain4][sensor.test_device_name_1_battery-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'battery', + : 'test-device-name-1 Battery', + : , + : , + }), + 'context': , + 'entity_id': 'sensor.test_device_name_1_battery', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unknown', + }) +# --- # name: test_no_coordinator_data[Curtain][sensor.test_device_name_1_battery-entry] EntityRegistryEntrySnapshot({ 'aliases': list([