修改规则
接口说明
应用服务器可调用此接口修改物联网平台中指定规则的配置。
调试
您可以在API Explorer中直接运行调试该接口。
URI
| 请求方法 | PUT |
|---|---|
| URI | /v5/iot/{project_id}/rules/{rule_id} |
| 传输协议 | HTTPS |
请求参数
| 名称 | 必选/可选 | 类型 | 位置 | 说明 |
|---|---|---|---|---|
| X-Auth-Token | 必选 | String | Header | 用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 |
| Instance-Id | 可选 | String | Header | 实例ID。物理多租下各实例的唯一标识,一般华为云租户无需携带该参数,仅在物理多租场景下从管理面访问API时需要携带该参数。 |
| project_id | 必选 | String | Path | 项目ID。获取方法请参见 获取项目ID。 |
| rule_id | 必选 | String | Path | 规则ID,用于唯一标识一条规则,在创建规则时由物联网平台分配获得。 |
| name | 必选 | String(1-128) | Body | 规则名称。 |
| description | 可选 | String(256) | Body | 规则的描述信息。 |
| condition_group | 必选 | Body | 规则的条件组,包含简单规则和复杂规则集合。 | |
| actions | 必选 | List<RuleAction> | Body | 规则的动作列表,单个规则最多支持设置10个动作。 |
| rule_type | 必选 | String | Body | 规则的类型
|
| status | 可选 | String | Body | 规则的状态,默认值:active。
|
| app_id | 可选 | String | Body | 资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数指定创建的规则归属到哪个资源空间下,否则创建的规则将会归属到默认资源空间下。 |
| edge_node_ids | 可选 | List<String> | Body | 归属边缘侧节点设备ID列表。 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| conditions | 可选 | List<RuleCondition> | 规则的条件列表,单个规则最多支持设置10个条件。 |
| logic | 可选 | String | 规则条件列表中多个条件之间的逻辑关系,默认值:and。
|
| time_range | 可选 | 规则条件触发的有效时间段。 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| type | 必选 | String | 规则条件的类型,取值范围:
|
| device_property_condition | 可选 | 条件中设备数据类型的信息,当type为DEVICE_DATA时,为必选参数 | |
| device_message_condition | 可选 | 条件中设备消息类型的信息,当type为DEVICE_MESSAGE时,为必选参数 | |
| device_status_condition | 可选 | 条件中设备状态类型的信息,当type为DEVICE_STATUS时,为必选参数 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| device_id | 可选 | String | 设备ID,用于唯一标识一个设备,在注册设备时由物联网平台分配获得。当rule_type为DEVICE_LINKAGE时,该参数值和product_id不能同时为空。如果该参数和product_id同时存在时,以该参数值对应的设备进行条件过滤。 |
| product_id | 可选 | String(128) | 设备关联的产品ID,用于唯一标识一个产品模型,在管理门户导入产品模型后由平台分配获得。当rule_type为DEVICE_LINKAGE时,该参数值和device_id不能同时为空。如果该参数和device_id同时存在时,以device_id参数值对应的设备进行条件过滤。 |
| filters | 可选 | List<PropertyFilter> | 数据过滤条件 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| path | 必选 | String(128) | 设备属性的路径信息,格式:service_id/DataProperty,例如门磁状态为“DoorWindow/status”。多个属性路径之间以逗号分隔。 |
| operator | 必选 | String | 数据比较的操作符,当前支持的操作符有:>,<,>=,<=,=和between:表示数值区间,geo.circle.in:表示圆形区域范围内,geo.circle.out:表示圆形区域范围外。 |
| value | 必选 | String(64) | 数据比较表达式的右值。与数据比较操作符between联用时,右值表示最小值和最大值,用逗号隔开,如“20,30”表示大于等于20小于30。 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| product_id | 可选 | String(128) | 设备关联的产品ID,用于唯一标识一个产品模型,在管理门户导入产品模型后由平台分配获得。 |
| topic | 可选 | String(64) | 产品关联的topic信息,用于过滤消息中指定topic消息。 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| start_time | 必选 | String | 规则条件触发的开始时间,格式:HH:mm。 |
| end_time | 必选 | String | 规则条件触发的结束时间,格式:HH:mm。若结束时间与开始时间一致,则时间为全天。 |
| days_of_week | 可选 | String | 星期列表,以逗号分隔。1代表周日,2代表周一,依次类推,默认为每天。星期列表中的日期为开始时间的日期。 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| type | 必选 | String | 规则动作的类型,取值范围:
|
| addition | 可选 | List<String> | 附加信息,在默认规则执行结果中附加额外内容,仅设备属性和消息类型数据转发规则支持使用,取值范围:PRODUCT_ID |
| dis_forwarding | 可选 | 转发到DIS服务的消息内容。当type为DIS_FORWARDING时,必填。 | |
| obs_forwarding | 可选 | 转发到OBS服务的消息内容。当type为OBS_FORWARDING时,必填。 | |
| roma_forwarding | 可选 | 转发到ROMA Connect服务的消息内容。当type为ROMA_FORWARDING时,必填。 | |
| iota_forwarding | 可选 | 转发到IoTA服务的消息内容。当type为IoTA_FORWARDING时,必填。 | |
| kafka_forwarding | 可选 | 转发到Kafka服务的消息内容。当type为KAFKA_FORWARDING时,必填。 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| region_name | 必选 | String(256) | DIS服务对应的region区域 |
| project_id | 必选 | String(256) | DIS服务对应的projectId信息 |
| stream_name | 可选 | String(256) | DIS服务对应的通道名称,和通道ID参数中至少一个不为空,和通道ID参数都存在时,以通道ID参数值为准。通过调用DIS服务 查询通道列表接口获取。 |
| stream_id | 可选 | String(256) | DIS服务对应的通道ID,和通道名称参数中至少一个不为空,和通道名称参数都存在时,以本参数值为准。通过调用DIS服务 查询通道详情接口获取。 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| region_name | 必选 | String(256) | OBS服务对应的region区域 |
| project_id | 必选 | String(256) | OBS服务对应的projectId信息 |
| bucket_name | 必选 | String(256) | OBS服务对应的桶名称 |
| location | 可选 | String(256) | OBS服务对应桶的区域 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| region_name | 必选 | String(256) | ROMA Connect服务对应的region区域 |
| project_id | 必选 | String(256) | ROMA Connect服务对应的projectId信息 |
| roma_push_type | 可选 | String(256) | ROMA Connect服务对应的推送类型 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| region_name | 必选 | String(256) | IoTA服务对应的region区域 |
| project_id | 必选 | String(256) | IoTA服务对应的projectId信息 |
| 名称 | 必选/可选 | 类型 | 说明 |
|---|---|---|---|
| region_name | 可选 | String(256) | kafka服务对应的region区域 |
| project_id | 可选 | String(256) | kafka服务对应的projectId信息 |
| kafka_addresses | 可选 | List<NetAddress> | kafka服务对应的地址列表 |
| kafka_topic | 可选 | String(256) | kafka服务关联的topic信息。 |
| kafka_username | 可选 | String(256) | kafka服务关联的用户名信息。 |
| kafka_password | 可选 | String(256) | kafka服务关联的密码信息。 |
| kafka_mechanism | 可选 | String | kafka服务关联的鉴权机制。 类型说明: PAAS:非SASL鉴权。 PLAIN:SASL/PLAIN模式。需要填写对应的用户名密码信息。 |
响应参数
| 名称 | 类型 | 说明 |
|---|---|---|
| rule_id | String(128) | 规则id。 |
| name | String(1-128) | 规则名称。 |
| description | String(256) | 规则的描述信息。 |
| condition_group | 规则的条件组,包含简单规则和复杂规则集合。 | |
| actions | List<RuleAction> | 规则的动作列表,单个规则最多支持设置10个动作。 |
| rule_type | String | 规则的类型
|
| status | String | 规则的状态,默认值:active。
|
| app_id | String | 资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数指定创建的规则归属到哪个资源空间下,否则创建的规则将会归属到默认资源空间下。 |
| edge_node_ids | List<String> | 归属边缘侧节点设备ID列表。 |
| last_update_time | String | 规则最后更新时间,使用UTC时区,格式:yyyyMMdd'T'HHmmss'Z'。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| conditions | List<RuleCondition> | 规则的条件列表,单个规则最多支持设置10个条件。 |
| logic | String | 规则条件列表中多个条件之间的逻辑关系,默认值:and。
|
| time_range | 规则条件触发的有效时间段。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| type | String | 规则条件的类型,取值范围:
|
| device_property_condition | 条件中设备数据类型的信息,当type为DEVICE_DATA时,为必选参数 | |
| device_message_condition | 条件中设备消息类型的信息,当type为DEVICE_MESSAGE时,为必选参数 | |
| device_status_condition | 条件中设备状态类型的信息,当type为DEVICE_STATUS时,为必选参数 |
| 名称 | 类型 | 说明 |
|---|---|---|
| device_id | String | 设备ID,用于唯一标识一个设备,在注册设备时由物联网平台分配获得。当rule_type为DEVICE_LINKAGE时,该参数值和product_id不能同时为空。如果该参数和product_id同时存在时,以该参数值对应的设备进行条件过滤。 |
| product_id | String(128) | 设备关联的产品ID,用于唯一标识一个产品模型,在管理门户导入产品模型后由平台分配获得。当rule_type为DEVICE_LINKAGE时,该参数值和device_id不能同时为空。如果该参数和device_id同时存在时,以device_id参数值对应的设备进行条件过滤。 |
| filters | List<PropertyFilter> | 数据过滤条件 |
| 名称 | 类型 | 说明 |
|---|---|---|
| path | String(128) | 设备属性的路径信息,格式:service_id/DataProperty,例如门磁状态为“DoorWindow/status”。多个属性路径之间以逗号分隔。 |
| operator | String | 数据比较的操作符,当前支持的操作符有:>,<,>=,<=,=和between:表示数值区间,geo.circle.in:表示圆形区域范围内,geo.circle.out:表示圆形区域范围外。 |
| value | String(64) | 数据比较表达式的右值。与数据比较操作符between联用时,右值表示最小值和最大值,用逗号隔开,如“20,30”表示大于等于20小于30。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| product_id | String(128) | 设备关联的产品ID,用于唯一标识一个产品模型,在管理门户导入产品模型后由平台分配获得。 |
| topic | String(64) | 产品关联的topic信息,用于过滤消息中指定topic消息。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| start_time | String | 规则条件触发的开始时间,格式:HH:mm。 |
| end_time | String | 规则条件触发的结束时间,格式:HH:mm。若结束时间与开始时间一致,则时间为全天。 |
| days_of_week | String | 星期列表,以逗号分隔。1代表周日,2代表周一,依次类推,默认为每天。星期列表中的日期为开始时间的日期。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| type | String | 规则动作的类型,取值范围:
|
| addition | List<String> | 附加信息,在默认规则执行结果中附加额外内容,仅设备属性和消息类型数据转发规则支持使用,取值范围:PRODUCT_ID |
| dis_forwarding | 转发到DIS服务的消息内容。当type为DIS_FORWARDING时,必填。 | |
| obs_forwarding | 转发到OBS服务的消息内容。当type为OBS_FORWARDING时,必填。 | |
| roma_forwarding | 转发到ROMA Connect服务的消息内容。当type为ROMA_FORWARDING时,必填。 | |
| iota_forwarding | 转发到IoTA服务的消息内容。当type为IoTA_FORWARDING时,必填。 | |
| kafka_forwarding | 转发到Kafka服务的消息内容。当type为KAFKA_FORWARDING时,必填。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| region_name | String(256) | DIS服务对应的region区域 |
| project_id | String(256) | DIS服务对应的projectId信息 |
| stream_name | String(256) | DIS服务对应的通道名称,和通道ID参数中至少一个不为空,和通道ID参数都存在时,以通道ID参数值为准。通过调用DIS服务 查询通道列表接口获取。 |
| stream_id | String(256) | DIS服务对应的通道ID,和通道名称参数中至少一个不为空,和通道名称参数都存在时,以本参数值为准。通过调用DIS服务 查询通道详情接口获取。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| region_name | String(256) | OBS服务对应的region区域 |
| project_id | String(256) | OBS服务对应的projectId信息 |
| bucket_name | String(256) | OBS服务对应的桶名称 |
| location | String(256) | OBS服务对应桶的区域 |
| 名称 | 类型 | 说明 |
|---|---|---|
| region_name | String(256) | ROMA Connect服务对应的region区域 |
| project_id | String(256) | ROMA Connect服务对应的projectId信息 |
| roma_push_type | String(256) | ROMA Connect服务对应的推送类型 |
| 名称 | 类型 | 说明 |
|---|---|---|
| region_name | String(256) | IoTA服务对应的region区域 |
| project_id | String(256) | IoTA服务对应的projectId信息 |
| 名称 | 类型 | 说明 |
|---|---|---|
| region_name | String(256) | kafka服务对应的region区域 |
| project_id | String(256) | kafka服务对应的projectId信息 |
| kafka_addresses | List<NetAddress> | kafka服务对应的地址列表 |
| kafka_topic | String(256) | kafka服务关联的topic信息。 |
| kafka_username | String(256) | kafka服务关联的用户名信息。 |
| kafka_password | String(256) | kafka服务关联的密码信息。 |
| kafka_mechanism | String | kafka服务关联的鉴权机制。 类型说明: PAAS:非SASL鉴权。 PLAIN:SASL/PLAIN模式。需要填写对应的用户名密码信息。 |
请求示例
PUT https://{Endpoint}/v5/iot/{project_id}/rules/{rule_id}
Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********
{
"name" : "string",
"description" : "string",
"condition_group" : {
"time_range" : {
"days_of_week" : "string",
"start_time" : "string",
"end_time" : "string"
},
"logic" : "string",
"conditions" : [ {
"device_status_condition" : {
"status_list" : [ "string" ]
},
"device_property_condition" : {
"device_id" : "string",
"product_id" : "string",
"filters" : [ {
"path" : "string",
"value" : "string",
"operator" : "string"
} ]
},
"type" : "string",
"device_message_condition" : {
"product_id" : "string",
"topic" : "string"
}
} ]
},
"actions" : [ {
"iota_forwarding" : {
"project_id" : "string",
"region_name" : "string"
},
"roma_forwarding" : {
"project_id" : "string",
"region_name" : "string",
"roma_push_type" : "string"
},
"kafka_forwarding" : {
"kafka_mechanism" : "string",
"project_id" : "string",
"kafka_addresses" : [ {
"port" : 0,
"ip" : "string",
"domain" : "string"
} ],
"kafka_username" : "string",
"region_name" : "string",
"kafka_topic" : "string",
"kafka_password" : "string"
},
"obs_forwarding" : {
"project_id" : "string",
"bucket_name" : "string",
"region_name" : "string",
"location" : "string"
},
"type" : "string",
"dis_forwarding" : {
"stream_name" : "string",
"project_id" : "string",
"stream_id" : "string",
"region_name" : "string"
},
"addition" : [ "string" ]
} ],
"rule_type" : "string",
"status" : "string",
"app_id" : "string",
"edge_node_ids" : [ "string" ]
} 响应示例
Status Code: 200 OK
Content-Type: application/json
{
"rule_id" : "string",
"name" : "string",
"description" : "string",
"condition_group" : {
"conditions" : [ {
"type" : "string",
"device_property_condition" : {
"device_id" : "string",
"product_id" : "string",
"filters" : [ {
"path" : "string",
"operator" : "string",
"value" : "string"
} ]
},
"device_message_condition" : {
"product_id" : "string",
"topic" : "string"
},
"device_status_condition" : {
"status_list" : [ "string" ]
}
} ],
"logic" : "string",
"time_range" : {
"start_time" : "string",
"end_time" : "string",
"days_of_week" : "string"
}
},
"actions" : [ {
"type" : "string",
"addition" : [ "string" ],
"dis_forwarding" : {
"region_name" : "string",
"project_id" : "string",
"stream_name" : "string",
"stream_id" : "string"
},
"obs_forwarding" : {
"region_name" : "string",
"project_id" : "string",
"bucket_name" : "string",
"location" : "string"
},
"roma_forwarding" : {
"region_name" : "string",
"project_id" : "string",
"roma_push_type" : "string"
},
"iota_forwarding" : {
"region_name" : "string",
"project_id" : "string"
},
"kafka_forwarding" : {
"region_name" : "string",
"project_id" : "string",
"kafka_addresses" : [ {
"ip" : "string",
"port" : 0,
"domain" : "string"
} ],
"kafka_topic" : "string",
"kafka_username" : "string",
"kafka_password" : "string",
"kafka_mechanism" : "string"
}
} ],
"rule_type" : "string",
"status" : "string",
"app_id" : "string",
"edge_node_id" : [ "string" ],
"last_update_time" : "string"
} 错误码
| HTTP状态码 | 错误码 | 错误码英文描述 | 错误码中文描述 | 处理建议 |
|---|---|---|---|---|
| 400 | IOTDA.000006 | Invalid input data. | 请求参数不合法 | 请排查请求参数是否符合华为云文档要求。 |
| IOTDA.001001 | Invalid input for this application. | 应用参数不合法 | 请排查请求参数是否符合华为云文档要求。 | |
| IOTDA.010000 | Invalid input for this rule. | 规则参数不合法 | 请排查请求参数是否符合华为云文档要求。 | |
| IOTDA.010004 | Invalid parameter in the rule condition. | 规则条件不合法 | 请排查请求参数是否符合华为云文档要求 | |
| IOTDA.010005 | Invalid parameter in the rule action. | 规则动作参数不合法 | 请排查请求中action参数是否符合华为云文档要求。 | |
| IOTDA.010006 | Repeated condition ID in the same rule. | 规则条件ID重复 | 请重新命名规则条件ID后重试。 | |
| IOTDA.010007 | Repeated action ID in the same rule. | 规则动作ID重复 | 请重新命名规则动作ID后重试。 | |
| IOTDA.010008 | The device with this condition does not exist. | 规则条件中对应的设备不存在 | 请检查请求参数是否正确或设备在平台是否已经存在。 | |
| IOTDA.010009 | The device with this action does not exist. | 规则动作中对应的设备不存在 | 请检查请求参数是否正确或设备在平台是否已经存在。 | |
| IOTDA.010010 | The device data with this condition does not exist. | 规则条件中对应的设备信息不存在 | 请检查请求参数是否正确或设备在平台是否已经存在。 | |
| IOTDA.010011 | The device data with this action does not exist. | 规则动作中对应的设备信息不存在 | 请检查请求参数是否正确或设备在平台是否已经存在。 | |
| IOTDA.010012 | The tag with this condition does not exist. | 规则条件中对应的标签不存在 | 请检查请求参数是否正确或标签在平台是否已经存在 | |
| IOTDA.010013 | Invalid rule parameter. | 规则参数不合法 | 请排查请求参数是否符合华为云文档要求 | |
| 403 | IOTDA.000004 | Invalid access token. | 非法token | 请排查请求中的token是否正常。 |
| IOTDA.000021 | Operation not allowed. User not found by IAM token or the authorized user has not subscribed IOTDA service. | 没有找到IAM Token所对应的用户信息或该用户没有订阅设备接入服务(IOTDA) | 请排查IAM Token所在用户是否订阅了设备接入服务(IOTDA)。 | |
| IOTDA.001000 | The application does not exist. | 该应用不存在 | 请确定是否已在平台注册应用并检查应用ID是否正确。 | |
| IOTDA.001002 | Operation not allowed. The application has not been authorized. | 该应用没有权限访问 | 请检查该应用是否已被授权。 | |
| IOTDA.001005 | Operation not allowed. The parameter 'app_id' is not carried, and the authorized user has more than one applications. Include the parameter 'app_id', or contact Huawei technical support engineers to merge application data. | 该用户下有多个应用的情况下未携带appId访问接口 | 请携带对应的appId或联系华为工程师合并应用数据。 | |
| IOTDA.001006 | Operation not allowed. Application not found by authorized user or the authorized user has no application. | 用户下没有应用或应用与用户不匹配 | 请排查用户下是否有应用或是否有指定的应用。 | |
| IOTDA.001007 | Operation not allowed. The application does not belong to the authorized user. | 应用与用户信息不匹配 | 请排查该用户下是否有指定的应用。 | |
| IOTDA.010003 | The number of rules has reached the upper limit. | 规则数量已达到上限 | 请删除多余的规则后重试。 | |
| 404 | IOTDA.010002 | The rule does not exist. | 该规则不存在 | 请确认平台是否存在该规则或请求参数是否正确。 |
| 500 | IOTDA.000007 | The data in database is abnormal. | 数据库中的数据不正常 | 请联系华为工程师分析解决。 |
| IOTDA.000020 | Decrypt IAM token failed. | IAM Token解析失败 | 请联系华为工程师分析解决。 |
Did this article solve your problem?
Thank you for your score!Your feedback would help us improve the website.