Skip to content

Instantly share code, notes, and snippets.

@ninadpchaudhari
Created April 21, 2025 04:11
Show Gist options
  • Save ninadpchaudhari/45671f9fcd54abf05d34158267b33e7d to your computer and use it in GitHub Desktop.
Save ninadpchaudhari/45671f9fcd54abf05d34158267b33e7d to your computer and use it in GitHub Desktop.
Gist on the Tuya Integration for Category "dr" (Heated Blanket) Integration

The Heated Blanket Integration

The documentation about this device on Tuya's developer docs is old, but their device control API can be used to see all about the category.

Exploring the specific case of Sunbeam heated mattress

  • The device follows the instruction set of "dr"
  • It has a product id of : ebb820c3cd7beefe10lhkg
  • It supports a superset of Standard Instruction set, which are not crucial and can be implemented by someone later if required.
  • The device's specs are listed below
Instruction set, request & Screenshots

Request:

curl  --request GET "https://openapi.tuyaus.com/v1.0/iot-03/devices/ebb820c3cd7beefe10lhkg/specification" --header "sign_method: HMAC-SHA256" --header "client_id: <id>" --header "t: 1745208319403" --header "mode: cors" --header "Content-Type: application/json" --header "sign: <sign>" --header "access_token: <token>" 

Response:

{
"result": {
  "category": "dr",
  "functions": [
    {
      "code": "switch",
      "desc": "{}",
      "name": "开关",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "switch_2",
      "desc": "{}",
      "name": "开关",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "level",
      "desc": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}",
      "name": "档位",
      "type": "Enum",
      "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
    },
    {
      "code": "preheat",
      "desc": "{}",
      "name": "是否预热",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "preheat_1",
      "desc": "{}",
      "name": "预热1",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "switch_1",
      "desc": "{}",
      "name": "开关",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "preheat_2",
      "desc": "{}",
      "name": "预热2",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "level_1",
      "desc": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}",
      "name": "档位1",
      "type": "Enum",
      "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
    },
    {
      "code": "level_2",
      "desc": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}",
      "name": "档位2",
      "type": "Enum",
      "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
    }
  ],
  "status": [
    {
      "code": "level_1",
      "name": "档位1",
      "type": "Enum",
      "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
    },
    {
      "code": "level_2",
      "name": "档位2",
      "type": "Enum",
      "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
    },
    {
      "code": "level",
      "name": "档位",
      "type": "Enum",
      "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
    },
    {
      "code": "preheat",
      "name": "预热",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "preheat_2",
      "name": "预热2",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "switch",
      "name": "开关",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "switch_1",
      "name": "开关",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "switch_2",
      "name": "开关",
      "type": "Boolean",
      "values": "{}"
    },
    {
      "code": "preheat_1",
      "name": "预热1",
      "type": "Boolean",
      "values": "{}"
    }
  ]
},
"success": true,
"t": 1745208319969,
"tid": "d72be70f1e6511f0965c7241813d9ca3"
}

Screenshot

image

Fetching Instruction Set for any category in general

  • Instruction set of any general category can be explored by : Device Control API.
  • To try : Tuya IoT hub > Cloud > API Explorer > Select "Smart Home Basic Service" > Expand the "Smart Home Device Control" on the left bar > "Get the instructions set by category"
Request, Output and Screenshots

Screenshot

 Scene Linkage Rules

Request

  curl  --request GET "https://openapi.tuyaus.com/v1.0/functions/dr" --header "sign_method: HMAC-SHA256" --header "client_id: <id>" --header "t: 1745183176265" --header "mode: cors" --header "Content-Type: application/json" --header "sign: <sign>" --header "access_token: <token>" 

