Request support for Homend Royaltea
Log message
2025-06-07 13:33:51.450 INFO (SyncWorker_2) [custom_components.tuya_local.device] Creating device:
2025-06-07 13:33:51.451 DEBUG (SyncWorker_0) [custom_components.tuya_local.helpers.device_config] Loaded device config homend_kettle.yaml
2025-06-07 13:33:51.452 DEBUG (SyncWorker_5) [custom_components.tuya_local.helpers.device_config] Loaded device config homend_kettle.yaml
2025-06-07 13:33:51.452 DEBUG (SyncWorker_1) [custom_components.tuya_local.helpers.device_config] Loaded device config homend_kettle.yaml
2025-06-07 13:33:51.453 DEBUG (MainThread) [custom_components.tuya_local.helpers.config] Adding sensor for sensor_status
2025-06-07 13:33:51.453 DEBUG (MainThread) [custom_components.tuya_local.device] Starting monitor loop for Royaltea Smart
2025-06-07 13:33:51.453 DEBUG (MainThread) [custom_components.tuya_local.device] Setting protocol version for Royaltea Smart to 3.3
2025-06-07 13:33:51.453 DEBUG (MainThread) [custom_components.tuya_local.helpers.config] Adding water_heater for water_heater_kettle
2025-06-07 13:33:51.471 DEBUG (MainThread) [custom_components.tuya_local.device] Royaltea Smart received {"1": true, "2": 101, "4": "90", "14": 120, "16": "temp_boiling", "101": "off", "104": "AR5", "full_poll": true}
Product ID
ixclh0ml02riwbdz
Product Name
Royaltea Smart
DPS information
{
"model": {
"modelId": "000003rdbm",
"services": [{
"actions": [],
"code": "",
"description": "",
"events": [],
"name": "默认服务",
"properties": [{
"abilityId": 1,
"accessMode": "rw",
"code": "start",
"description": "【必选】控制设备启动暂停开关",
"extensions": {
"iconName": "icon-dp_play",
"attribute": "1024"
},
"name": "工作开关",
"typeSpec": {
"type": "bool"
}
}, {
"abilityId": 2,
"accessMode": "ro",
"code": "temp_current",
"description": "【非必选】当前温度显示,该DP点用于温标为摄氏度使用,未选择该DP点则不展示该功能",
"extensions": {
"iconName": "icon-dp_c",
"attribute": "1024"
},
"name": "Water Temperature",
"typeSpec": {
"type": "value",
"max": 999,
"min": 0,
"scale": 0,
"step": 1,
"unit": "℃"
}
}, {
"abilityId": 4,
"accessMode": "rw",
"code": "temp_setting_quick_c",
"description": "【非必选】快速选择加热到目标温度选项,该DP点枚举值可增、减、改,但修改枚举值名称仅支持为数字,未选则不展示该功能。 如需要修改代表名称,可以前往第四步的拓展中心,多语言管理修改代表值,新增的枚举值所代表的的内容也是在多语言中修改代表值。",
"extensions": {
"iconName": "icon-set",
"attribute": "1024"
},
"name": "Mod",
"typeSpec": {
"type": "enum",
"range": ["50", "65", "85", "90"]
}
}, {
"abilityId": 8,
"accessMode": "rw",
"code": "temp_set",
"description": "【非必选】选择加热到目标温度选项,该DP点数值范围可修改,未选则不展示该功能。",
"extensions": {
"iconName": "icon-set",
"attribute": "1024"
},
"typeSpec": {
"type": "value",
"max": 100,
"min": 0,
"scale": 0,
"step": 1,
"unit": "℃"
}
}, {
"abilityId": 14,
"accessMode": "rw",
"code": "warm_time",
"description": "suyun sıcak tutma süresi",
"extensions": {
"iconName": "icon-dp_time3",
"attribute": "1024"
},
"name": "Warm Time",
"typeSpec": {
"type": "value",
"max": 180,
"min": 15,
"scale": 0,
"step": 15,
"unit": "min"
}
}, {
"abilityId": 15,
"accessMode": "ro",
"code": "status",
"description": "【必选】设备上报工作状态,该DP点枚举值可增减,但不可修改枚举值名称,例如可以删除9,但是不能把9改为其他词,可以增加,仅支持增加数字,未选则不展示该功能。 默认: 1代表:待机中 2代表:加热中 3代表:冷却中 4代表:保温中 5代表:加热到目标温度 6代表:沸腾后冷却到目标温度 7代表:预留1 8代表:预留2 9代表:预留3 如需要修改代表名称,可以前往第四步的拓展中心,多语言管理修改代表值,新增的枚举值所代表的的内容也是在多语言中修改代表值。",
"extensions": {
"iconName": "icon-zhuangtai",
"attribute": "1024"
},
"name": "工作状态",
"typeSpec": {
"type": "enum",
"range": ["standby", "heating", "cooling", "warm", "heating_temp", "boiling_temp", "reserve_1", "reserve_2", "reserve_3"]
}
}, {
"abilityId": 16,
"accessMode": "rw",
"code": "work_type",
"description": "【必选】不可修改、删除、增加枚举值。该DP点用于明确当前工作模式是什么,与所使用的温度设置DP点绑定上报。 例如: 用户选择了90℃直接加热快捷键 APP会下发:该DP点的setting_quick和对应温度的DP点; MCU需要上报:该DP点的setting_quick和对应温度的DP点;",
"extensions": {
"iconName": "icon-dp_mode",
"attribute": "1024"
},
"name": "Mode",
"typeSpec": {
"type": "enum",
"range": ["temp_setting", "temp_boiling", "temp_baby"]
}
}, {
"abilityId": 101,
"accessMode": "rw",
"code": "relay_status",
"description": "",
"extensions": {
"iconName": "icon-zhuangtai",
"attribute": "4096"
},
"name": "Voice",
"typeSpec": {
"type": "enum",
"range": ["off", "on"]
}
}, {
"abilityId": 102,
"accessMode": "rw",
"code": "calisma_modu",
"description": "",
"name": "Modu",
"typeSpec": {
"type": "enum",
"range": ["isit", "sogut"]
}
}, {
"abilityId": 103,
"accessMode": "ro",
"code": "use_time",
"description": "",
"extensions": {
"iconName": "icon-dp_time3",
"attribute": "4096"
},
"name": "使用时间",
"typeSpec": {
"type": "value",
"max": 999999999,
"min": 0,
"scale": 0,
"step": 1,
"unit": "min"
}
}, {
"abilityId": 104,
"accessMode": "rw",
"code": "alarm_ringtone",
"description": "",
"extensions": {
"iconName": "icon-baojing",
"attribute": "4096"
},
"name": "Alarm Ringtone",
"typeSpec": {
"type": "enum",
"range": ["AR0", "AR1", "AR2", "AR3", "AR4", "AR5", "AR6", "AR7", "AR8", "AR9"]
}
}]
}]
}
}
Information about how the device functions
https://www.homend.com.tr/urun/homend-royaltea-1708-konusan-cay-makinesi
There are 3 buttons to select temperature; 65 for heating Baby bottles, 85 for keeping tea warm, 90 for boiling Other temperature set points doesn't work (50C off default)
You can select boiling first then keeping at selected temperature or just heat to selected temperature
It has function to select 15 mins to 180 mins keeping warm
It has alarm sound if you decide to use or turn off completely
The modelId is not the same as product id (I don't know why tuya has so many "id"s). Product id is found in the same API calls that return the local key and other device info, but not the calls that return dps data.
Sorry for the mistake.
Query Device Details in Bulk result is like this; "result": [ { "category": "bh", "custom_name": "", "icon": "smart/icon/bay1630936140785RLyb/a2ec7926220750eea76503b96e550476.png", "id": "", "ip": "", "is_online": true, "lat": "", "local_key": "", "lon": "", "model": "", "name": "Royaltea Smart ", "product_id": "ixclh0ml02riwbdz", "product_name": "Royaltea Smart ", "sub": false, "time_zone": "+03:00", "update_time": 1734433490, "uuid": "" } ]
These are currently all working and all available configurations. (Syncs with app too) There is some misleading unused DPS data, unfortunately.
This configuration has a problem while turning it off. We can select kettle mode (id4) to turn it on for a specific mode, but to turn it off, we need to use operation mode. I tried to make it like the fan speed selector style, but I'm not good with this config style, so I'm stuck. No need for temperature selection ui btw, if we can use just kettle mode (id4) it will be nice
name: Kettle
products:
- id: ixclh0ml02riwbdz
manufacturer: Homend
model: Royaltea
entities:
- entity: water_heater
translation_key: kettle
dps:
- id: 1
type: boolean
name: operation_mode
mapping:
- dps_val: false
value: "off"
- dps_val: true
value: electric
- id: 2
type: integer
name: current_temperature
- entity: select
translation_key: kettle_mode
dps:
- id: 4
type: string
name: option
mapping:
- dps_val: "50"
value: "off"
- dps_val: "65"
value: "infant_formula"
- dps_val: "85"
value: "green_tea"
- dps_val: "90"
value: "black_tea"
- id: 16
type: string
name: temp_mode
hidden: true
- entity: number
name: Keep warm time
translation_key: timer
class: duration
category: config
dps:
- id: 14
type: integer
name: value
unit: min
range:
min: 15
max: 180
mapping:
- step: 15
- entity: select
name: Operation Mode
translation_key: kettle_mode
dps:
- id: 16
type: string
name: option
mapping:
- dps_val: temp_setting
value: Heat to Target
- dps_val: temp_boiling
value: Cool after Boil
- entity: switch
name: Voice
icon: "mdi:account-voice"
category: config
dps:
- id: 101
type: string
name: switch
mapping:
- dps_val: "off"
value: false
- dps_val: "on"
value: true
- entity: sensor
translation_key: status
class: enum
dps:
- id: 104
type: string
name: sensor
mapping:
- dps_val: AR0
value: Unknown 0
- dps_val: AR1
value: Unknown 1
- dps_val: AR2
value: Ready
- dps_val: AR3
value: Cooling
- dps_val: AR4
value: Unknown 4
- dps_val: AR5
value: Heated Water Reminder
- dps_val: AR6
value: Turned Off
- dps_val: AR7
value: Unknown 7
- dps_val: AR8
value: Unknown 8
- dps_val: AR9
value: At Target Temperature