Add device support for Samsung Refrigerator TP1X_REF_21K auto-door variants (issue #328)

Three new dumps from one household's TP1X_REF_21K fleet (regular
single-door, kimchi, wine cellar) exposed the Auto Door Open feature's
timer and voice/sound feedback toggles, plus wine-cellar-specific
coverage: a deodorizing filter at its own href, a multi-compartment
pantry select, and a table-revision info resource.

- STATUS_LOCK gains auto_door_voice_control/auto_door_sound_control,
  gated on each field's own presence.
- New AUTO_DOOR_TIMER (a discrete-options select, same shape as the
  DEFINITE_TEMPERATURE_COOLER/FREEZER pattern) and three no-entity
  AUTO_DOOR_SINGLE/KIMCHI/WINECELLAR coverage hrefs -- every dump seen
  reports exactly one openOptions value with no paired current/desired
  field to choose against.
- New DEODOR_FILTER (reuses AIR_FILTER's entities at a different href),
  WINECELLAR_PANTRY_ZONE, and WINECELLAR_INFO.
- by_type: oic.d.krefrigerator and x.com.st.d.winecellar routed to the
  refrigerator registry via /oic/d, alongside the existing modelNum-based
  routing.
- kimchi_zone_mode's translation catalog gains three supportMode codes
  (bare storage_fridge/storage_freezer without the _normal suffix, and
  the apparently-placeholder newmode_kimchi_0000) surfaced by the kimchi
  fixture, across all seven languages.

Three new scrubbed fixtures + goldens + tests, one per variant.
This commit is contained in:
Marc Billow
2026-08-09 00:57:36 +00:00
parent 07c20e82aa
commit b6f0bc22cb
20 changed files with 1753 additions and 7 deletions
@@ -226,12 +226,14 @@ _OIC_TYPE_TO_KEY: dict[str, str] = {
"oic.d.dryer": "dryer",
"oic.d.oven": "oven",
"oic.d.refrigerator": "refrigerator",
"oic.d.krefrigerator": "refrigerator", # issue #328 -- kimchi refrigerator
"oic.d.washer": "washer",
"x.com.st.d.airqualitysensor": "air_monitor",
"x.com.st.d.dehumidifier": "dehumidifier",
"x.com.st.d.hood": "range_hood", # AHD-WW-TP1-22-COMMON
"x.com.st.d.stickcleaner": "vacuum_station",
"x.com.st.d.steamcloset": "air_dresser",
"x.com.st.d.winecellar": "refrigerator", # issue #328 -- same TP1X_REF_21K board
}
@@ -14,6 +14,13 @@ REGISTRY = DeviceRegistry(
fridge.DOOR_ALERT,
common.WATER_FILTER,
fridge.AIR_FILTER,
fridge.DEODOR_FILTER,
fridge.AUTO_DOOR_TIMER,
fridge.AUTO_DOOR_SINGLE,
fridge.AUTO_DOOR_KIMCHI,
fridge.AUTO_DOOR_WINECELLAR,
fridge.WINECELLAR_PANTRY_ZONE,
fridge.WINECELLAR_INFO,
dishwasher.DIAGNOSIS,
fridge.ICEMAKER_NIGHTTIME,
fridge.FLEX_ZONE,
@@ -326,9 +326,118 @@ STATUS_LOCK = Capability(
value_fn=lambda v: v == "On",
write_fn=_status_lock_write("x.com.samsung.da.device.sound"),
),
# Auto Door Open's own voice/sound feedback toggles (issue #328,
# TP1X_REF_21K family) -- siblings of auto_door_opener above, not
# duplicates of fridge_sound (device.sound is the general appliance
# beep, these two gate ado's own prompts). Only seen on the
# auto-door-equipped variants (single/kimchi/winecellar), not the
# earlier TP1X_REF_21K dumps that predate that feature -- gated on
# each field's own presence rather than assumed universal.
SwitchDesc(
key="auto_door_voice_control",
field="x.com.samsung.da.ado.voicecontrol",
icon="mdi:microphone",
entity_category="config",
value_fn=lambda v: v == "On",
write_fn=_status_lock_write("x.com.samsung.da.ado.voicecontrol"),
exists_fn=lambda rep, resources: "x.com.samsung.da.ado.voicecontrol" in rep,
),
SwitchDesc(
key="auto_door_sound_control",
field="x.com.samsung.da.ado.soundcontrol",
icon="mdi:volume-medium",
entity_category="config",
value_fn=lambda v: v == "On",
write_fn=_status_lock_write("x.com.samsung.da.ado.soundcontrol"),
exists_fn=lambda rep, resources: "x.com.samsung.da.ado.soundcontrol" in rep,
),
),
)
# Auto Door Open's paired delay setting (issue #328, TP1X_REF_21K family):
# how long the door stays held open before it re-closes, on/off itself is
# STATUS_LOCK.auto_door_opener above. Same discrete-options-select shape as
# DEFINITE_TEMPERATURE_COOLER/FREEZER. Unit unconfirmed -- no supportedList
# field states it and the report carried no app screenshot -- so this is a
# raw-code select rather than a guessed seconds/minutes NumberDesc.
def _auto_door_timer_write(p, rep, href=None):
return ["autodoor", "timer", "vs", "0"], {"x.com.samsung.da.time.desired": p}
AUTO_DOOR_TIMER = Capability(
href="/autodoor/timer/vs/0",
poll_tier="warm",
entities=(
SelectDesc(
key="auto_door_timer",
field="x.com.samsung.da.time.desired",
icon="mdi:timer-outline",
translation_key="auto_door_timer",
entity_category="config",
options_field="x.com.samsung.da.time.supportedOptions",
write_fn=_auto_door_timer_write,
),
),
)
# /autodoor/<variant>/vs/0 -- one per fridge sub-type sharing the Auto Door
# Open feature (single-door, kimchi, winecellar; issue #328). Each reports
# only x.com.samsung.da.ado.openOptions, declaring which open styles that
# variant supports -- every dump seen so far carries exactly one option
# ('Single') with no paired desired/current field to make a choice against,
# the same "no real choice to expose yet" shape as ignored.py's /mode/0.
# Bound with no entities to record the three hrefs as coverage; revisit if
# a device ever reports more than one option.
AUTO_DOOR_SINGLE = Capability(href="/autodoor/single/vs/0")
AUTO_DOOR_KIMCHI = Capability(href="/autodoor/kimchi/vs/0")
AUTO_DOOR_WINECELLAR = Capability(href="/autodoor/winecellar/vs/0")
# Wine-cellar variant (x.com.st.d.winecellar, issue #328) of the same
# deodorizing filter AIR_FILTER models -- filterUsage/filterStatus at a
# different href, same 0-100-percentage-already shape (see AIR_FILTER's own
# comment). filterUsage reads '-1' on the only dump seen (filterStatus
# 'normal'), relayed as-is rather than special-cased -- no second dump to
# confirm whether that's a real sentinel or this unit just not tracking it.
DEODOR_FILTER = Capability(
href="/filter/deodorfilter/vs/0",
poll_tier="cold",
entities=AIR_FILTER.entities,
)
# Wine-cellar multi-compartment pantry select (issue #328): same
# mode/supportedOptions shape as PANTRY_ZONE, at its own href with a 5-way
# option set (Processed_Meat/Cheese/Nuts/Fruit/Wine) instead of PANTRY_ZONE's.
# Only a "one" instance seen -- not generalized to a pattern cap, same
# discipline as PANTRY_ZONE itself.
def _winecellar_pantry_write(p, rep, href=None):
return ["status", "winecellar", "pantry", "one", "vs", "0"], {"x.com.samsung.da.mode": p}
WINECELLAR_PANTRY_ZONE = Capability(
href="/status/winecellar/pantry/one/vs/0",
poll_tier="warm",
entities=(
SelectDesc(
key="winecellar_pantry_zone_mode",
field="x.com.samsung.da.mode",
icon="mdi:glass-wine",
translation_key="winecellar_pantry_zone_mode",
entity_category="config",
options_field="x.com.samsung.da.supportedOptions",
write_fn=_winecellar_pantry_write,
),
),
)
# Wine-cellar internal table-revision marker (issue #328) -- versioning
# metadata, not appliance state. Same treatment as ignored.py's
# /wm/setinfo/vs/0.
WINECELLAR_INFO = Capability(href="/information/winecellar/vs/0")
# /defrost/delay/vs/0 is the writable toggle to postpone a scheduled
# defrost. /defrost/block/vs/0 is unrelated: despite the "block" naming,
# live dumps confirm DEFROST_BLOCK_ON means the defrost cycle is actively
@@ -225,6 +225,9 @@
"air_filter_threshold": {
"name": "Práh upozornění na filtr"
},
"auto_door_timer": {
"name": "Časovač automatického otevírání dvířek"
},
"beverage_zone_mode": {
"name": "Režim zóny nápojů",
"state": {
@@ -472,9 +475,11 @@
"kimchi_storage_crunfch": "Křupavé kimči",
"kimchi_storage_buy": "Kupované kimči",
"storage_fridge_normal": "Chlazení",
"storage_fridge": "Chlazení",
"storage_fridge_cold": "Chlazení, silné",
"storage_fridge_warm": "Chlazení, slabé",
"storage_freezer_normal": "Mražení",
"storage_freezer": "Mražení",
"storage_freezer_cold": "Mražení, silné",
"storage_freezer_warm": "Mražení, slabé",
"kimchi_ripe_low_temp": "Zrání kimči, nízká teplota",
@@ -487,7 +492,8 @@
"storage_fresh_cereal": "Obiloviny",
"storage_fridge_drink": "Nápoje",
"storage_fresh_wine": "Víno",
"storage_fresh_potato_banana": "Brambory a banány"
"storage_fresh_potato_banana": "Brambory a banány",
"newmode_kimchi_0000": "Nový režim"
}
},
"pantry_zone_mode": {
@@ -498,6 +504,16 @@
"fdr_drinks": "Nápoje"
}
},
"winecellar_pantry_zone_mode": {
"name": "Režim spíže",
"state": {
"processed_meat": "Zpracované maso",
"cheese": "Sýr",
"nuts": "Ořechy",
"fruit": "Ovoce",
"wine": "Víno"
}
},
"range_burner_power_level": {
"name": "Výkon hořáku {number}",
"state": {
@@ -1147,6 +1163,12 @@
"auto_door_opener": {
"name": "Automatické otevírání dvířek"
},
"auto_door_sound_control": {
"name": "Zvuk automatického otevírání dvířek"
},
"auto_door_voice_control": {
"name": "Hlasové ovládání automatického otevírání dvířek"
},
"auto_release_dry": {
"name": "Automatické uvolnění při sušení"
},
@@ -225,6 +225,9 @@
"air_filter_threshold": {
"name": "Filteralarm-Schwellenwert"
},
"auto_door_timer": {
"name": "Timer für automatischen Türöffner"
},
"beverage_zone_mode": {
"name": "Getränkezonen-Modus",
"state": {
@@ -467,6 +470,16 @@
"fdr_drinks": "Getränke"
}
},
"winecellar_pantry_zone_mode": {
"name": "Vorratszonen-Modus",
"state": {
"processed_meat": "Wurst/Aufschnitt",
"cheese": "Käse",
"nuts": "Nüsse",
"fruit": "Obst",
"wine": "Wein"
}
},
"range_burner_power_level": {
"name": "Brenner {number} Leistungsstufe",
"state": {
@@ -678,9 +691,11 @@
"kimchi_storage_crunfch": "Knackiges Kimchi",
"kimchi_storage_buy": "Gekauftes Kimchi",
"storage_fridge_normal": "Kühlen",
"storage_fridge": "Kühlen",
"storage_fridge_cold": "Kühlen, stark",
"storage_fridge_warm": "Kühlen, schwach",
"storage_freezer_normal": "Gefrieren",
"storage_freezer": "Gefrieren",
"storage_freezer_cold": "Gefrieren, stark",
"storage_freezer_warm": "Gefrieren, schwach",
"kimchi_ripe_low_temp": "Kimchi-Reifung, niedrige Temperatur",
@@ -693,7 +708,8 @@
"storage_fresh_cereal": "Getreide",
"storage_fridge_drink": "Getränke",
"storage_fresh_wine": "Wein",
"storage_fresh_potato_banana": "Kartoffeln und Bananen"
"storage_fresh_potato_banana": "Kartoffeln und Bananen",
"newmode_kimchi_0000": "Neuer Modus"
}
},
"energy_saving_mode": {
@@ -1144,6 +1160,12 @@
"auto_door_opener": {
"name": "Automatischer Türöffner"
},
"auto_door_sound_control": {
"name": "Ton des automatischen Türöffners"
},
"auto_door_voice_control": {
"name": "Sprachsteuerung des automatischen Türöffners"
},
"auto_release_dry": {
"name": "Automatische Trocknungsfreigabe"
},
@@ -225,6 +225,9 @@
"air_filter_threshold": {
"name": "Filter alarm threshold"
},
"auto_door_timer": {
"name": "Auto door open timer"
},
"beverage_zone_mode": {
"name": "Beverage zone mode",
"state": {
@@ -474,9 +477,11 @@
"storage_fridge_normal": "Fridge",
"storage_fridge_cold": "Fridge, strong",
"storage_fridge_warm": "Fridge, weak",
"storage_fridge": "Fridge",
"storage_freezer_normal": "Freezer",
"storage_freezer_cold": "Freezer, strong",
"storage_freezer_warm": "Freezer, weak",
"storage_freezer": "Freezer",
"kimchi_ripe_low_temp": "Kimchi ripening, low temperature",
"kimchi_ripe_normal_temp": "Kimchi ripening, room temperature",
"kimchi_ripe_kkakdugi": "Kkakdugi ripening",
@@ -487,7 +492,8 @@
"storage_fresh_cereal": "Grains",
"storage_fridge_drink": "Beverages",
"storage_fresh_wine": "Wine",
"storage_fresh_potato_banana": "Potato & banana"
"storage_fresh_potato_banana": "Potato & banana",
"newmode_kimchi_0000": "New mode"
}
},
"pantry_zone_mode": {
@@ -498,6 +504,16 @@
"fdr_drinks": "Drinks"
}
},
"winecellar_pantry_zone_mode": {
"name": "Pantry zone mode",
"state": {
"processed_meat": "Processed meat",
"cheese": "Cheese",
"nuts": "Nuts",
"fruit": "Fruit",
"wine": "Wine"
}
},
"range_burner_power_level": {
"name": "Burner {number} power level",
"state": {
@@ -1147,6 +1163,12 @@
"auto_door_opener": {
"name": "Auto door opener"
},
"auto_door_sound_control": {
"name": "Auto door sound"
},
"auto_door_voice_control": {
"name": "Auto door voice control"
},
"auto_release_dry": {
"name": "Auto release dry"
},
@@ -374,6 +374,9 @@
"air_filter_threshold": {
"name": "Umbral de alarma del filtro"
},
"auto_door_timer": {
"name": "Temporizador de apertura automática de puerta"
},
"beverage_zone_mode": {
"name": "Modo de zona de bebidas",
"state": {
@@ -621,9 +624,11 @@
"kimchi_storage_crunfch": "Kimchi crujiente",
"kimchi_storage_buy": "Kimchi comprado",
"storage_fridge_normal": "Frigorífico",
"storage_fridge": "Frigorífico",
"storage_fridge_cold": "Frigorífico, fuerte",
"storage_fridge_warm": "Frigorífico, suave",
"storage_freezer_normal": "Congelador",
"storage_freezer": "Congelador",
"storage_freezer_cold": "Congelador, fuerte",
"storage_freezer_warm": "Congelador, suave",
"kimchi_ripe_low_temp": "Maduración kimchi, baja temperatura",
@@ -636,7 +641,8 @@
"storage_fresh_cereal": "Cereales",
"storage_fridge_drink": "Bebidas",
"storage_fresh_wine": "Vino",
"storage_fresh_potato_banana": "Patata y plátano"
"storage_fresh_potato_banana": "Patata y plátano",
"newmode_kimchi_0000": "Modo nuevo"
}
},
"pantry_zone_mode": {
@@ -647,6 +653,16 @@
"fdr_drinks": "Bebidas"
}
},
"winecellar_pantry_zone_mode": {
"name": "Modo de zona de despensa",
"state": {
"processed_meat": "Embutidos",
"cheese": "Queso",
"nuts": "Frutos secos",
"fruit": "Fruta",
"wine": "Vino"
}
},
"range_burner_power_level": {
"name": "Nivel de potencia del fuego {number}",
"state": {
@@ -1296,6 +1312,12 @@
"auto_door_opener": {
"name": "Apertura automática de puerta"
},
"auto_door_sound_control": {
"name": "Sonido de apertura automática de puerta"
},
"auto_door_voice_control": {
"name": "Control por voz de apertura automática de puerta"
},
"auto_release_dry": {
"name": "Liberación automática de secado"
},
@@ -225,6 +225,9 @@
"air_filter_threshold": {
"name": "Soglia allarme filtro"
},
"auto_door_timer": {
"name": "Timer apertura automatica sportello"
},
"beverage_zone_mode": {
"name": "Modalità zona bevande",
"state": {
@@ -472,9 +475,11 @@
"kimchi_storage_crunfch": "Kimchi croccante",
"kimchi_storage_buy": "Kimchi acquistato",
"storage_fridge_normal": "Frigorifero",
"storage_fridge": "Frigorifero",
"storage_fridge_cold": "Frigorifero, forte",
"storage_fridge_warm": "Frigorifero, debole",
"storage_freezer_normal": "Congelatore",
"storage_freezer": "Congelatore",
"storage_freezer_cold": "Congelatore, forte",
"storage_freezer_warm": "Congelatore, debole",
"kimchi_ripe_low_temp": "Maturazione kimchi, bassa temperatura",
@@ -487,7 +492,8 @@
"storage_fresh_cereal": "Cereali",
"storage_fridge_drink": "Bevande",
"storage_fresh_wine": "Vino",
"storage_fresh_potato_banana": "Patate e banane"
"storage_fresh_potato_banana": "Patate e banane",
"newmode_kimchi_0000": "Nuova modalità"
}
},
"pantry_zone_mode": {
@@ -498,6 +504,16 @@
"fdr_drinks": "Bevande"
}
},
"winecellar_pantry_zone_mode": {
"name": "Modalità zona dispensa",
"state": {
"processed_meat": "Salumi",
"cheese": "Formaggio",
"nuts": "Frutta secca",
"fruit": "Frutta",
"wine": "Vino"
}
},
"range_burner_power_level": {
"name": "Livello potenza fornello {number}",
"state": {
@@ -1147,6 +1163,12 @@
"auto_door_opener": {
"name": "Apertura automatica sportello"
},
"auto_door_sound_control": {
"name": "Suono apertura automatica sportello"
},
"auto_door_voice_control": {
"name": "Controllo vocale apertura automatica sportello"
},
"auto_release_dry": {
"name": "Apertura automatica per asciugatura"
},
@@ -225,6 +225,9 @@
"air_filter_threshold": {
"name": "필터 알림 기준"
},
"auto_door_timer": {
"name": "오토 오픈 도어 타이머"
},
"beverage_zone_mode": {
"name": "음료 보관 모드",
"state": {
@@ -472,9 +475,11 @@
"kimchi_storage_crunfch": "아삭 김치",
"kimchi_storage_buy": "구입 김치",
"storage_fridge_normal": "냉장",
"storage_fridge": "냉장",
"storage_fridge_cold": "냉장 강",
"storage_fridge_warm": "냉장 약",
"storage_freezer_normal": "냉동",
"storage_freezer": "냉동",
"storage_freezer_cold": "냉동 강",
"storage_freezer_warm": "냉동 약",
"kimchi_ripe_low_temp": "김치 저온 숙성",
@@ -487,7 +492,8 @@
"storage_fresh_cereal": "곡류",
"storage_fridge_drink": "음료",
"storage_fresh_wine": "와인",
"storage_fresh_potato_banana": "감자 및 바나나"
"storage_fresh_potato_banana": "감자 및 바나나",
"newmode_kimchi_0000": "새 모드"
}
},
"pantry_zone_mode": {
@@ -498,6 +504,16 @@
"fdr_drinks": "음료"
}
},
"winecellar_pantry_zone_mode": {
"name": "팬트리실 모드",
"state": {
"processed_meat": "가공육",
"cheese": "치즈",
"nuts": "견과류",
"fruit": "과일",
"wine": "와인"
}
},
"range_burner_power_level": {
"name": "{number}번 화구 화력",
"state": {
@@ -1147,6 +1163,12 @@
"auto_door_opener": {
"name": "오토 오픈 도어"
},
"auto_door_sound_control": {
"name": "오토 오픈 도어 소리"
},
"auto_door_voice_control": {
"name": "오토 오픈 도어 음성 안내"
},
"auto_release_dry": {
"name": "자동 문 열림 건조"
},
@@ -225,6 +225,9 @@
"air_filter_threshold": {
"name": "Filteralarmdrempel"
},
"auto_door_timer": {
"name": "Timer automatische deuropener"
},
"beverage_zone_mode": {
"name": "Modus drankenzone",
"state": {
@@ -472,9 +475,11 @@
"kimchi_storage_crunfch": "Knapperige kimchi",
"kimchi_storage_buy": "Gekochte kimchi",
"storage_fridge_normal": "Koelkast",
"storage_fridge": "Koelkast",
"storage_fridge_cold": "Koelkast, sterk",
"storage_fridge_warm": "Koelkast, zwak",
"storage_freezer_normal": "Vriezer",
"storage_freezer": "Vriezer",
"storage_freezer_cold": "Vriezer, sterk",
"storage_freezer_warm": "Vriezer, zwak",
"kimchi_ripe_low_temp": "Kimchi rijpen, lage temperatuur",
@@ -487,7 +492,8 @@
"storage_fresh_cereal": "Granen",
"storage_fridge_drink": "Dranken",
"storage_fresh_wine": "Wijn",
"storage_fresh_potato_banana": "Aardappelen en bananen"
"storage_fresh_potato_banana": "Aardappelen en bananen",
"newmode_kimchi_0000": "Nieuwe modus"
}
},
"pantry_zone_mode": {
@@ -498,6 +504,16 @@
"fdr_drinks": "Dranken"
}
},
"winecellar_pantry_zone_mode": {
"name": "Modus voorraadzone",
"state": {
"processed_meat": "Vleeswaren",
"cheese": "Kaas",
"nuts": "Noten",
"fruit": "Fruit",
"wine": "Wijn"
}
},
"range_burner_power_level": {
"name": "Vermogensniveau brander {number}",
"state": {
@@ -1147,6 +1163,12 @@
"auto_door_opener": {
"name": "Automatische deuropener"
},
"auto_door_sound_control": {
"name": "Geluid automatische deuropener"
},
"auto_door_voice_control": {
"name": "Spraakbediening automatische deuropener"
},
"auto_release_dry": {
"name": "Auto Release Dry"
},
@@ -0,0 +1,24 @@
{
"state_keys": [
"ai_energy_level",
"alarm_code",
"auto_door_opener",
"auto_door_timer",
"auto_door_voice_control",
"defrost_active",
"door_onedoorfreezer_open",
"energy_kwh",
"energy_saved_kwh",
"firmware_update",
"freezer_setpoint",
"freezer_temperature",
"fridge_sound",
"power_energy_kwh",
"power_watts",
"rapid_freezing",
"rapid_fridge",
"selfcheck_error",
"selfcheck_result",
"selfcheck_status"
]
}
@@ -0,0 +1,22 @@
{
"state_keys": [
"alarm_code",
"auto_door_opener",
"auto_door_timer",
"auto_door_voice_control",
"door_onedoorkimchi_open",
"energy_kwh",
"energy_saved_kwh",
"firmware_update",
"fridge_sound",
"onedoor_mode",
"onedoor_rack_count",
"onedoor_ripening_remaining",
"onedoor_ripening_status",
"power_energy_kwh",
"power_watts",
"selfcheck_error",
"selfcheck_result",
"selfcheck_status"
]
}
+26
View File
@@ -0,0 +1,26 @@
{
"state_keys": [
"air_filter_status",
"air_filter_usage",
"alarm_code",
"auto_door_opener",
"auto_door_sound_control",
"auto_door_timer",
"auto_door_voice_control",
"cabinet_light_dim",
"cabinet_light_switch",
"door_winecellar_open",
"energy_kwh",
"energy_saved_kwh",
"firmware_update",
"fridge_sound",
"power_energy_kwh",
"power_watts",
"selfcheck_error",
"selfcheck_result",
"selfcheck_status",
"winecellar_bottom_setpoint",
"winecellar_pantry_zone_mode",
"winecellar_top_setpoint"
]
}
@@ -0,0 +1,343 @@
{
"device0": [
{
"rt": [
"x.com.samsung.devcol",
"oic.wk.col"
],
"if": [
"oic.if.baseline",
"oic.if.ll",
"oic.if.b"
]
},
{
"href": "/alarms/vs/0",
"rep": {}
},
{
"href": "/temperatures/vs/0",
"rep": {
"x.com.samsung.da.items": [
{
"x.com.samsung.da.id": "0",
"x.com.samsung.da.description": "Freezer",
"x.com.samsung.da.desired": "-19",
"x.com.samsung.da.current": "-19",
"x.com.samsung.da.maximum": "-17",
"x.com.samsung.da.minimum": "-23",
"x.com.samsung.da.unit": "Celsius"
}
]
}
},
{
"href": "/temperature/current/freezer/0",
"rep": {
"range": [
-23.0,
-17.0
],
"units": "C",
"temperature": -19.0
}
},
{
"href": "/temperature/desired/freezer/0",
"rep": {
"range": [
-23.0,
-17.0
],
"units": "C",
"temperature": -19.0
}
},
{
"href": "/selfcheck/vs/0",
"rep": {
"x.com.samsung.da.status": "Ready",
"x.com.samsung.da.result": "Success",
"x.com.samsung.da.error": [
"DA_ERROR_NONE"
],
"x.com.samsung.da.supportedActions": [
"Start"
]
}
},
{
"href": "/energy/consumption/vs/0",
"rep": {
"x.com.samsung.da.cumulativeConsumption": "41042",
"x.com.samsung.da.cumulativePower": "466708",
"x.com.samsung.da.cumulativeUnit": "Wh",
"x.com.samsung.da.instantaneousPower": "4",
"x.com.samsung.da.instantaneousPowerUnit": "W",
"x.com.samsung.da.cumulativeSavedPower": "15759"
}
},
{
"href": "/mode/vs/0",
"rep": {
"x.com.samsung.da.supportedModes": [
"HOMECARE_WIZARD_V2",
"ENERGY_REPORT_MODEL",
"18K_REF_OUTDOOR_CONTROL_V2"
]
}
},
{
"href": "/mode/0",
"rep": {
"supportedModes": [
"HOMECARE_WIZARD_V2",
"ENERGY_REPORT_MODEL",
"18K_REF_OUTDOOR_CONTROL_V2"
]
}
},
{
"href": "/realtimenotiforclient/vs/0",
"rep": {
"x.com.samsung.da.timeforshortnoti": "0",
"x.com.samsung.da.periodicnotisubscription": "true"
}
},
{
"href": "/information/vs/0",
"rep": {
"x.com.samsung.da.modelNum": "TP1X_REF_21K|00168541|00080023001713104100000041010000",
"x.com.samsung.da.description": "TP1X_REF_21K",
"x.com.samsung.da.serialNum": "**REDACTED**",
"x.com.samsung.da.otnDUID": "**REDACTED**",
"x.com.samsung.da.diagProtocolType": "BLE_OCF",
"x.com.samsung.da.diagLogType": [
"errCode",
"dump"
],
"x.com.samsung.da.diagDumpType": "file",
"x.com.samsung.da.diagEndPoint": "SSM",
"x.com.samsung.da.diagMnid": "0AJT",
"x.com.samsung.da.diagSetupid": "RO6",
"x.com.samsung.da.diagMinVersion": "3.0",
"x.com.samsung.da.diagTsId": "DA01",
"x.com.samsung.da.items": [
{
"x.com.samsung.da.id": "0",
"x.com.samsung.da.description": "WiFi Module",
"x.com.samsung.da.type": "Software",
"x.com.samsung.da.number": "250422",
"x.com.samsung.da.newVersionAvailable": "0"
},
{
"x.com.samsung.da.id": "1",
"x.com.samsung.da.description": "Micom",
"x.com.samsung.da.type": "Firmware",
"x.com.samsung.da.number": "24101709, 23031302, 24062000, FFFFFFFF",
"x.com.samsung.da.newVersionAvailable": "0"
}
]
}
},
{
"href": "/file/information/vs/0",
"rep": {
"x.com.samsung.timeoffset": "+09:00",
"x.com.samsung.supprtedtype": 1
}
},
{
"href": "/doors/vs/0",
"rep": {
"x.com.samsung.da.items": [
{
"x.com.samsung.da.id": "3",
"x.com.samsung.da.description": "Door",
"x.com.samsung.da.openState": "Close"
}
]
}
},
{
"href": "/door/onedoorfreezer/vs/0",
"rep": {
"x.com.samsung.da.openState": "Close"
}
},
{
"href": "/configuration/vs/0",
"rep": {
"x.com.samsung.da.countryCode": "",
"x.com.samsung.da.region": ""
}
},
{
"href": "/refrigeration/0",
"rep": {
"defrost": false,
"rapidFreeze": false,
"rapidCool": false
}
},
{
"href": "/refrigeration/vs/0",
"rep": {
"x.com.samsung.da.rapidFreezing": "Off"
}
},
{
"href": "/drlc/0",
"rep": {
"DRLevel": 2,
"override": false
}
},
{
"href": "/drlc/vs/0",
"rep": {
"x.com.samsung.da.drlcLevel": "2",
"x.com.samsung.da.override": "Not_Supported",
"x.com.samsung.da.durationminutes": "1441",
"x.com.samsung.da.start": "2026-08-06T00:34:47Z",
"x.com.samsung.da.realSaving": "On"
}
},
{
"href": "/bespoke/vs/0",
"rep": {
"x.com.samsung.da.BespokeProduct": "On"
}
},
{
"href": "/otninformation/vs/0",
"rep": {
"x.com.samsung.da.target": "",
"x.com.samsung.da.newVersionAvailable": "false",
"otnStatus": "None",
"flashingProgress": "",
"otnList": [
{
"type": "WIFI",
"modelId": "A-RFWW-TP1-23-COMMON",
"versions": [
"20250422"
],
"visVersion": "250422"
},
{
"type": "Micom",
"modelId": "02800016854100168441",
"versions": [
"24101709",
"23031302"
],
"visVersion": "241017"
},
{
"type": "Micom",
"modelId": "028070655341FFFFFFFF",
"versions": [
"24062000",
"FFFFFFFF"
],
"visVersion": "240620"
}
]
}
},
{
"href": "/status/lock/vs/0",
"rep": {
"x.com.samsung.da.ado.voicecontrol": "Off",
"x.com.samsung.da.device.sound": "On"
}
},
{
"href": "/energy/ailevel/vs/0",
"rep": {
"aiLevel": "1",
"supportedAiLevel": [
"1",
"2"
]
}
},
{
"href": "/autodoor/timer/vs/0",
"rep": {
"x.com.samsung.da.time.desired": "1",
"x.com.samsung.da.time.supportedOptions": [
"1",
"2",
"3",
"4",
"5",
"6"
]
}
},
{
"href": "/autodoor/single/vs/0",
"rep": {
"x.com.samsung.da.ado.openOptions": [
"Single"
]
}
},
{
"href": "/connectionconfig/vs/0",
"rep": {
"autoReconnectionMinVersion": "1.0",
"autoReconnection": "true",
"autoReconnectionProtocolType": [
"ble_ocf",
null
],
"supportedWiFiAuthType": [
"OPEN",
"WEP",
"WPA-PSK",
"WPA2-PSK",
"SAE"
],
"supportedWiFiCryptoType": [
"TKIP",
"AES",
"WEP-64",
"WEP-128"
],
"supportedWiFiFreq": [
"2.4G"
],
"calmConnectionCare": {
"version": "1.0",
"role": [
"things"
]
}
}
},
{
"href": "/timezone/vs/0",
"rep": {
"timezoneid": "Asia/Seoul",
"offset": "+09:00",
"DST": "OFF"
}
},
{
"href": "/wirelessinfo/vs/0",
"rep": {
"macaddressWiFi": "**REDACTED**",
"macaddressBLE": "**REDACTED**"
}
},
{
"href": "/quickcontrol/info/vs/0",
"rep": {
"supportedVersion": "1.0"
}
}
]
}
@@ -0,0 +1,332 @@
{
"device0": [
{
"rt": [
"x.com.samsung.devcol",
"oic.wk.col"
],
"if": [
"oic.if.baseline",
"oic.if.ll",
"oic.if.b"
]
},
{
"href": "/alarms/vs/0",
"rep": {}
},
{
"href": "/selfcheck/vs/0",
"rep": {
"x.com.samsung.da.status": "Ready",
"x.com.samsung.da.result": "Success",
"x.com.samsung.da.error": [
"DA_ERROR_NONE"
],
"x.com.samsung.da.supportedActions": [
"Start"
]
}
},
{
"href": "/energy/consumption/vs/0",
"rep": {
"x.com.samsung.da.cumulativeConsumption": "53539",
"x.com.samsung.da.cumulativePower": "174590",
"x.com.samsung.da.cumulativeUnit": "Wh",
"x.com.samsung.da.instantaneousPower": "4",
"x.com.samsung.da.instantaneousPowerUnit": "W",
"x.com.samsung.da.cumulativeSavedPower": "0"
}
},
{
"href": "/mode/vs/0",
"rep": {
"x.com.samsung.da.supportedModes": [
"HOMECARE_WIZARD_V2",
"ENERGY_REPORT_MODEL",
"18K_KIMCHI_OUTDOOR_CONTROL"
],
"x.com.samsung.da.modes": [
"KIMCHI_KIMCHI_STORAGE_NORMAL",
"KIMCHI_RIPE_REMAIN_[0]:[0]",
"KIMCHIT_BOX_COUNT_[0]",
"KIMCHIM_BOX_COUNT_[0]",
"KIMCHIB_BOX_COUNT_[0]",
"KIMCHI_BOX_COUNT_[8]"
],
"x.com.samsung.da.supportedOptions": [
"KIMCHI_KIMCHI_STORAGE_NORMAL_[0]:[0]",
"KIMCHI_KIMCHI_STORAGE_COLD_[0]:[0]",
"KIMCHI_KIMCHI_STORAGE_WARM_[0]:[0]",
"KIMCHI_KIMCHI_STORAGE_CRUNFCH_[0]:[0]",
"KIMCHI_KIMCHI_STORAGE_BUY_[0]:[0]",
"KIMCHI_STORAGE_FRIDGE_[0]:[0]",
"KIMCHI_STORAGE_FREEZER_[0]:[0]",
"KIMCHI_KIMCHI_RIPE_NORMAL_TEMP_[2]:[12]",
"KIMCHI_KIMCHI_RIPE_LOW_TEMP_[5]:[17]"
]
}
},
{
"href": "/mode/0",
"rep": {
"supportedModes": [
"HOMECARE_WIZARD_V2",
"ENERGY_REPORT_MODEL",
"18K_KIMCHI_OUTDOOR_CONTROL"
],
"modes": [
"KIMCHI_KIMCHI_STORAGE_NORMAL",
"KIMCHI_RIPE_REMAIN_[0]:[0]",
"KIMCHIT_BOX_COUNT_[0]",
"KIMCHIM_BOX_COUNT_[0]",
"KIMCHIB_BOX_COUNT_[0]",
"KIMCHI_BOX_COUNT_[8]"
]
}
},
{
"href": "/realtimenotiforclient/vs/0",
"rep": {
"x.com.samsung.da.timeforshortnoti": "0",
"x.com.samsung.da.periodicnotisubscription": "true"
}
},
{
"href": "/information/vs/0",
"rep": {
"x.com.samsung.da.modelNum": "TP1X_REF_21K|00168041|10010022011713004101800031010000",
"x.com.samsung.da.description": "TP1X_REF_21K",
"x.com.samsung.da.serialNum": "**REDACTED**",
"x.com.samsung.da.otnDUID": "**REDACTED**",
"x.com.samsung.da.diagProtocolType": "BLE_OCF",
"x.com.samsung.da.diagLogType": [
"errCode",
"dump"
],
"x.com.samsung.da.diagDumpType": "file",
"x.com.samsung.da.diagEndPoint": "SSM",
"x.com.samsung.da.diagMnid": "0AJT",
"x.com.samsung.da.diagSetupid": "CO0",
"x.com.samsung.da.diagMinVersion": "3.0",
"x.com.samsung.da.diagTsId": "DA01",
"x.com.samsung.da.items": [
{
"x.com.samsung.da.id": "0",
"x.com.samsung.da.description": "WiFi Module",
"x.com.samsung.da.type": "Software",
"x.com.samsung.da.number": "250422",
"x.com.samsung.da.newVersionAvailable": "0"
},
{
"x.com.samsung.da.id": "1",
"x.com.samsung.da.description": "Micom",
"x.com.samsung.da.type": "Firmware",
"x.com.samsung.da.number": "24101006, 23031302, 24102200, FFFFFFFF",
"x.com.samsung.da.newVersionAvailable": "0"
}
]
}
},
{
"href": "/file/information/vs/0",
"rep": {
"x.com.samsung.timeoffset": "+00:00",
"x.com.samsung.supprtedtype": 1
}
},
{
"href": "/doors/vs/0",
"rep": {
"x.com.samsung.da.items": [
{
"x.com.samsung.da.id": "8",
"x.com.samsung.da.description": "Door",
"x.com.samsung.da.openState": "Close"
}
]
}
},
{
"href": "/door/onedoorkimchi/vs/0",
"rep": {
"x.com.samsung.da.openState": "Close"
}
},
{
"href": "/configuration/vs/0",
"rep": {
"x.com.samsung.da.countryCode": "",
"x.com.samsung.da.region": ""
}
},
{
"href": "/drlc/0",
"rep": {
"DRLevel": 2,
"override": false
}
},
{
"href": "/drlc/vs/0",
"rep": {
"x.com.samsung.da.drlcLevel": "2",
"x.com.samsung.da.override": "Not_Supported",
"x.com.samsung.da.durationminutes": "1441",
"x.com.samsung.da.start": "2026-08-06T00:34:47Z",
"x.com.samsung.da.realSaving": "Off"
}
},
{
"href": "/bespoke/vs/0",
"rep": {
"x.com.samsung.da.BespokeProduct": "On"
}
},
{
"href": "/otninformation/vs/0",
"rep": {
"x.com.samsung.da.target": "",
"x.com.samsung.da.newVersionAvailable": "false",
"otnStatus": "None",
"flashingProgress": "",
"otnList": [
{
"type": "WIFI",
"modelId": "A-RFWW-TP1-23-COMMON",
"versions": [
"20250422"
],
"visVersion": "250422"
},
{
"type": "Micom",
"modelId": "02120016804100168441",
"versions": [
"24101006",
"23031302"
],
"visVersion": "241010"
},
{
"type": "Micom",
"modelId": "021270659241FFFFFFFF",
"versions": [
"24102200",
"FFFFFFFF"
],
"visVersion": "241022"
}
]
}
},
{
"href": "/status/lock/vs/0",
"rep": {
"x.com.samsung.da.ado.voicecontrol": "Off",
"x.com.samsung.da.device.sound": "On"
}
},
{
"href": "/status/kimchi/onedoor/vs/0",
"rep": {
"x.com.samsung.da.currentMode": "KIMCHI_STORAGE_NORMAL",
"x.com.samsung.da.ripeStatus": "Off",
"x.com.samsung.da.ripeRemaintime": "0",
"x.com.samsung.da.rackCount": "8",
"x.com.samsung.da.ripeTotaltime": "0",
"x.com.samsung.da.supportMode": [
"KIMCHI_STORAGE_NORMAL",
"KIMCHI_STORAGE_COLD",
"KIMCHI_STORAGE_WARM",
"KIMCHI_STORAGE_CRUNFCH",
"KIMCHI_STORAGE_BUY",
"STORAGE_FRIDGE",
"STORAGE_FREEZER",
"KIMCHI_RIPE_NORMAL_TEMP",
"KIMCHI_RIPE_LOW_TEMP",
"NEWMODE_KIMCHI_0000",
"NEWMODE_KIMCHI_0000",
"NEWMODE_KIMCHI_0000"
]
}
},
{
"href": "/autodoor/timer/vs/0",
"rep": {
"x.com.samsung.da.time.desired": "1",
"x.com.samsung.da.time.supportedOptions": [
"1",
"2",
"3",
"4",
"5",
"6"
]
}
},
{
"href": "/autodoor/kimchi/vs/0",
"rep": {
"x.com.samsung.da.ado.openOptions": [
"Single"
]
}
},
{
"href": "/connectionconfig/vs/0",
"rep": {
"autoReconnectionMinVersion": "1.0",
"autoReconnection": "true",
"autoReconnectionProtocolType": [
"ble_ocf",
null
],
"supportedWiFiAuthType": [
"OPEN",
"WEP",
"WPA-PSK",
"WPA2-PSK",
"SAE"
],
"supportedWiFiCryptoType": [
"TKIP",
"AES",
"WEP-64",
"WEP-128"
],
"supportedWiFiFreq": [
"2.4G"
],
"calmConnectionCare": {
"version": "1.0",
"role": [
"things"
]
}
}
},
{
"href": "/timezone/vs/0",
"rep": {
"timezoneid": "Asia/Seoul",
"offset": "+09:00",
"DST": "OFF"
}
},
{
"href": "/wirelessinfo/vs/0",
"rep": {
"macaddressWiFi": "**REDACTED**",
"macaddressBLE": "**REDACTED**"
}
},
{
"href": "/quickcontrol/info/vs/0",
"rep": {
"supportedVersion": "1.0"
}
}
]
}
+466
View File
@@ -0,0 +1,466 @@
{
"device0": [
{
"rt": [
"x.com.samsung.devcol",
"oic.wk.col"
],
"if": [
"oic.if.baseline",
"oic.if.ll",
"oic.if.b"
]
},
{
"href": "/alarms/vs/0",
"rep": {
"href": "/alarms/vs/0",
"rt": [
"x.com.samsung.da.alarms"
],
"if": [
"oic.if.baseline",
"oic.if.a"
]
}
},
{
"href": "/autodoor/winecellar/vs/0",
"rep": {
"x.com.samsung.da.ado.openOptions": [
"Single"
],
"href": "/autodoor/winecellar/vs/0"
}
},
{
"href": "/autodoor/timer/vs/0",
"rep": {
"x.com.samsung.da.time.desired": "1",
"x.com.samsung.da.time.supportedOptions": [
"1",
"2",
"3",
"4",
"5",
"6"
],
"href": "/autodoor/timer/vs/0"
}
},
{
"href": "/bespoke/vs/0",
"rep": {
"x.com.samsung.da.BespokeProduct": "On",
"href": "/bespoke/vs/0"
}
},
{
"href": "/cabinet/light/total/vs/0",
"rep": {
"x.com.samsung.da.lightLevel": "100",
"x.com.samsung.da.lightResolution": "1",
"x.com.samsung.da.lightControl.off.include": "Off",
"x.com.samsung.da.lightControl": "Off",
"x.com.samsung.da.timeout.desired": "0",
"x.com.samsung.da.timeout.supportedList": [
"0",
"15",
"30",
"60"
],
"href": "/cabinet/light/total/vs/0",
"rt": [
"x.com.samsung.da.cabinetlight"
],
"if": [
"oic.if.baseline",
"oic.if.a"
]
}
},
{
"href": "/configuration/vs/0",
"rep": {
"x.com.samsung.da.region": "",
"x.com.samsung.da.countryCode": "",
"href": "/configuration/vs/0"
}
},
{
"href": "/door/winecellar/vs/0",
"rep": {
"x.com.samsung.da.openState": "Close",
"href": "/door/winecellar/vs/0",
"rt": [
"x.com.samsung.da.doorwinecellar"
],
"if": [
"oic.if.baseline",
"oic.if.s"
]
}
},
{
"href": "/doors/vs/0",
"rep": {
"x.com.samsung.da.items": [
{
"x.com.samsung.da.openState": "Close",
"x.com.samsung.da.id": "9",
"x.com.samsung.da.description": "Door"
}
],
"href": "/doors/vs/0"
}
},
{
"href": "/drlc/vs/0",
"rep": {
"x.com.samsung.da.drlcLevel": "2",
"x.com.samsung.da.override": "Not_Supported",
"x.com.samsung.da.durationminutes": "1345",
"x.com.samsung.da.start": "2026-08-06T02:08:48Z",
"x.com.samsung.da.realSaving": "On",
"href": "/drlc/vs/0"
}
},
{
"href": "/energy/consumption/vs/0",
"rep": {
"x.com.samsung.da.cumulativeConsumption": "19073",
"x.com.samsung.da.instantaneousPower": "5",
"x.com.samsung.da.cumulativePower": "210483",
"x.com.samsung.da.cumulativeSavedPower": "15696",
"x.com.samsung.da.cumulativeUnit": "Wh",
"x.com.samsung.da.instantaneousPowerUnit": "W",
"href": "/energy/consumption/vs/0"
}
},
{
"href": "/file/information/vs/0",
"rep": {
"x.com.samsung.timeoffset": "+00:00",
"x.com.samsung.supprtedtype": 1,
"href": "/file/information/vs/0"
}
},
{
"href": "/filter/deodorfilter/vs/0",
"rep": {
"x.com.samsung.da.filterUsage": "-1",
"x.com.samsung.da.filterUsageResolution": "1",
"x.com.samsung.da.filterResetType": [
"replaceable"
],
"x.com.samsung.da.filterStatus": "normal",
"href": "/filter/deodorfilter/vs/0"
}
},
{
"href": "/information/vs/0",
"rep": {
"x.com.samsung.da.modelNum": "TP1X_REF_21K|00146141|000B0020001513924100000011000000",
"x.com.samsung.da.description": "TP1X_REF_21K",
"x.com.samsung.da.serialNum": "**REDACTED**",
"x.com.samsung.da.otnDUID": "**REDACTED**",
"x.com.samsung.da.diagDumpType": "file",
"x.com.samsung.da.diagEndPoint": "SSM",
"x.com.samsung.da.diagLogType": [
"errCode",
"dump"
],
"x.com.samsung.da.diagMnid": "0AJT",
"x.com.samsung.da.diagSetupid": "531",
"x.com.samsung.da.diagProtocolType": "WIFI_HTTPS",
"x.com.samsung.da.diagMinVersion": "1.0",
"x.com.samsung.da.items": [
{
"x.com.samsung.da.id": "0",
"x.com.samsung.da.description": "WiFi Module",
"x.com.samsung.da.type": "Software",
"x.com.samsung.da.number": "260619",
"x.com.samsung.da.newVersionAvailable": "0"
},
{
"x.com.samsung.da.id": "1",
"x.com.samsung.da.description": "Micom",
"x.com.samsung.da.type": "Firmware",
"x.com.samsung.da.number": "24102313, 2201030E",
"x.com.samsung.da.newVersionAvailable": "0"
}
],
"href": "/information/vs/0"
}
},
{
"href": "/status/lock/vs/0",
"rep": {
"x.com.samsung.da.ado.voicecontrol": "Off",
"x.com.samsung.da.ado.soundcontrol": "On",
"href": "/status/lock/vs/0",
"rt": [
"x.com.samsung.da.lockstatus"
],
"if": [
"oic.if.baseline",
"oic.if.a"
]
}
},
{
"href": "/mode/vs/0",
"rep": {
"x.com.samsung.da.modes": [
"AIRFILTER_DISABLE"
],
"x.com.samsung.da.supportedModes": [
"HOMECARE_WIZARD_V2",
"ENERGY_REPORT_MODEL",
"WINE_T_TOTRACK_[6]",
"WINE_T_BOTTLE_RACK_[7]",
"WINE_B_TOTRACK_[4]",
"WINE_B_BOTTLE_RACK_[7]",
"WINE_PRESENTATION_[6]",
"WINE_BTM_BOTTLE_[20]",
"WINE_PANTRY_BOTTLE_[5]"
],
"href": "/mode/vs/0",
"rt": [
"x.com.samsung.da.mode"
],
"if": [
"oic.if.baseline",
"oic.if.a"
]
}
},
{
"href": "/realtimenotiforclient/vs/0",
"rep": {
"x.com.samsung.da.timeforshortnoti": "0",
"x.com.samsung.da.periodicnotisubscription": "true",
"href": "/realtimenotiforclient/vs/0"
}
},
{
"href": "/runningmode/vs/0",
"rep": {
"x.com.samsung.da.runningMode": 0,
"href": "/runningmode/vs/0"
}
},
{
"href": "/selfcheck/vs/0",
"rep": {
"x.com.samsung.da.supportedActions": [
"Start"
],
"x.com.samsung.da.status": "Ready",
"x.com.samsung.da.result": "Success",
"x.com.samsung.da.error": [
"ErrorCode_None"
],
"href": "/selfcheck/vs/0"
}
},
{
"href": "/temperature/desired/winecellar/top/vs/0",
"rep": {
"temperature": 13.0,
"range": [
4.0,
18.0
],
"units": "C",
"href": "/temperature/desired/winecellar/top/vs/0",
"rt": [
"oic.r.temperature"
],
"if": [
"oic.if.baseline",
"oic.if.a"
]
}
},
{
"href": "/temperature/desired/winecellar/bottom/vs/0",
"rep": {
"temperature": 7.0,
"range": [
4.0,
18.0
],
"units": "C",
"href": "/temperature/desired/winecellar/bottom/vs/0",
"rt": [
"oic.r.temperature"
],
"if": [
"oic.if.baseline",
"oic.if.a"
]
}
},
{
"href": "/temperatures/vs/0",
"rep": {
"x.com.samsung.da.items": [
{
"x.com.samsung.da.id": "2",
"x.com.samsung.da.description": "WineCellar-top",
"x.com.samsung.da.desired": "13",
"x.com.samsung.da.current": "13",
"x.com.samsung.da.maximum": "18",
"x.com.samsung.da.minimum": "4",
"x.com.samsung.da.unit": "Celsius"
},
{
"x.com.samsung.da.id": "3",
"x.com.samsung.da.description": "WineCellar-bottom",
"x.com.samsung.da.desired": "7",
"x.com.samsung.da.current": "7",
"x.com.samsung.da.maximum": "18",
"x.com.samsung.da.minimum": "4",
"x.com.samsung.da.unit": "Celsius"
}
],
"href": "/temperatures/vs/0"
}
},
{
"href": "/information/winecellar/vs/0",
"rep": {
"x.com.samsung.da.tbl.revision": "1",
"href": "/information/winecellar/vs/0"
}
},
{
"href": "/status/winecellar/pantry/one/vs/0",
"rep": {
"x.com.samsung.da.mode": "Fruit",
"x.com.samsung.range": [
"4",
"13"
],
"x.com.samsung.da.room": "0x10",
"x.com.samsung.da.name": "MULTI_PANTRY",
"x.com.samsung.da.unit": "Celsius",
"x.com.samsung.da.supportedOptions": [
"Processed_Meat",
"Cheese",
"Nuts",
"Fruit",
"Wine"
],
"href": "/status/winecellar/pantry/one/vs/0"
}
},
{
"href": "/otninformation/vs/0",
"rep": {
"x.com.samsung.da.target": "",
"x.com.samsung.da.newVersionAvailable": "false",
"otnStatus": "None",
"flashingProgress": "0",
"otnCompleteDate": "noHistory",
"scheduledTime": "None",
"swVersionInfo": {
"platform": "Tizen Lite",
"oneUiVersion": "7.0 Refrigerator",
"osVersion": "4.0"
},
"otnList": [
{
"type": "WIFI",
"modelId": "A-RFWW-TP1-24-T4-RE2",
"versions": [
"20260619"
],
"visVersion": "260619"
},
{
"type": "Micom",
"modelId": "02900014614100146441",
"versions": [
"24102313",
"2201030E"
],
"visVersion": "241023"
}
]
}
},
{
"href": "/timezone/vs/0",
"rep": {
"timezoneid": "Asia/Seoul",
"offset": "+09:00",
"DST": "OFF"
}
},
{
"href": "/connectionconfig/vs/0",
"rep": {
"autoReconnectionMinVersion": "1.0",
"autoReconnection": "true",
"autoReconnectionProtocolType": [
"helper_hotspot",
"ble_ocf"
],
"supportedWiFiAuthType": [
"OPEN",
"WEP",
"WPA-PSK",
"WPA2-PSK",
"SAE"
],
"supportedWiFiCryptoType": [
"TKIP",
"AES",
"WEP-64",
"WEP-128"
],
"supportedWiFiFreq": [
"2.4G"
],
"calmConnectionCare": {
"version": "1.0",
"role": [
"things"
]
}
}
},
{
"href": "/wirelessinfo/vs/0",
"rep": {
"macaddressWiFi": "**REDACTED**",
"macaddressBLE": "**REDACTED**",
"connectedApSsid": "Home_IoT"
}
},
{
"href": "/quickcontrol/info/vs/0",
"rep": {
"supportedVersion": "1.0"
}
},
{
"href": "/dginformation/vs/0",
"rep": {
"enrolmentstatus": "Unknown",
"devicestate": "Unknown",
"lockstatus": "Unknown",
"nextduedate": "",
"workingminutes": 0,
"paymentinfo": {
"emiplan": "Unknown",
"currency": "Unknown",
"totalemi": 0,
"totalemipaid": 0
}
}
}
]
}
+58
View File
@@ -1407,6 +1407,64 @@ def test_registry_reproduces_golden_state_keys_for_refrigerator_tp1x_ref_21k_def
)
def test_registry_reproduces_golden_state_keys_for_refrigerator_tp1x_ref_21k_autodoor():
"""TP1X_REF_21K, single-freezer-door Auto Door Open variant (issue
#328): /autodoor/single/vs/0 + /autodoor/timer/vs/0, plus
STATUS_LOCK's ado.voicecontrol sibling toggle."""
from tests.conftest import _load_device
resources = _load_device("refrigerator_tp1x_ref_21k_autodoor")
golden = json.loads((GOLDEN / "refrigerator_tp1x_ref_21k_autodoor.json").read_text())
state_keys = _new_state_keys("refrigerator_tp1x_ref_21k_autodoor", resources)
assert set(state_keys) == set(golden["state_keys"]), (
f"state_keys mismatch:\n"
f" extra: {sorted(set(state_keys) - set(golden['state_keys']))}\n"
f" missing: {sorted(set(golden['state_keys']) - set(state_keys))}"
)
def test_registry_reproduces_golden_state_keys_for_refrigerator_tp1x_ref_21k_kimchi():
"""Kimchi-refrigerator Auto Door Open variant (issue #328) -- resolves
via /oic/d's oic.d.krefrigerator, not modelNum (the board is the same
TP1X_REF_21K as the regular fridge, so only the OCF type tells them
apart before checking hrefs)."""
from tests.conftest import _load_device
resources = _load_device("refrigerator_tp1x_ref_21k_kimchi")
golden = json.loads((GOLDEN / "refrigerator_tp1x_ref_21k_kimchi.json").read_text())
state_keys = _new_state_keys(
"refrigerator_tp1x_ref_21k_kimchi",
resources,
device_types=("oic.wk.d", "oic.d.krefrigerator"),
)
assert set(state_keys) == set(golden["state_keys"]), (
f"state_keys mismatch:\n"
f" extra: {sorted(set(state_keys) - set(golden['state_keys']))}\n"
f" missing: {sorted(set(golden['state_keys']) - set(state_keys))}"
)
def test_registry_reproduces_golden_state_keys_for_refrigerator_winecellar():
"""Wine-cellar refrigerator variant (issue #328) -- resolves via /oic/d's
x.com.st.d.winecellar, same TP1X_REF_21K board as the other two. Adds
the deodorizing filter at its own href, the multi-compartment pantry
select, and the table-revision info resource."""
from tests.conftest import _load_device
resources = _load_device("refrigerator_winecellar")
golden = json.loads((GOLDEN / "refrigerator_winecellar.json").read_text())
state_keys = _new_state_keys(
"refrigerator_winecellar",
resources,
device_types=("oic.wk.d", "x.com.st.d.winecellar"),
)
assert set(state_keys) == set(golden["state_keys"]), (
f"state_keys mismatch:\n"
f" extra: {sorted(set(state_keys) - set(golden['state_keys']))}\n"
f" missing: {sorted(set(golden['state_keys']) - set(state_keys))}"
)
def test_resources_from_batch_preferred_over_flat():
from tests.conftest import _resources_from_dump
@@ -0,0 +1,71 @@
"""Auto Door Open (issue #328, TP1X_REF_21K single-freezer-door variant).
`/status/lock/vs/0`'s ado.devicecontrol switch was already modeled
(STATUS_LOCK.auto_door_opener); this dump adds the paired voice-feedback
toggle, the door-hold timer, and the per-variant capability declaration
href -- see fridge.py's AUTO_DOOR_TIMER/AUTO_DOOR_SINGLE comments.
"""
from custom_components.localthings.registry.adapter import flatten
from custom_components.localthings.registry.by_type import for_device_by_model
from custom_components.localthings.registry.capabilities import fridge
from custom_components.localthings.registry.discovery import discover
from tests.conftest import _load_device
FIXTURE = "refrigerator_tp1x_ref_21k_autodoor"
def _fridge():
resources = _load_device(FIXTURE)
info = resources["/information/vs/0"]
reg = for_device_by_model(
info["x.com.samsung.da.modelNum"], info["x.com.samsung.da.description"]
)
return reg, resources
def _state():
reg, resources = _fridge()
bound = discover(resources, reg.capabilities, reg.pattern_capabilities)
return flatten(bound, resources)
def test_resolves_to_refrigerator_registry():
reg, _ = _fridge()
assert reg is not None and reg.name == "refrigerator"
def test_no_unbound_hrefs():
reg, resources = _fridge()
unbound = []
discover(resources, reg.capabilities, reg.pattern_capabilities, log=unbound.append)
assert unbound == []
def test_auto_door_voice_control_reads_status_lock():
state = _state()
assert state["auto_door_opener"] is False
assert state["auto_door_voice_control"] is False
# This variant's dump has no ado.soundcontrol field -- gated absent.
assert "auto_door_sound_control" not in state
def test_auto_door_timer_reads_its_own_options():
desc = next(e for e in fridge.AUTO_DOOR_TIMER.entities if e.key == "auto_door_timer")
rep = {
"x.com.samsung.da.time.desired": "1",
"x.com.samsung.da.time.supportedOptions": ["1", "2", "3", "4", "5", "6"],
}
assert desc.value_fn(rep["x.com.samsung.da.time.desired"]) == "1"
assert desc.options_field == "x.com.samsung.da.time.supportedOptions"
assert desc.write_fn is not None
assert desc.write_fn("3", rep) == (
["autodoor", "timer", "vs", "0"],
{"x.com.samsung.da.time.desired": "3"},
)
def test_auto_door_single_variant_href_bound_with_no_entities():
"""/autodoor/single/vs/0 only ever declares openOptions=['Single'] --
no paired current/desired field to expose, so it's coverage-only."""
assert fridge.AUTO_DOOR_SINGLE.entities == ()
@@ -0,0 +1,54 @@
"""Kimchi-refrigerator Auto Door Open variant (issue #328,
oic.d.krefrigerator device type -- TP1X_REF_21K board, single kimchi
compartment). Same STATUS_LOCK/AUTO_DOOR_TIMER shape as the regular
TP1X_REF_21K, at the kimchi-specific /autodoor/kimchi/vs/0 declaration
href.
"""
from custom_components.localthings.registry.adapter import flatten
from custom_components.localthings.registry.by_type import for_device_by_oic_type, resolve
from custom_components.localthings.registry.capabilities import fridge
from custom_components.localthings.registry.discovery import discover
from tests.conftest import _load_device
FIXTURE = "refrigerator_tp1x_ref_21k_kimchi"
DEVICE_TYPES = ("oic.wk.d", "oic.d.krefrigerator")
def _fridge():
resources = _load_device(FIXTURE)
reg = resolve(resources, device_types=DEVICE_TYPES)
return reg, resources
def _state():
reg, resources = _fridge()
bound = discover(resources, reg.capabilities, reg.pattern_capabilities)
return flatten(bound, resources)
def test_resolves_via_oic_type():
reg = for_device_by_oic_type(DEVICE_TYPES)
assert reg is not None and reg.name == "refrigerator"
def test_resolves_to_refrigerator_registry():
reg, _ = _fridge()
assert reg is not None and reg.name == "refrigerator"
def test_no_unbound_hrefs():
reg, resources = _fridge()
unbound = []
discover(resources, reg.capabilities, reg.pattern_capabilities, log=unbound.append)
assert unbound == []
def test_auto_door_opener_present():
state = _state()
assert "auto_door_opener" in state
assert "auto_door_timer" in state
def test_auto_door_kimchi_variant_href_bound_with_no_entities():
assert fridge.AUTO_DOOR_KIMCHI.entities == ()
@@ -0,0 +1,78 @@
"""Wine-cellar refrigerator variant (issue #328, x.com.st.d.winecellar
device type -- RW33C99B1TFG-class, TP1X_REF_21K board). Auto Door Open's
winecellar-specific declaration href, a deodorizing filter reported at a
different href than the regular AIR_FILTER, a multi-compartment pantry
select, and a table-revision info resource -- all new coverage this dump
surfaced.
"""
from custom_components.localthings.registry.adapter import flatten
from custom_components.localthings.registry.by_type import for_device_by_oic_type, resolve
from custom_components.localthings.registry.capabilities import fridge
from custom_components.localthings.registry.discovery import discover
from tests.conftest import _load_device
FIXTURE = "refrigerator_winecellar"
DEVICE_TYPES = ("oic.wk.d", "x.com.st.d.winecellar")
def _fridge():
resources = _load_device(FIXTURE)
reg = resolve(resources, device_types=DEVICE_TYPES)
return reg, resources
def _state():
reg, resources = _fridge()
bound = discover(resources, reg.capabilities, reg.pattern_capabilities)
return flatten(bound, resources)
def test_resolves_via_oic_type():
reg = for_device_by_oic_type(DEVICE_TYPES)
assert reg is not None and reg.name == "refrigerator"
def test_no_unbound_hrefs():
reg, resources = _fridge()
unbound = []
discover(resources, reg.capabilities, reg.pattern_capabilities, log=unbound.append)
assert unbound == []
def test_auto_door_sound_control_present_here_only():
"""This variant's dump is the only one that carries
ado.soundcontrol -- the other TP1X_REF_21K auto-door fixtures don't."""
state = _state()
assert state["auto_door_sound_control"] is True
assert state["auto_door_voice_control"] is False
def test_deodor_filter_reuses_air_filter_shape():
"""Same entities as fridge.AIR_FILTER (see its own already-confirmed
percentage-not-raw-count reasoning), bound at this variant's own href."""
assert fridge.DEODOR_FILTER.entities is fridge.AIR_FILTER.entities
state = _state()
assert state["air_filter_status"] == "normal"
# The device's own sentinel, relayed as-is -- not a real 0-100 reading
# on this unit, and no second dump to say what else -1 could mean.
assert state["air_filter_usage"] == -1
def test_winecellar_pantry_zone_mode_options_and_write():
desc = next(
e for e in fridge.WINECELLAR_PANTRY_ZONE.entities if e.key == "winecellar_pantry_zone_mode"
)
assert desc.options_field == "x.com.samsung.da.supportedOptions"
assert desc.write_fn is not None
assert desc.write_fn("Cheese", {}) == (
["status", "winecellar", "pantry", "one", "vs", "0"],
{"x.com.samsung.da.mode": "Cheese"},
)
state = _state()
assert state["winecellar_pantry_zone_mode"] == "Fruit"
def test_winecellar_variant_and_info_hrefs_bound_with_no_entities():
assert fridge.AUTO_DOOR_WINECELLAR.entities == ()
assert fridge.WINECELLAR_INFO.entities == ()