Response:

 
{
 "result": {
   "category": "dr",
   "functions": [
     {
       "code": "countdown_set",
       "desc": "countdown set",
       "name": "countdown set",
       "type": "倒计时",
       "values": "{\"range\":[\"cancel\",\"1h\",\"2h\",\"3h\",\"4h\",\"5h\",\"6h\"]}"
     },
     {
       "code": "light",
       "desc": "light",
       "name": "light",
       "type": "灯光",
       "values": "{}"
     },
     {
       "code": "anion",
       "desc": "anion",
       "name": "anion",
       "type": "负离子",
       "values": "{}"
     },
     {
       "code": "child_lock",
       "desc": "child lock",
       "name": "child lock",
       "type": "童锁",
       "values": "{}"
     },
     {
       "code": "eco",
       "desc": "eco",
       "name": "eco",
       "type": "ECO模式",
       "values": "{}"
     },
     {
       "code": "mode",
       "desc": "mode",
       "name": "mode",
       "type": "模式",
       "values": "{\"range\":[\"auto\",\"manual\",\"mites\",\"heating\",\"warm\",\"sleep\",\"high\",\"middle\",\"low\"]}"
     },
     {
       "code": "temp_set",
       "desc": "temp set",
       "name": "temp set",
       "type": "温度设置",
       "values": "{\"unit\":\"\",\"min\":10,\"max\":45,\"scale\":0,\"step\":1}"
     },
     {
       "code": "switch",
       "desc": "switch",
       "name": "switch",
       "type": "开关",
       "values": "{}"
     },
     {
       "code": "preheat",
       "desc": "preheat",
       "name": "preheat",
       "type": "是否预热",
       "values": "{}"
     },
     {
       "code": "switch_2",
       "desc": "switch 2",
       "name": "switch 2",
       "type": "开关2",
       "values": "{}"
     },
     {
       "code": "temp_set_1",
       "desc": "temp set 1",
       "name": "temp set 1",
       "type": "温度设置1",
       "values": "{\"unit\":\"\",\"min\":10,\"max\":45,\"scale\":0,\"step\":1}"
     },
     {
       "code": "temp_set_2",
       "desc": "temp set 2",
       "name": "temp set 2",
       "type": "温度设置2",
       "values": "{\"unit\":\"\",\"min\":10,\"max\":45,\"scale\":0,\"step\":1}"
     },
     {
       "code": "level_1",
       "desc": "level 1",
       "name": "level 1",
       "type": "档位1",
       "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
     },
     {
       "code": "level_2",
       "desc": "level 2",
       "name": "level 2",
       "type": "档位2",
       "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
     },
     {
       "code": "mode_1",
       "desc": "mode 1",
       "name": "mode 1",
       "type": "模式1",
       "values": "{\"range\":[\"auto\",\"manual\",\"mites\",\"heating\",\"warm\",\"sleep\",\"high\",\"middle\",\"low\"]}"
     },
     {
       "code": "mode_2",
       "desc": "mode 2",
       "name": "mode 2",
       "type": "模式2",
       "values": "{\"range\":[\"auto\",\"manual\",\"mites\",\"heating\",\"warm\",\"sleep\",\"high\",\"middle\",\"low\"]}"
     },
     {
       "code": "preheat_1",
       "desc": "preheat 1",
       "name": "preheat 1",
       "type": "预热1",
       "values": "{}"
     },
     {
       "code": "preheat_2",
       "desc": "preheat 2",
       "name": "preheat 2",
       "type": "预热2",
       "values": "{}"
     },
     {
       "code": "countdown_set_1",
       "desc": "countdown set 1",
       "name": "countdown set 1",
       "type": "倒计时1",
       "values": "{\"range\":[\"cancel\",\"1h\",\"2h\",\"3h\",\"4h\",\"5h\",\"6h\"]}"
     },
     {
       "code": "countdown_set_2",
       "desc": "countdown set 2",
       "name": "countdown set 2",
       "type": "倒计时2",
       "values": "{\"range\":[\"cancel\",\"1h\",\"2h\",\"3h\",\"4h\",\"5h\",\"6h\"]}"
     },
     {
       "code": "level",
       "desc": "level",
       "name": "level",
       "type": "档位",
       "values": "{\"range\":[\"level_1\",\"level_2\",\"level_3\",\"level_4\",\"level_5\",\"level_6\",\"level_7\",\"level_8\",\"level_9\",\"level_10\"]}"
     },
     {
       "code": "switch_1",
       "desc": "switch 1",
       "name": "switch 1",
       "type": "开关1",
       "values": "{}"
     }
   ]
 },
 "success": true,
 "t": 1745207977360,
 "tid": "0acf23801e6511f0aceb4e599cb70561"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment