Add support for Samsung room air conditioners (ARTIK051_PRAC-class), the first device whose core controls map onto a single Home Assistant `climate` entity rather than a scatter of switches/selects/numbers. - New `climate` platform + `ClimateDesc`: one composite entity that reads power, HVAC mode, current/target temperature, fan (wind) strength, swing (wind direction) and the convenient-mode preset across several OCF resources and writes back to each. On/off folds into HVACMode.OFF / TURN_ON/OFF; convenient mode folds into preset_mode. The entity binds one primary resource (/mode/vs/0) and reads its siblings from the coordinator snapshot, reusing the cross-resource read pattern from number/select. - New `airconditioner` capability module + by_type registry, routed via the `_PRAC_` modelNum token. Reuses common ALARMS/ENERGY_METER, fridge.FIRMWARE_UPDATE and dishwasher.DIAGNOSIS; air purify and auto clean as config switches; air dust filter status/usage as diagnostics (usage normalized to a percentage of rated capacity). - Climate-consumed and all-zero/ambiguous resources (temperature/wind, /sensors, /humidity) are declared as AC-scoped coverage so every href in the dump binds or is covered -- no coverage-gap repair. - Fan/swing modes map onto HA standard constants (auto-localized); the custom fan `turbo`, presets `quiet/smart/speed`, and the filter-status enum get translations in strings.json + translations/en.json. - Scrubbed fixture, golden, and tests: registry routing, zero unbound hrefs, the climate write contract, and filter-% normalization.
401 lines
9.9 KiB
JSON
401 lines
9.9 KiB
JSON
{
|
|
"meta": {
|
|
"model": "ARTIK051_PRAC_20K",
|
|
"device_type": "airconditioner",
|
|
"source": "issue #17 diagnostics (scrubbed)",
|
|
"note": "First air-conditioner /device/0 dump; first composite HA climate entity."
|
|
},
|
|
"device0": [
|
|
{
|
|
"rt": [
|
|
"x.com.samsung.devcol",
|
|
"oic.wk.col"
|
|
],
|
|
"if": [
|
|
"oic.if.baseline",
|
|
"oic.if.ll",
|
|
"oic.if.b"
|
|
]
|
|
},
|
|
{
|
|
"href": "/personality/presence/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.items": [
|
|
{
|
|
"x.com.samsung.da.id": "",
|
|
"x.com.samsung.da.deviceId": "**REDACTED**",
|
|
"x.com.samsung.da.value": ""
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/realtimenotiforclient/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.timeforshortnoti": "0",
|
|
"x.com.samsung.da.longnotisubscription": "false",
|
|
"x.com.samsung.da.periodicnotisubscription": "true"
|
|
}
|
|
},
|
|
{
|
|
"href": "/filter/airdustfilter/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.filterUsage": "100",
|
|
"x.com.samsung.da.filterUsageResolution": "1",
|
|
"x.com.samsung.da.filterDesiredUsage": "500",
|
|
"x.com.samsung.da.filterStatus": "wash",
|
|
"x.com.samsung.da.filterCapacity": "500",
|
|
"x.com.samsung.da.filterCapacityUnit": "Hour",
|
|
"x.com.samsung.da.filterResetType": [
|
|
"replaceable",
|
|
"washable"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/temperature/control/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.increment": "1"
|
|
}
|
|
},
|
|
{
|
|
"href": "/mode/convenient/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.modes": "Off",
|
|
"x.com.samsung.da.supportedModes": [
|
|
"Off",
|
|
"Sleep",
|
|
"Quiet",
|
|
"Smart",
|
|
"Speed"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/option/airpurify/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.modes": "Off",
|
|
"x.com.samsung.da.supportedModes": [
|
|
"On",
|
|
"Off"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/option/autoclean/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.status": "Stop",
|
|
"x.com.samsung.da.settingStatus": "Off",
|
|
"x.com.samsung.da.progress": "0",
|
|
"x.com.samsung.da.supportedStatus": [
|
|
"Start",
|
|
"Stop"
|
|
],
|
|
"x.com.samsung.da.supportedSettingStatus": [
|
|
"On",
|
|
"Off"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/wind/strength/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.modes": "1",
|
|
"x.com.samsung.da.supportedModes": [
|
|
"0",
|
|
"1",
|
|
"2",
|
|
"3",
|
|
"4"
|
|
],
|
|
"x.com.samsung.da.modesName": [
|
|
"Auto",
|
|
"Low",
|
|
"Mid",
|
|
"High",
|
|
"Turbo"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/wind/direction/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.modes": "Fix",
|
|
"x.com.samsung.da.supportedModes": [
|
|
"Fix",
|
|
"All",
|
|
"Up_And_Low"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/alarms/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.items": [
|
|
{
|
|
"x.com.samsung.da.id": "0",
|
|
"x.com.samsung.da.description": "Alarm",
|
|
"x.com.samsung.da.alarmType": "Device",
|
|
"x.com.samsung.da.code": "ErrorCode_OFF",
|
|
"x.com.samsung.da.triggeredTime": "2026-07-21T07:20:30"
|
|
},
|
|
{
|
|
"x.com.samsung.da.id": "1",
|
|
"x.com.samsung.da.description": "Alarm",
|
|
"x.com.samsung.da.alarmType": "Device",
|
|
"x.com.samsung.da.code": "FilterAlarm",
|
|
"x.com.samsung.da.triggeredTime": "2026-07-21T07:20:30",
|
|
"x.com.samsung.da.state": "Created"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/temperatures/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.items": [
|
|
{
|
|
"x.com.samsung.da.id": "0",
|
|
"x.com.samsung.da.description": "Temperature",
|
|
"x.com.samsung.da.desired": "24.0",
|
|
"x.com.samsung.da.current": "27.0",
|
|
"x.com.samsung.da.maximum": "30",
|
|
"x.com.samsung.da.minimum": "16",
|
|
"x.com.samsung.da.increment": "1.0",
|
|
"x.com.samsung.da.unit": "Celsius"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/temperature/current/0",
|
|
"rep": {
|
|
"range": [
|
|
16.0,
|
|
30.0
|
|
],
|
|
"units": "C",
|
|
"temperature": 27.0
|
|
}
|
|
},
|
|
{
|
|
"href": "/temperature/desired/0",
|
|
"rep": {
|
|
"range": [
|
|
16.0,
|
|
30.0
|
|
],
|
|
"units": "C",
|
|
"temperature": 24.0
|
|
}
|
|
},
|
|
{
|
|
"href": "/diagnosis/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.diagnosisStart": "Ready"
|
|
}
|
|
},
|
|
{
|
|
"href": "/energy/consumption/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.instantaneousPower": "0",
|
|
"x.com.samsung.da.cumulativePower": "1686632",
|
|
"x.com.samsung.da.cumulativeSavedPower": "0",
|
|
"x.com.samsung.da.cumulativeUnit": "Wh",
|
|
"x.com.samsung.da.instantaneousPowerUnit": "W"
|
|
}
|
|
},
|
|
{
|
|
"href": "/energy/consumption/0",
|
|
"rep": {
|
|
"power": 0.0
|
|
}
|
|
},
|
|
{
|
|
"href": "/mode/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.supportedModes": [
|
|
"Cool",
|
|
"Dry",
|
|
"Wind",
|
|
"Auto",
|
|
"Heat"
|
|
],
|
|
"x.com.samsung.da.modes": [
|
|
"Cool"
|
|
],
|
|
"x.com.samsung.da.options": [
|
|
"Sleep_0",
|
|
"ArtificialWorking_Off",
|
|
"ComfortAICooling_Off",
|
|
"AiTempChanged_Off",
|
|
"AiTemp_240",
|
|
"OutdoorTemp_79",
|
|
"CoolCapa_50",
|
|
"WarmCapa_60",
|
|
"Light_Off",
|
|
"Volume_100",
|
|
"OptionCode_53304",
|
|
"ExtendOptionCode_197256",
|
|
"RacInfo_None",
|
|
"UpdateAllow_NotAllowed",
|
|
"DurationOn_0",
|
|
"WelcomeCoolingState_Off"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/power/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.power": "Off"
|
|
}
|
|
},
|
|
{
|
|
"href": "/power/0",
|
|
"rep": {
|
|
"value": false
|
|
}
|
|
},
|
|
{
|
|
"href": "/sensors/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.items": [
|
|
{
|
|
"x.com.samsung.da.id": "0",
|
|
"x.com.samsung.da.description": "Sensor for CleanLevel",
|
|
"x.com.samsung.da.type": "CleanLevel",
|
|
"x.com.samsung.da.value": [
|
|
"0"
|
|
]
|
|
},
|
|
{
|
|
"x.com.samsung.da.id": "1",
|
|
"x.com.samsung.da.description": "Sensor for Odor",
|
|
"x.com.samsung.da.type": "Odor",
|
|
"x.com.samsung.da.value": [
|
|
"0"
|
|
]
|
|
},
|
|
{
|
|
"x.com.samsung.da.id": "2",
|
|
"x.com.samsung.da.description": "Sensor for Dust",
|
|
"x.com.samsung.da.type": "Dust",
|
|
"x.com.samsung.da.value": [
|
|
"0",
|
|
"0"
|
|
]
|
|
},
|
|
{
|
|
"x.com.samsung.da.id": "3",
|
|
"x.com.samsung.da.description": "Sensor for FineDust",
|
|
"x.com.samsung.da.type": "FineDust",
|
|
"x.com.samsung.da.value": [
|
|
"0",
|
|
"0"
|
|
]
|
|
},
|
|
{
|
|
"x.com.samsung.da.id": "4",
|
|
"x.com.samsung.da.description": "Sensor for SuperFineDust",
|
|
"x.com.samsung.da.type": "SuperFineDust",
|
|
"x.com.samsung.da.value": [
|
|
"0",
|
|
"0"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/information/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.modelNum": "ARTIK051_PRAC_20K|10217841|60010532001411004200003000000000",
|
|
"x.com.samsung.da.description": "ARTIK051_PRAC_20K",
|
|
"x.com.samsung.da.serialNum": "**REDACTED**",
|
|
"x.com.samsung.da.otnDUID": "**REDACTED**",
|
|
"x.com.samsung.da.serialNumOption": "**REDACTED**",
|
|
"x.com.samsung.da.items": [
|
|
{
|
|
"x.com.samsung.da.id": "0",
|
|
"x.com.samsung.da.description": "Version",
|
|
"x.com.samsung.da.type": "Software",
|
|
"x.com.samsung.da.number": "02181A230313",
|
|
"x.com.samsung.da.newVersionAvailable": "0"
|
|
},
|
|
{
|
|
"x.com.samsung.da.id": "1",
|
|
"x.com.samsung.da.description": "Version",
|
|
"x.com.samsung.da.type": "Firmware",
|
|
"x.com.samsung.da.number": "22112400,FFFFFFFF",
|
|
"x.com.samsung.da.newVersionAvailable": "0"
|
|
},
|
|
{
|
|
"x.com.samsung.da.id": "2",
|
|
"x.com.samsung.da.description": "Version",
|
|
"x.com.samsung.da.type": "Outdoor",
|
|
"x.com.samsung.da.number": "0000,0000"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/file/information/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.timeoffset": "+00:00",
|
|
"x.com.samsung.supprtedtype": 1
|
|
}
|
|
},
|
|
{
|
|
"href": "/configuration/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.region": "0000000000",
|
|
"x.com.samsung.da.airconOptionList": [
|
|
"SingleCommand_1",
|
|
"DR",
|
|
"HOMECARE_WIZARD_V2",
|
|
"PRODUCT_GLOBAL",
|
|
"AI_RAC_GLOBAL_HEATPUMP_3.0",
|
|
"AI_3.0",
|
|
"Auto_To_AI",
|
|
"AI_Heat"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"href": "/humidity/0",
|
|
"rep": {
|
|
"humidity": 0
|
|
}
|
|
},
|
|
{
|
|
"href": "/humidity/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.humidity": "0"
|
|
}
|
|
},
|
|
{
|
|
"href": "/drlc/0",
|
|
"rep": {
|
|
"DRLevel": 0,
|
|
"start": "1970-01-01T00:00:00Z",
|
|
"duration": 0,
|
|
"override": false
|
|
}
|
|
},
|
|
{
|
|
"href": "/drlc/vs/0",
|
|
"rep": {
|
|
"x.com.samsung.da.drlcLevel": "0",
|
|
"x.com.samsung.da.duration": "00:00:00",
|
|
"x.com.samsung.da.drlcStartTime": "1970-01-01T00:00:00Z",
|
|
"x.com.samsung.da.override": "Off",
|
|
"x.com.samsung.da.realSaving": "Off"
|
|
}
|
|
},
|
|
{
|
|
"href": "/timezone/vs/0",
|
|
"rep": {}
|
|
}
|
|
]
|
|
}
|