更新时间:2025-05-30 01:56:03下载pdf
本文通过示例为您介绍如何在云开放平台快速开发,实现对智能设备的控制。
仅需两步,玩转涂鸦云开放平台。云开发平台使用流程如下。
项目是 IoT 平台资源的集合,不同云开发项目之间的资源相互隔离。

由于开发者入驻业务正在研发中,目前入驻方式先由开发者将开发者账号(IOT平台注册手机号/邮箱)、企业名称、行业域名(可不提供,使用默认的)交予我们智慧商业平台技术支持,生成入驻信息。

任何接口需要在header中加入如下参数:
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| client_id | String | 是 | 涂鸦云提供的client_id |
| sign | String | 是 | 采用指定签名算法计算出的签名 |
| sign_method | String | 是 | 签名的摘要算法,固定填写HMAC-SHA256 |
| t | Long | 是 | 13位标准时间戳 |
| access_token | String | 否 | 业务接口必传,token相关接口不传 |
| lang | String | 否 | 语种,默认英文(中文:zh;英文:en;日语:ja;韩语:ko) |
您在向云开发平台发送调用请求时,都需要提供签名(Sign)进行身份验证。文本介绍如何构建云开发平台 API 签名。
涂鸦云采用 HMAC-SHA256 方法创建摘要。针对不同的 API,当前提供两套签名算法。
| 参数名 | 参数值 |
|---|---|
| client_id | 1KAD46OrT9HafiKdsXeg |
| secret | 4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC |
| t | 1588925778000 |
| access_token | 3f4eda2bdec17232f67c0b188af3eec1 |
/**
Run the code online with this jsfiddle. Dependent upon an open source js library calledhttp://code.google.com/p/crypto-js/.
**/
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>
<script>
var hash = CryptoJS.HmacSHA256("Message", "secret");
var hashInBase64 = hash.toString().toUpperCase();
document.write(hashInBase64);
</script>
/**
PHP has built in methods for hash_hmac (PHP 5) and base64_encode (PHP 4, PHP 5) resulting in no outside dependencies. Say what you want about PHP but they have the cleanest code for this example.
**/
$s = strtoupper(hash_hmac("sha256", "Message", 'secret'));
echo var_dump($s);
/**
Dependent on Apache Commons Codec to encode in base64.
**/
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class ApiSecurityExample {
public static void main(String[] args) {
try {
String secret = "secret";
String message = "Message";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
byte[] bytes = sha256_HMAC.doFinal(message.getBytes());
String hash = new HexBinaryAdapter().marshal(bytes).toUpperCase();
System.out.println(hash);
}
catch (Exception e){
System.out.println("Error");
}
}
}
using System;
using System.Security.Cryptography;
namespace Test
{
public class MyHmac
{
public static string Encrypt(string message, string secret)
{
secret = secret ?? "";
var encoding = new System.Text.UTF8Encoding();
byte[] keyByte = encoding.GetBytes(secret);
byte[] messageBytes = encoding.GetBytes(message);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hashmessage.Length; i++)
{
builder.Append(hashmessage[i].ToString("x2"));
}
return builder.ToString().ToUpper();
}
}
}
}
| code | msg | 说明 |
|---|---|---|
| 500 | system error,please contact the admin | 系统错误,请联系管理员 |
| 1000 | data not exist | 数据不存在 |
| 1001 | secret invalid | 密钥非法 |
| 1002 | access_token is null | 访问令牌为空 |
| 1003 | grant type invalid | grant type 无效 |
| 1004 | sign invalid | 签名无效 |
| 1005 | Appkey invalid | Appkey 无效 |
| 1006 | not support content type | 不支持的content type |
| 1007 | not support Appkey | 不支持的Appkey,请使用云端key |
| 1010 | token is expired | token过期 |
| 1011 | token invalid | token无效 |
| 1012 | token status is invalid | token状态无效 |
| 1013 | request time is invalid | 请求时间无效 |
| 1100 | params is empty | 参数为空 |
| 1101 | params range invalid | 参数范围无效 |
| 1102 | params is null | 参数为null |
| 1105 | missing the header | 缺少header |
| 1106 | permission deny | 权限非法 |
| 1108 | uri path invalid | 接口地址非法 |
| code | 说明 |
|---|---|
| 10100500 | 内部错误 |
| 10100501; 11100117 | 操作失败 |
| 10101100 | 参数不为空 |
| 10101106 | 无权限操作 |
| 10101105 | 参数体异常 |
| 10101107 | 网络繁忙,请稍后再试 |
| 10101202 | 设备不存在 |
| 10101401 | 房屋不存在 |
| 10101403 | 房屋编号已存在 |
| 10101660 | 用户不存在 |
| 10102700 | 该合作商已绑定该服务商 |
| 10102701 | 合作方和服务商的授权关系不存在 |
| 10102703 | 合作商授权项目关系不存在 |
| 10102711 | 该服务商有未完成施工维修工单,完成后方可解除 |
| 10102712 | 合作状态支持解除授权 |
| 10102713 | 施工商不存在 |
| 10102901 | 地理位置不存在 |
| 10102902 | 操作失败,已达到项目创建最大限制 |
| 10102903 | 项目已存在 |
| 10102904 | 项目不存在 |
| 10102905 | 操作失败,项目存在关联房屋 |
| 10102906 | 操作失败,已达到房屋创建最大限制 |
| 10102907 | 产品不存在 |
| 10102908 | 操作失败,项目不归属于您 |
| 10102909 | 缺少必传参数:Wifi或Zigbee设备品类及数量 |
| 10102910 | 施工状态无效 |
| 10102911 | 维修状态无效 |
| 10101812 | 工单不存在 |
| 10101813 | 施工品类不存在 |
| 10101814 | 设备离线 |
| 10101411 | 场景/自动化不存在 |
| 10103201 | 禁止连续添加两个延迟动作 |
| 10103202 | 延迟不能是最后的动作 |
| 10103203 | 执⾏动作类别只支持dpIssue |
| 10103204 | 功能不支持 |
| 10103205 | 对应的红外码不存在 |
| 10103206 | 不支持设置特定温度的命令 |
| 10103207 | 匹配的红外代码无效 |
| 10103208 | 触发条件类别只支持设备状态 |
| 10103209 | 前置条件规则只支持时间段限制 |
| 10103210 | 操作失败,已达到场景创建最大限制 |
| 10103211 | 操作失败,已达到自动化创建最大限制 |
| 10103212 | 条件不支持 |
| 10103213 | 动作不支持 |
| 11100114 | 参数异常 |
| 11100118 | 数据不存在 |
| 11103001 | 任务不存在 |
| 11103012 | 任务状态不支持重开放 |
| 11103028 | 设备与房屋关系不正确 |
| 11103029 | 施工设备品类异常 |
| 11103037 | 施工拆分设备品类异常 |
| 11103038 | 施工红外设备品类异常 |
| 11103039 | 任务状态不允许删除 |
| 11104000 | 施工人员已被注册 |
| 11104005 | 施工人员不存在 |
| 11104008 | 已达到施工人员创建最大限制 |
| 11106000 | 一个模版只允许存在一个网关 |
| 11106005 | 模版不存在 |
| 11106006 | 模版不允许编辑 |
| 11106012 | 模板中区域名称不能重复 |
| 11106013 | 模板中区域名称不能重复 |
| 11106014 | 模板中自定义设备名称不能重复 |
| 11106015 | 已达到模板区域最大限制 |
| 11106016 | 已达到模板区域位置最大限制 |
| 11113000 | 已达到任务房屋最大限制 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