Support all reported preset modes in Smartthings climate (#148056)

Co-authored-by: abmantis <amfcalt@gmail.com>
pull/152807/head^2
Jan Čermák 2025-09-23 12:56:27 +02:00 committed by GitHub
parent 0f8e700965
commit 90bfadda9b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 1880 additions and 16 deletions

View File

@ -101,7 +101,6 @@ HA_MODE_TO_HEAT_PUMP_AC_MODE = {v: k for k, v in HEAT_PUMP_AC_MODE_TO_HA.items()
WIND = "wind"
FAN = "fan"
WINDFREE = "windFree"
_LOGGER = logging.getLogger(__name__)
@ -577,14 +576,15 @@ class SmartThingsAirConditioner(SmartThingsEntity, ClimateEntity):
@property
def preset_mode(self) -> str | None:
"""Return the preset mode."""
"""Return the current preset mode."""
if self.supports_capability(Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE):
mode = self.get_attribute_value(
Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE,
Attribute.AC_OPTIONAL_MODE,
)
if mode == WINDFREE:
return WINDFREE
# Return the mode if it is in the supported modes
if self._attr_preset_modes and mode in self._attr_preset_modes:
return mode
return None
def _determine_preset_modes(self) -> list[str] | None:
@ -594,12 +594,12 @@ class SmartThingsAirConditioner(SmartThingsEntity, ClimateEntity):
Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE,
Attribute.SUPPORTED_AC_OPTIONAL_MODE,
)
if supported_modes and WINDFREE in supported_modes:
return [WINDFREE]
if supported_modes:
return supported_modes
return None
async def async_set_preset_mode(self, preset_mode: str) -> None:
"""Set special modes (currently only windFree is supported)."""
"""Set optional AC modes."""
await self.execute_device_command(
Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE,
Command.SET_AC_OPTIONAL_MODE,

View File

@ -99,6 +99,7 @@ def mock_smartthings() -> Generator[AsyncMock]:
"aq_sensor_3_ikea",
"da_ac_airsensor_01001",
"da_ac_rac_000001",
"da_ac_rac_000002",
"da_ac_rac_000003",
"da_ac_rac_100001",
"da_ac_rac_01001",

View File

@ -0,0 +1,886 @@
{
"components": {
"1": {
"relativeHumidityMeasurement": {
"humidity": {
"value": 0,
"unit": "%",
"timestamp": "2021-04-06T16:43:35.291Z"
}
},
"custom.airConditionerOdorController": {
"airConditionerOdorControllerProgress": {
"value": null,
"timestamp": "2021-04-08T04:11:38.269Z"
},
"airConditionerOdorControllerState": {
"value": null,
"timestamp": "2021-04-08T04:11:38.269Z"
}
},
"custom.thermostatSetpointControl": {
"minimumSetpoint": {
"value": null,
"timestamp": "2021-04-08T04:04:19.901Z"
},
"maximumSetpoint": {
"value": null,
"timestamp": "2021-04-08T04:04:19.901Z"
}
},
"airConditionerMode": {
"availableAcModes": {
"value": null
},
"supportedAcModes": {
"value": null,
"timestamp": "2021-04-08T03:50:50.930Z"
},
"airConditionerMode": {
"value": null,
"timestamp": "2021-04-08T03:50:50.930Z"
}
},
"custom.spiMode": {
"spiMode": {
"value": null,
"timestamp": "2021-04-06T16:57:57.686Z"
}
},
"airQualitySensor": {
"airQuality": {
"value": null,
"unit": "CAQI",
"timestamp": "2021-04-06T16:57:57.602Z"
}
},
"custom.airConditionerOptionalMode": {
"supportedAcOptionalMode": {
"value": null,
"timestamp": "2021-04-06T16:57:57.659Z"
},
"acOptionalMode": {
"value": null,
"timestamp": "2021-04-06T16:57:57.659Z"
}
},
"switch": {
"switch": {
"value": null,
"timestamp": "2021-04-06T16:44:10.518Z"
}
},
"custom.airConditionerTropicalNightMode": {
"acTropicalNightModeLevel": {
"value": null,
"timestamp": "2021-04-06T16:44:10.498Z"
}
},
"ocf": {
"st": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mndt": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mnfv": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mnhw": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"di": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mnsl": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"dmv": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"n": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mnmo": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"vid": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mnmn": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mnml": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mnpv": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"mnos": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"pi": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
},
"icv": {
"value": null,
"timestamp": "2021-04-06T16:44:10.472Z"
}
},
"airConditionerFanMode": {
"fanMode": {
"value": null,
"timestamp": "2021-04-06T16:44:10.381Z"
},
"supportedAcFanModes": {
"value": ["auto", "low", "medium", "high", "turbo"],
"timestamp": "2024-09-10T10:26:28.605Z"
},
"availableAcFanModes": {
"value": null
}
},
"custom.disabledCapabilities": {
"disabledCapabilities": {
"value": [
"remoteControlStatus",
"airQualitySensor",
"dustSensor",
"odorSensor",
"veryFineDustSensor",
"custom.dustFilter",
"custom.deodorFilter",
"custom.deviceReportStateConfiguration",
"audioVolume",
"custom.autoCleaningMode",
"custom.airConditionerTropicalNightMode",
"custom.airConditionerOdorController",
"demandResponseLoadControl",
"relativeHumidityMeasurement"
],
"timestamp": "2024-09-10T10:26:28.605Z"
}
},
"fanOscillationMode": {
"supportedFanOscillationModes": {
"value": null,
"timestamp": "2021-04-06T16:44:10.325Z"
},
"availableFanOscillationModes": {
"value": null
},
"fanOscillationMode": {
"value": "fixed",
"timestamp": "2025-02-08T00:44:53.247Z"
}
},
"temperatureMeasurement": {
"temperatureRange": {
"value": null
},
"temperature": {
"value": null,
"timestamp": "2021-04-06T16:44:10.373Z"
}
},
"dustSensor": {
"dustLevel": {
"value": null,
"unit": "\u03bcg/m^3",
"timestamp": "2021-04-06T16:44:10.122Z"
},
"fineDustLevel": {
"value": null,
"unit": "\u03bcg/m^3",
"timestamp": "2021-04-06T16:44:10.122Z"
}
},
"custom.deviceReportStateConfiguration": {
"reportStateRealtimePeriod": {
"value": null,
"timestamp": "2021-04-06T16:44:09.800Z"
},
"reportStateRealtime": {
"value": null,
"timestamp": "2021-04-06T16:44:09.800Z"
},
"reportStatePeriod": {
"value": null,
"timestamp": "2021-04-06T16:44:09.800Z"
}
},
"thermostatCoolingSetpoint": {
"coolingSetpointRange": {
"value": null
},
"coolingSetpoint": {
"value": null,
"timestamp": "2021-04-06T16:43:59.136Z"
}
},
"demandResponseLoadControl": {
"drlcStatus": {
"value": null,
"timestamp": "2021-04-06T16:43:54.748Z"
}
},
"audioVolume": {
"volume": {
"value": null,
"unit": "%",
"timestamp": "2021-04-06T16:43:53.541Z"
}
},
"powerConsumptionReport": {
"powerConsumption": {
"value": null,
"timestamp": "2021-04-06T16:43:53.364Z"
}
},
"custom.autoCleaningMode": {
"supportedAutoCleaningModes": {
"value": null
},
"timedCleanDuration": {
"value": null
},
"operatingState": {
"value": null
},
"timedCleanDurationRange": {
"value": null
},
"supportedOperatingStates": {
"value": null
},
"progress": {
"value": null
},
"autoCleaningMode": {
"value": null,
"timestamp": "2021-04-06T16:43:53.344Z"
}
},
"custom.dustFilter": {
"dustFilterUsageStep": {
"value": null,
"timestamp": "2021-04-06T16:43:39.145Z"
},
"dustFilterUsage": {
"value": null,
"timestamp": "2021-04-06T16:43:39.145Z"
},
"dustFilterLastResetDate": {
"value": null,
"timestamp": "2021-04-06T16:43:39.145Z"
},
"dustFilterStatus": {
"value": null,
"timestamp": "2021-04-06T16:43:39.145Z"
},
"dustFilterCapacity": {
"value": null,
"timestamp": "2021-04-06T16:43:39.145Z"
},
"dustFilterResetType": {
"value": null,
"timestamp": "2021-04-06T16:43:39.145Z"
}
},
"odorSensor": {
"odorLevel": {
"value": null,
"timestamp": "2021-04-06T16:43:38.992Z"
}
},
"remoteControlStatus": {
"remoteControlEnabled": {
"value": null,
"timestamp": "2021-04-06T16:43:39.097Z"
}
},
"custom.deodorFilter": {
"deodorFilterCapacity": {
"value": null,
"timestamp": "2021-04-06T16:43:39.118Z"
},
"deodorFilterLastResetDate": {
"value": null,
"timestamp": "2021-04-06T16:43:39.118Z"
},
"deodorFilterStatus": {
"value": null,
"timestamp": "2021-04-06T16:43:39.118Z"
},
"deodorFilterResetType": {
"value": null,
"timestamp": "2021-04-06T16:43:39.118Z"
},
"deodorFilterUsage": {
"value": null,
"timestamp": "2021-04-06T16:43:39.118Z"
},
"deodorFilterUsageStep": {
"value": null,
"timestamp": "2021-04-06T16:43:39.118Z"
}
},
"custom.energyType": {
"energyType": {
"value": null,
"timestamp": "2021-04-06T16:43:38.843Z"
},
"energySavingSupport": {
"value": null
},
"drMaxDuration": {
"value": null
},
"energySavingLevel": {
"value": null
},
"energySavingInfo": {
"value": null
},
"supportedEnergySavingLevels": {
"value": null
},
"energySavingOperation": {
"value": null
},
"notificationTemplateID": {
"value": null
},
"energySavingOperationSupport": {
"value": null
}
},
"veryFineDustSensor": {
"veryFineDustLevel": {
"value": null,
"unit": "\u03bcg/m^3",
"timestamp": "2021-04-06T16:43:38.529Z"
}
}
},
"main": {
"relativeHumidityMeasurement": {
"humidity": {
"value": 60,
"unit": "%",
"timestamp": "2024-12-30T13:10:23.759Z"
}
},
"custom.airConditionerOdorController": {
"airConditionerOdorControllerProgress": {
"value": null,
"timestamp": "2021-04-06T16:43:37.555Z"
},
"airConditionerOdorControllerState": {
"value": null,
"timestamp": "2021-04-06T16:43:37.555Z"
}
},
"custom.thermostatSetpointControl": {
"minimumSetpoint": {
"value": 16,
"unit": "C",
"timestamp": "2025-01-08T06:30:58.307Z"
},
"maximumSetpoint": {
"value": 30,
"unit": "C",
"timestamp": "2024-09-10T10:26:28.781Z"
}
},
"airConditionerMode": {
"availableAcModes": {
"value": null
},
"supportedAcModes": {
"value": ["cool", "dry", "wind", "auto", "heat"],
"timestamp": "2024-09-10T10:26:28.781Z"
},
"airConditionerMode": {
"value": "heat",
"timestamp": "2025-02-09T09:14:39.642Z"
}
},
"custom.spiMode": {
"spiMode": {
"value": "off",
"timestamp": "2025-02-09T09:14:39.642Z"
}
},
"samsungce.dongleSoftwareInstallation": {
"status": {
"value": "completed",
"timestamp": "2021-12-29T01:36:51.289Z"
}
},
"samsungce.deviceIdentification": {
"micomAssayCode": {
"value": null
},
"modelName": {
"value": null
},
"serialNumber": {
"value": null
},
"serialNumberExtra": {
"value": null
},
"modelClassificationCode": {
"value": null
},
"description": {
"value": null
},
"releaseYear": {
"value": null
},
"binaryId": {
"value": "ARTIK051_KRAC_18K",
"timestamp": "2025-02-08T00:44:53.855Z"
}
},
"airQualitySensor": {
"airQuality": {
"value": null,
"unit": "CAQI",
"timestamp": "2021-04-06T16:43:37.208Z"
}
},
"custom.airConditionerOptionalMode": {
"supportedAcOptionalMode": {
"value": [
"off",
"sleep",
"quiet",
"speed",
"windFree",
"windFreeSleep"
],
"timestamp": "2024-09-10T10:26:28.781Z"
},
"acOptionalMode": {
"value": "windFree",
"timestamp": "2025-02-09T09:14:39.642Z"
}
},
"switch": {
"switch": {
"value": "off",
"timestamp": "2025-02-09T16:37:54.072Z"
}
},
"custom.airConditionerTropicalNightMode": {
"acTropicalNightModeLevel": {
"value": 0,
"timestamp": "2025-02-09T09:14:39.642Z"
}
},
"ocf": {
"st": {
"value": null,
"timestamp": "2021-04-06T16:43:35.933Z"
},
"mndt": {
"value": null,
"timestamp": "2021-04-06T16:43:35.912Z"
},
"mnfv": {
"value": "0.1.0",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"mnhw": {
"value": "1.0",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"di": {
"value": "13549124-3320-4fda-8e5c-3f363e043034",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"mnsl": {
"value": null,
"timestamp": "2021-04-06T16:43:35.803Z"
},
"dmv": {
"value": "res.1.1.0,sh.1.1.0",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"n": {
"value": "[room a/c] Samsung",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"mnmo": {
"value": "ARTIK051_KRAC_18K|10193441|60010132001111110200000000000000",
"timestamp": "2024-09-10T10:26:28.781Z"
},
"vid": {
"value": "DA-AC-RAC-000001",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"mnmn": {
"value": "Samsung Electronics",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"mnml": {
"value": "http://www.samsung.com",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"mnpv": {
"value": "0G3MPDCKA00010E",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"mnos": {
"value": "TizenRT2.0",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"pi": {
"value": "13549124-3320-4fda-8e5c-3f363e043034",
"timestamp": "2024-09-10T10:26:28.552Z"
},
"icv": {
"value": "core.1.1.0",
"timestamp": "2024-09-10T10:26:28.552Z"
}
},
"airConditionerFanMode": {
"fanMode": {
"value": "low",
"timestamp": "2025-02-09T09:14:39.249Z"
},
"supportedAcFanModes": {
"value": ["auto", "low", "medium", "high", "turbo"],
"timestamp": "2025-02-09T09:14:39.249Z"
},
"availableAcFanModes": {
"value": null
}
},
"custom.disabledCapabilities": {
"disabledCapabilities": {
"value": [
"remoteControlStatus",
"airQualitySensor",
"dustSensor",
"veryFineDustSensor",
"custom.dustFilter",
"custom.deodorFilter",
"custom.deviceReportStateConfiguration",
"samsungce.dongleSoftwareInstallation",
"demandResponseLoadControl",
"custom.airConditionerOdorController"
],
"timestamp": "2025-02-09T09:14:39.642Z"
}
},
"samsungce.driverVersion": {
"versionNumber": {
"value": 24070101,
"timestamp": "2024-09-04T06:35:09.557Z"
}
},
"fanOscillationMode": {
"supportedFanOscillationModes": {
"value": null,
"timestamp": "2021-04-06T16:43:35.782Z"
},
"availableFanOscillationModes": {
"value": null
},
"fanOscillationMode": {
"value": "fixed",
"timestamp": "2025-02-09T09:14:39.249Z"
}
},
"temperatureMeasurement": {
"temperatureRange": {
"value": null
},
"temperature": {
"value": 25,
"unit": "C",
"timestamp": "2025-02-09T16:33:29.164Z"
}
},
"dustSensor": {
"dustLevel": {
"value": null,
"unit": "\u03bcg/m^3",
"timestamp": "2021-04-06T16:43:35.665Z"
},
"fineDustLevel": {
"value": null,
"unit": "\u03bcg/m^3",
"timestamp": "2021-04-06T16:43:35.665Z"
}
},
"custom.deviceReportStateConfiguration": {
"reportStateRealtimePeriod": {
"value": null,
"timestamp": "2021-04-06T16:43:35.643Z"
},
"reportStateRealtime": {
"value": null,
"timestamp": "2021-04-06T16:43:35.643Z"
},
"reportStatePeriod": {
"value": null,
"timestamp": "2021-04-06T16:43:35.643Z"
}
},
"thermostatCoolingSetpoint": {
"coolingSetpointRange": {
"value": null
},
"coolingSetpoint": {
"value": 25,
"unit": "C",
"timestamp": "2025-02-09T09:15:11.608Z"
}
},
"custom.disabledComponents": {
"disabledComponents": {
"value": ["1"],
"timestamp": "2025-02-09T09:14:39.642Z"
}
},
"demandResponseLoadControl": {
"drlcStatus": {
"value": {
"drlcType": 1,
"drlcLevel": -1,
"start": "1970-01-01T00:00:00Z",
"duration": 0,
"override": false
},
"timestamp": "2024-09-10T10:26:28.781Z"
}
},
"audioVolume": {
"volume": {
"value": 100,
"unit": "%",
"timestamp": "2025-02-09T09:14:39.642Z"
}
},
"powerConsumptionReport": {
"powerConsumption": {
"value": {
"energy": 2247300,
"deltaEnergy": 400,
"power": 0,
"powerEnergy": 0.0,
"persistedEnergy": 2247300,
"energySaved": 0,
"start": "2025-02-09T15:45:29Z",
"end": "2025-02-09T16:15:33Z"
},
"timestamp": "2025-02-09T16:15:33.639Z"
}
},
"custom.autoCleaningMode": {
"supportedAutoCleaningModes": {
"value": null
},
"timedCleanDuration": {
"value": null
},
"operatingState": {
"value": null
},
"timedCleanDurationRange": {
"value": null
},
"supportedOperatingStates": {
"value": null
},
"progress": {
"value": null
},
"autoCleaningMode": {
"value": "off",
"timestamp": "2025-02-09T09:14:39.642Z"
}
},
"refresh": {},
"execute": {
"data": {
"value": {
"payload": {
"rt": ["oic.r.temperature"],
"if": ["oic.if.baseline", "oic.if.a"],
"range": [16.0, 30.0],
"units": "C",
"temperature": 22.0
}
},
"data": {
"href": "/temperature/desired/0"
},
"timestamp": "2023-07-19T03:07:43.270Z"
}
},
"samsungce.selfCheck": {
"result": {
"value": null
},
"supportedActions": {
"value": ["start"],
"timestamp": "2024-09-04T06:35:09.557Z"
},
"progress": {
"value": null
},
"errors": {
"value": [],
"timestamp": "2025-02-08T00:44:53.349Z"
},
"status": {
"value": "ready",
"timestamp": "2025-02-08T00:44:53.549Z"
}
},
"custom.dustFilter": {
"dustFilterUsageStep": {
"value": null,
"timestamp": "2021-04-06T16:43:35.527Z"
},
"dustFilterUsage": {
"value": null,
"timestamp": "2021-04-06T16:43:35.527Z"
},
"dustFilterLastResetDate": {
"value": null,
"timestamp": "2021-04-06T16:43:35.527Z"
},
"dustFilterStatus": {
"value": null,
"timestamp": "2021-04-06T16:43:35.527Z"
},
"dustFilterCapacity": {
"value": null,
"timestamp": "2021-04-06T16:43:35.527Z"
},
"dustFilterResetType": {
"value": null,
"timestamp": "2021-04-06T16:43:35.527Z"
}
},
"remoteControlStatus": {
"remoteControlEnabled": {
"value": null,
"timestamp": "2021-04-06T16:43:35.379Z"
}
},
"custom.deodorFilter": {
"deodorFilterCapacity": {
"value": null,
"timestamp": "2021-04-06T16:43:35.502Z"
},
"deodorFilterLastResetDate": {
"value": null,
"timestamp": "2021-04-06T16:43:35.502Z"
},
"deodorFilterStatus": {
"value": null,
"timestamp": "2021-04-06T16:43:35.502Z"
},
"deodorFilterResetType": {
"value": null,
"timestamp": "2021-04-06T16:43:35.502Z"
},
"deodorFilterUsage": {
"value": null,
"timestamp": "2021-04-06T16:43:35.502Z"
},
"deodorFilterUsageStep": {
"value": null,
"timestamp": "2021-04-06T16:43:35.502Z"
}
},
"custom.energyType": {
"energyType": {
"value": "1.0",
"timestamp": "2024-09-10T10:26:28.781Z"
},
"energySavingSupport": {
"value": false,
"timestamp": "2021-12-29T07:29:17.526Z"
},
"drMaxDuration": {
"value": null
},
"energySavingLevel": {
"value": null
},
"energySavingInfo": {
"value": null
},
"supportedEnergySavingLevels": {
"value": null
},
"energySavingOperation": {
"value": null
},
"notificationTemplateID": {
"value": null
},
"energySavingOperationSupport": {
"value": null
}
},
"samsungce.softwareUpdate": {
"targetModule": {
"value": null
},
"otnDUID": {
"value": "43CEZFTFFL7Z2",
"timestamp": "2025-02-08T00:44:53.855Z"
},
"lastUpdatedDate": {
"value": null
},
"availableModules": {
"value": [],
"timestamp": "2025-02-08T00:44:53.855Z"
},
"newVersionAvailable": {
"value": false,
"timestamp": "2025-02-08T00:44:53.855Z"
},
"operatingState": {
"value": null
},
"progress": {
"value": null
}
},
"veryFineDustSensor": {
"veryFineDustLevel": {
"value": null,
"unit": "\u03bcg/m^3",
"timestamp": "2021-04-06T16:43:35.363Z"
}
}
}
}
}

View File

@ -0,0 +1,303 @@
{
"items": [
{
"deviceId": "13549124-3320-4fda-8e5c-3f363e043034",
"name": "[room a/c] Samsung",
"label": "AC Office Granit",
"manufacturerName": "Samsung Electronics",
"presentationId": "DA-AC-RAC-000001",
"deviceManufacturerCode": "Samsung Electronics",
"locationId": "58d3fd7c-c512-4da3-b500-ef269382756c",
"ownerId": "f9a28d7c-1ed5-d9e9-a81c-18971ec081db",
"roomId": "7715151d-0314-457a-a82c-5ce48900e065",
"deviceTypeName": "Samsung OCF Air Conditioner",
"components": [
{
"id": "main",
"label": "main",
"capabilities": [
{
"id": "ocf",
"version": 1
},
{
"id": "switch",
"version": 1
},
{
"id": "airConditionerMode",
"version": 1
},
{
"id": "airConditionerFanMode",
"version": 1
},
{
"id": "fanOscillationMode",
"version": 1
},
{
"id": "airQualitySensor",
"version": 1
},
{
"id": "temperatureMeasurement",
"version": 1
},
{
"id": "thermostatCoolingSetpoint",
"version": 1
},
{
"id": "relativeHumidityMeasurement",
"version": 1
},
{
"id": "dustSensor",
"version": 1
},
{
"id": "veryFineDustSensor",
"version": 1
},
{
"id": "audioVolume",
"version": 1
},
{
"id": "remoteControlStatus",
"version": 1
},
{
"id": "powerConsumptionReport",
"version": 1
},
{
"id": "demandResponseLoadControl",
"version": 1
},
{
"id": "refresh",
"version": 1
},
{
"id": "execute",
"version": 1
},
{
"id": "custom.spiMode",
"version": 1
},
{
"id": "custom.thermostatSetpointControl",
"version": 1
},
{
"id": "custom.airConditionerOptionalMode",
"version": 1
},
{
"id": "custom.airConditionerTropicalNightMode",
"version": 1
},
{
"id": "custom.autoCleaningMode",
"version": 1
},
{
"id": "custom.deviceReportStateConfiguration",
"version": 1
},
{
"id": "custom.energyType",
"version": 1
},
{
"id": "custom.dustFilter",
"version": 1
},
{
"id": "custom.airConditionerOdorController",
"version": 1
},
{
"id": "custom.deodorFilter",
"version": 1
},
{
"id": "custom.disabledComponents",
"version": 1
},
{
"id": "custom.disabledCapabilities",
"version": 1
},
{
"id": "samsungce.deviceIdentification",
"version": 1
},
{
"id": "samsungce.dongleSoftwareInstallation",
"version": 1
},
{
"id": "samsungce.softwareUpdate",
"version": 1
},
{
"id": "samsungce.selfCheck",
"version": 1
},
{
"id": "samsungce.driverVersion",
"version": 1
}
],
"categories": [
{
"name": "AirConditioner",
"categoryType": "manufacturer"
}
]
},
{
"id": "1",
"label": "1",
"capabilities": [
{
"id": "switch",
"version": 1
},
{
"id": "airConditionerMode",
"version": 1
},
{
"id": "airConditionerFanMode",
"version": 1
},
{
"id": "fanOscillationMode",
"version": 1
},
{
"id": "temperatureMeasurement",
"version": 1
},
{
"id": "thermostatCoolingSetpoint",
"version": 1
},
{
"id": "relativeHumidityMeasurement",
"version": 1
},
{
"id": "airQualitySensor",
"version": 1
},
{
"id": "dustSensor",
"version": 1
},
{
"id": "veryFineDustSensor",
"version": 1
},
{
"id": "odorSensor",
"version": 1
},
{
"id": "remoteControlStatus",
"version": 1
},
{
"id": "audioVolume",
"version": 1
},
{
"id": "custom.thermostatSetpointControl",
"version": 1
},
{
"id": "custom.autoCleaningMode",
"version": 1
},
{
"id": "custom.airConditionerTropicalNightMode",
"version": 1
},
{
"id": "custom.disabledCapabilities",
"version": 1
},
{
"id": "ocf",
"version": 1
},
{
"id": "powerConsumptionReport",
"version": 1
},
{
"id": "demandResponseLoadControl",
"version": 1
},
{
"id": "custom.spiMode",
"version": 1
},
{
"id": "custom.airConditionerOptionalMode",
"version": 1
},
{
"id": "custom.deviceReportStateConfiguration",
"version": 1
},
{
"id": "custom.energyType",
"version": 1
},
{
"id": "custom.dustFilter",
"version": 1
},
{
"id": "custom.airConditionerOdorController",
"version": 1
},
{
"id": "custom.deodorFilter",
"version": 1
}
],
"categories": [
{
"name": "Other",
"categoryType": "manufacturer"
}
]
}
],
"createTime": "2021-04-06T16:43:34.753Z",
"profile": {
"id": "60fbc713-8da5-315d-b31a-6d6dcde4be7b"
},
"ocf": {
"ocfDeviceType": "x.com.st.d.sensor.light",
"manufacturerName": "Samsung Electronics",
"vendorId": "VD-Sensor.Light-2023",
"lastSignupTime": "2025-01-08T02:32:04.631093137Z",
"transferCandidate": false,
"additionalAuthCodeRequired": false
},
"type": "OCF",
"restrictionTier": 0,
"allowed": [],
"executionContext": "CLOUD"
}
],
"_links": {}
}

View File

@ -153,7 +153,12 @@
'max_temp': 35,
'min_temp': 7,
'preset_modes': list([
'off',
'windFree',
'longWind',
'speed',
'quiet',
'sleep',
]),
'swing_modes': list([
'vertical',
@ -217,9 +222,14 @@
]),
'max_temp': 35,
'min_temp': 7,
'preset_mode': None,
'preset_mode': 'off',
'preset_modes': list([
'off',
'windFree',
'longWind',
'speed',
'quiet',
'sleep',
]),
'supported_features': <ClimateEntityFeature: 441>,
'swing_mode': 'off',
@ -331,6 +341,7 @@
'max_temp': 35,
'min_temp': 7,
'preset_modes': list([
'off',
'windFree',
]),
'swing_modes': None,
@ -393,6 +404,7 @@
'min_temp': 7,
'preset_mode': 'windFree',
'preset_modes': list([
'off',
'windFree',
]),
'supported_features': <ClimateEntityFeature: 441>,
@ -408,6 +420,117 @@
'state': 'off',
})
# ---
# name: test_all_entities[da_ac_rac_000002][climate.ac_office_granit-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'fan_modes': list([
'auto',
'low',
'medium',
'high',
'turbo',
]),
'hvac_modes': list([
<HVACMode.OFF: 'off'>,
<HVACMode.COOL: 'cool'>,
<HVACMode.DRY: 'dry'>,
<HVACMode.FAN_ONLY: 'fan_only'>,
<HVACMode.AUTO: 'auto'>,
<HVACMode.HEAT: 'heat'>,
]),
'max_temp': 35,
'min_temp': 7,
'preset_modes': list([
'off',
'sleep',
'quiet',
'speed',
'windFree',
'windFreeSleep',
]),
'swing_modes': None,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'climate',
'entity_category': None,
'entity_id': 'climate.ac_office_granit',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': None,
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': <ClimateEntityFeature: 441>,
'translation_key': None,
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[da_ac_rac_000002][climate.ac_office_granit-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'current_temperature': 25,
'drlc_status_duration': 0,
'drlc_status_level': -1,
'drlc_status_override': False,
'drlc_status_start': '1970-01-01T00:00:00Z',
'fan_mode': 'low',
'fan_modes': list([
'auto',
'low',
'medium',
'high',
'turbo',
]),
'friendly_name': 'AC Office Granit',
'hvac_modes': list([
<HVACMode.OFF: 'off'>,
<HVACMode.COOL: 'cool'>,
<HVACMode.DRY: 'dry'>,
<HVACMode.FAN_ONLY: 'fan_only'>,
<HVACMode.AUTO: 'auto'>,
<HVACMode.HEAT: 'heat'>,
]),
'max_temp': 35,
'min_temp': 7,
'preset_mode': 'windFree',
'preset_modes': list([
'off',
'sleep',
'quiet',
'speed',
'windFree',
'windFreeSleep',
]),
'supported_features': <ClimateEntityFeature: 441>,
'swing_mode': 'off',
'swing_modes': None,
'temperature': 25,
}),
'context': <ANY>,
'entity_id': 'climate.ac_office_granit',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---
# name: test_all_entities[da_ac_rac_000003][climate.office_airfree-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
@ -431,7 +554,13 @@
'max_temp': 35,
'min_temp': 7,
'preset_modes': list([
'off',
'sleep',
'quiet',
'smart',
'speed',
'windFree',
'windFreeSleep',
]),
'swing_modes': list([
'off',
@ -493,9 +622,15 @@
]),
'max_temp': 35,
'min_temp': 7,
'preset_mode': None,
'preset_mode': 'off',
'preset_modes': list([
'off',
'sleep',
'quiet',
'smart',
'speed',
'windFree',
'windFreeSleep',
]),
'supported_features': <ClimateEntityFeature: 441>,
'swing_mode': 'off',
@ -539,7 +674,13 @@
'max_temp': 35,
'min_temp': 7,
'preset_modes': list([
'off',
'sleep',
'quiet',
'smart',
'speed',
'windFree',
'windFreeSleep',
]),
'swing_modes': list([
'off',
@ -604,9 +745,15 @@
]),
'max_temp': 35,
'min_temp': 7,
'preset_mode': None,
'preset_mode': 'off',
'preset_modes': list([
'off',
'sleep',
'quiet',
'smart',
'speed',
'windFree',
'windFreeSleep',
]),
'supported_features': <ClimateEntityFeature: 441>,
'swing_mode': 'off',

View File

@ -436,6 +436,37 @@
'via_device_id': None,
})
# ---
# name: test_devices[da_ac_rac_000002]
DeviceRegistryEntrySnapshot({
'area_id': 'theater',
'config_entries': <ANY>,
'config_entries_subentries': <ANY>,
'configuration_url': 'https://account.smartthings.com',
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'smartthings',
'13549124-3320-4fda-8e5c-3f363e043034',
),
}),
'labels': set({
}),
'manufacturer': 'Samsung Electronics',
'model': None,
'model_id': None,
'name': 'AC Office Granit',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'sw_version': None,
'via_device_id': None,
})
# ---
# name: test_devices[da_ac_rac_000003]
DeviceRegistryEntrySnapshot({
'area_id': None,

View File

@ -2509,6 +2509,446 @@
'state': '100',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_energy-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.ac_office_granit_energy',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
}),
'original_device_class': <SensorDeviceClass.ENERGY: 'energy'>,
'original_icon': None,
'original_name': 'Energy',
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main_powerConsumptionReport_powerConsumption_energy_meter',
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_energy-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'AC Office Granit Energy',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
'context': <ANY>,
'entity_id': 'sensor.ac_office_granit_energy',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '2247.3',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_energy_difference-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.TOTAL: 'total'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.ac_office_granit_energy_difference',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
}),
'original_device_class': <SensorDeviceClass.ENERGY: 'energy'>,
'original_icon': None,
'original_name': 'Energy difference',
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'energy_difference',
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main_powerConsumptionReport_powerConsumption_deltaEnergy_meter',
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_energy_difference-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'AC Office Granit Energy difference',
'state_class': <SensorStateClass.TOTAL: 'total'>,
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
'context': <ANY>,
'entity_id': 'sensor.ac_office_granit_energy_difference',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.4',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_energy_saved-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.ac_office_granit_energy_saved',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
}),
'original_device_class': <SensorDeviceClass.ENERGY: 'energy'>,
'original_icon': None,
'original_name': 'Energy saved',
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'energy_saved',
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main_powerConsumptionReport_powerConsumption_energySaved_meter',
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_energy_saved-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'AC Office Granit Energy saved',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
'context': <ANY>,
'entity_id': 'sensor.ac_office_granit_energy_saved',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.0',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_humidity-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.ac_office_granit_humidity',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.HUMIDITY: 'humidity'>,
'original_icon': None,
'original_name': 'Humidity',
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main_relativeHumidityMeasurement_humidity_humidity',
'unit_of_measurement': '%',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_humidity-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'humidity',
'friendly_name': 'AC Office Granit Humidity',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.ac_office_granit_humidity',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '60',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_power-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.ac_office_granit_power',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
}),
'original_device_class': <SensorDeviceClass.POWER: 'power'>,
'original_icon': None,
'original_name': 'Power',
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main_powerConsumptionReport_powerConsumption_power_meter',
'unit_of_measurement': <UnitOfPower.WATT: 'W'>,
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_power-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'power',
'friendly_name': 'AC Office Granit Power',
'power_consumption_end': '2025-02-09T16:15:33Z',
'power_consumption_start': '2025-02-09T15:45:29Z',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfPower.WATT: 'W'>,
}),
'context': <ANY>,
'entity_id': 'sensor.ac_office_granit_power',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_power_energy-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.TOTAL: 'total'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.ac_office_granit_power_energy',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
}),
'original_device_class': <SensorDeviceClass.ENERGY: 'energy'>,
'original_icon': None,
'original_name': 'Power energy',
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'power_energy',
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main_powerConsumptionReport_powerConsumption_powerEnergy_meter',
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_power_energy-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'AC Office Granit Power energy',
'state_class': <SensorStateClass.TOTAL: 'total'>,
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
'context': <ANY>,
'entity_id': 'sensor.ac_office_granit_power_energy',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.0',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_temperature-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.ac_office_granit_temperature',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 1,
}),
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Temperature',
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main_temperatureMeasurement_temperature_temperature',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_temperature-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'AC Office Granit Temperature',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.ac_office_granit_temperature',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '25',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_volume-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.ac_office_granit_volume',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Volume',
'platform': 'smartthings',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'audio_volume',
'unique_id': '13549124-3320-4fda-8e5c-3f363e043034_main_audioVolume_volume_volume',
'unit_of_measurement': '%',
})
# ---
# name: test_all_entities[da_ac_rac_000002][sensor.ac_office_granit_volume-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'AC Office Granit Volume',
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.ac_office_granit_volume',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '100',
})
# ---
# name: test_all_entities[da_ac_rac_000003][sensor.office_airfree_energy-entry]
EntityRegistryEntrySnapshot({
'aliases': set({

View File

@ -441,30 +441,86 @@ async def test_ac_set_swing_mode(
)
@pytest.mark.parametrize("device_fixture", ["da_ac_rac_000001"])
@pytest.mark.parametrize("device_fixture", ["da_ac_rac_000002"])
@pytest.mark.parametrize(
"mode", ["off", "sleep", "quiet", "speed", "windFree", "windFreeSleep"]
)
async def test_ac_set_preset_mode(
hass: HomeAssistant,
devices: AsyncMock,
mode: str,
mock_config_entry: MockConfigEntry,
) -> None:
"""Test climate set preset mode."""
"""Test setting and retrieving AC preset modes."""
await setup_integration(hass, mock_config_entry)
# Mock supported preset modes
set_attribute_value(
devices,
Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE,
Attribute.SUPPORTED_AC_OPTIONAL_MODE,
["off", "sleep", "quiet", "speed", "windFree", "windFreeSleep"],
)
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_PRESET_MODE,
{ATTR_ENTITY_ID: "climate.ac_office_granit", ATTR_PRESET_MODE: "windFree"},
{ATTR_ENTITY_ID: "climate.ac_office_granit", ATTR_PRESET_MODE: mode},
blocking=True,
)
devices.execute_device_command.assert_called_once_with(
"96a5ef74-5832-a84b-f1f7-ca799957065d",
devices.execute_device_command.assert_called_with(
"13549124-3320-4fda-8e5c-3f363e043034",
Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE,
Command.SET_AC_OPTIONAL_MODE,
MAIN,
argument="windFree",
argument=mode,
)
@pytest.mark.parametrize("device_fixture", ["da_ac_rac_000002"])
@pytest.mark.parametrize(
"mode", ["off", "sleep", "quiet", "speed", "windFree", "windFreeSleep"]
)
async def test_ac_get_preset_mode(
hass: HomeAssistant,
devices: AsyncMock,
mode: str,
mock_config_entry: MockConfigEntry,
) -> None:
"""Test setting and retrieving AC preset modes."""
await setup_integration(hass, mock_config_entry)
# Mock supported preset modes
set_attribute_value(
devices,
Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE,
Attribute.SUPPORTED_AC_OPTIONAL_MODE,
["off", "sleep", "quiet", "speed", "windFree", "windFreeSleep"],
)
# Mock the current preset mode to simulate the device state
set_attribute_value(
devices,
Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE,
Attribute.AC_OPTIONAL_MODE,
mode,
)
# Trigger an update to refresh the state
await trigger_update(
hass,
devices,
"13549124-3320-4fda-8e5c-3f363e043034",
Capability.CUSTOM_AIR_CONDITIONER_OPTIONAL_MODE,
Attribute.AC_OPTIONAL_MODE,
mode,
)
# Verify the preset mode is correctly reflected in the entity state
state = hass.states.get("climate.ac_office_granit")
assert state.attributes[ATTR_PRESET_MODE] == mode
@pytest.mark.parametrize("device_fixture", ["da_ac_rac_000001"])
async def test_ac_state_update(
hass: HomeAssistant,