设备接入 IoTDA设备接入 IoTDA

更新时间:2021/09/06 GMT+08:00
分享

创建定时规则(按天触发)

接口说明

应用服务器可调用此接口在物联网平台创建一条规则,在每周的指定天内,在指定时间触发规则。

调试

您可以在API Explorer中调试该接口。

URI

请求方法

POST

URI

/v5/iot/{project_id}/rules

传输协议

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

name

必选

String

Body

参数说明:规则名称。

description

可选

String

Body

参数说明:规则的描述信息。

condition_group

必选

ConditionGroup Object

Body

参数说明:规则的条件组,包含简单规则和复杂规则集合。

actions

必选

List<RuleAction>

Body

参数说明:规则的动作列表,单个规则最多支持设置10个动作。

rule_type

必选

String

Body

参数说明:规则的类型。

取值范围

  • DEVICE_LINKAGE:设备联动。

status

可选

String

Body

参数说明:规则的状态,默认值:active。

取值范围

  • active:激活。
  • inactive:未激活。

app_id

可选

String

Body

参数说明:资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数指定创建的规则归属到哪个资源空间下,否则创建的规则将会归属到默认资源空间下。

取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。

表1 ConditionGroup

名称

必选/可选

类型

说明

conditions

可选

List<RuleCondition>

参数说明:规则的条件列表,单个规则最多支持设置10个条件。

logic

可选

String

参数说明:规则条件列表中多个条件之间的逻辑关系,默认值:and。

取值范围

  • and:逻辑且。
  • or:逻辑或。

time_range

可选

TimeRange Object

参数说明:规则条件触发的有效时间段。

表2 RuleCondition

名称

必选/可选

类型

说明

type

必选

String

参数说明:规则条件的类型。

取值范围

  • DEVICE_DATA:设备数据类型条件。
  • SIMPLE_TIMER:简单定时类型条件。
  • DAILY_TIMER:每日定时类型条件。

device_property_condition

可选

DeviceDataCondition Object

参数说明:条件中设备数据类型的信息,当type为DEVICE_DATA时,为必选参数

simple_timer_condition

可选

SimpleTimerType Object

参数说明:条件中简单定时类型的信息,当type为SIMPLE_TIMER时,为必选参数

daily_timer_condition

可选

DailyTimerType Object

参数说明:条件中每日定时类型的信息,当type为DAILY_TIMER时,为必选参数

表3 DeviceDataCondition

名称

必选/可选

类型

说明

device_id

可选

String

参数说明:设备ID,用于唯一标识一个设备,在注册设备时由物联网平台分配获得。当rule_type为DEVICE_LINKAGE时,该参数值和product_id不能同时为空。如果该参数和product_id同时存在时,以该参数值对应的设备进行条件过滤。

取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

product_id

可选

String

参数说明:设备关联的产品ID,用于唯一标识一个产品模型,在管理门户导入产品模型后由平台分配获得。当rule_type为DEVICE_LINKAGE时,该参数值和device_id不能同时为空。如果该参数和device_id同时存在时,以device_id参数值对应的设备进行条件过滤。

filters

可选

List<PropertyFilter>

参数说明:数据过滤条件

表4 PropertyFilter

名称

必选/可选

类型

说明

path

必选

String

参数说明:设备属性的路径信息,格式:service_id/DataProperty,例如门磁状态为“DoorWindow/status”。

operator

必选

String

参数说明:数据比较的操作符。

取值范围:支持的操作符有:>,<,>=,<=,=和between:表示数值区间,geo.circle.in:表示圆形区域范围内,geo.circle.out:表示圆形区域范围外。

value

必选

String

参数说明:数据比较表达式的右值。与数据比较操作符between联用时,右值表示最小值和最大值,用逗号隔开,如“20,30”表示大于等于20小于30。

strategy

可选

Strategy Object

参数说明:规则条件的处理策略,用于确定规则是否判断上次数据是否满足条件。当rule_type为DEVICE_LINKAGE时,该参数值不能为空。

表5 Strategy

名称

必选/可选

类型

说明

trigger

可选

String

参数说明:规则条件触发的判断策略,默认为pulse。

取值范围

  • pulse:设备上报的数据满足条件则触发,不判断上一次上报的数据。
  • reverse:设备上一次上报的数据不满足条件,本次上报的数据满足条件则触发。

event_valid_time

可选

Integer

参数说明:设备数据的有效时间,单位为秒,设备数据的产生时间以上报数据中的eventTime为基准。

表6 SimpleTimerType

名称

必选/可选

类型

说明

start_time

必选

String

参数说明:规则触发的开始时间,使用UTC时区,格式:yyyyMMdd'T'HHmmss'Z'。

repeat_interval

必选

Integer

参数说明:规则触发的重复时间间隔,单位为秒。

repeat_count

必选

Integer

参数说明:规则触发的重复次数。

表7 DailyTimerType

名称

必选/可选

类型

说明

time

必选

String

参数说明:规则触发的时间,格式:HH:MM。

days_of_week

可选

String

参数说明:星期列表,以逗号分隔。1代表周日,2代表周一,依次类推,默认为每天。

表8 TimeRange

名称

必选/可选

类型

说明

start_time

必选

String

参数说明:规则条件触发的开始时间,格式:HH:mm。

end_time

必选

String

参数说明:规则条件触发的结束时间,格式:HH:mm。若结束时间与开始时间一致,则时间为全天。

days_of_week

可选

String

参数说明:星期列表,以逗号分隔。1代表周日,2代表周一,依次类推,默认为每天。星期列表中的日期为开始时间的日期。

表9 RuleAction

名称

必选/可选

类型

说明

type

必选

String

参数说明:规则动作的类型。

取值范围

  • DEVICE_CMD:下发设备命令消息类型。
  • SMN_FORWARDING:发送SMN消息类型。
  • DEVICE_ALARM:上报设备告警消息类型。当选择该类型时,condition中必须有DEVICE_DATA条件类型。该类型动作只能唯一。

smn_forwarding

可选

ActionSmnForwarding Object

参数说明:发送给SMN消息结构。当type为SMN_FORWARDING时,必填。

device_alarm

可选

ActionDeviceAlarm Object

参数说明:上报设备告警消息内容。当type为DEVICE_ALARM时,必填。

device_command

可选

ActionDeviceCommand Object

参数说明:下发设备命令消息内容。当type为DEVICE_CMD时,必填。

表10 ActionSmnForwarding

名称

必选/可选

类型

说明

region_name

必选

String

参数说明:SMN服务对应的region区域

project_id

必选

String

参数说明:SMN服务对应的projectId信息

theme_name

必选

String

参数说明:SMN服务对应的主题名称

topic_urn

必选

String

参数说明:SMN服务对应的topic的主题URN

message_content

必选

String

参数说明:短信或邮件的内容。

message_title

必选

String

参数说明:短信或邮件的主题。

表11 ActionDeviceAlarm

名称

必选/可选

类型

说明

name

必选

String

参数说明:告警名称。

alarm_status

必选

String

参数说明:告警状态。

取值范围

  • fault:上报告警。
  • recovery:恢复告警。

severity

必选

String

参数说明:告警级别。

取值范围:warning(警告)、minor(一般)、major(严重)和critical(致命)。

description

可选

String

参数说明:告警的描述信息。

表12 ActionDeviceCommand

名称

必选/可选

类型

说明

device_id

可选

String

参数说明:下发命令的设备ID。

  • 当创建设备数据规则时,若device_id为空,则命令下发给触发条件的设备。
  • 当创建定时规则时,不允许为空。

cmd

必选

CMD Object

参数说明:下发的命令信息。

表13 CMD

名称

必选/可选

类型

说明

command_name

必选

String

参数说明:设备命令名称,在设备关联的产品模型中定义。

command_body

必选

object

参数说明:设备命令参数,Json格式。

使用LWM2M协议设备命令示例:{"value":"1"},里面是一个个健值对,每个健都是产品模型中命令的参数名(paraName)。

使用MQTT协议设备命令示例:{"header": {"mode": "ACK","from": "/users/testUser","method": "SET_TEMPERATURE_READ_PERIOD","to":"/devices/{device_id}/services/{service_id}"},"body": {"value" : "1"}}。

  • mode:必选,设备收到命令后是否需要回复确认消息,默认为ACK模式。ACK表示需要回复确认消息,NOACK表示不需要回复确认消息,其它值无效。
  • from:可选,命令发送方的地址。App发起请求时格式为/users/{userId} ,应用服务器发起请求时格式为/{serviceName},物联网平台发起请求时格式为/cloud/{serviceName}。
  • to:可选,命令接收方的地址,格式为/devices/{device_id}/services/{service_id}。
  • method:可选,产品模型中定义的命令名称。
  • body:可选,命令的消息体,里面是一个个键值对,每个键都是产品模型中命令的参数名(paraName)。具体格式需要应用和设备约定。

service_id

必选

String

参数说明:设备命令所属的设备服务ID,在设备关联的产品模型中定义。

buffer_timeout

可选

Integer

参数说明:设备命令的缓存时间,单位为秒,表示物联网平台在把命令下发给设备前缓存命令的有效时间,超过这个时间后命令将不再下发,默认值为172800s(48小时)。

如果buffer_timeout设置为0,则无论物联网平台上设置的命令下发模式是什么,该命令都会立即下发给设备。

response_timeout

可选

Integer

参数说明:命令响应的有效时间,单位为秒,表示设备接收到命令后,在response_timeout时间内响应有效,超过这个时间未收到命令的响应,则认为命令响应超时,默认值为1800s。

mode

可选

String

参数说明:设备命令的下发模式,仅当buffer_timeout的值大于0时有效。

取值范围

  • ACTIVE:主动模式,物联网平台主动将命令下发给设备。
  • PASSIVE:被动模式,物联网平台创建设备命令后,会直接缓存命令。等到设备再次上线或者上报上一条命令的执行结果后才下发命令。

响应参数

名称

类型

说明

rule_id

String

规则id。

name

String

规则名称。

description

String

规则的描述信息。

condition_group

ConditionGroup Object

规则的条件组,包含简单规则和复杂规则集合。

actions

List<RuleAction>

规则的动作列表,单个规则最多支持设置10个动作。

rule_type

String

规则的类型

  • DEVICE_LINKAGE:设备联动。

status

String

规则的状态,默认值:active。

  • active:激活。
  • inactive:未激活。

app_id

String

资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数指定创建的规则归属到哪个资源空间下,否则创建的规则将会归属到默认资源空间下。

edge_node_ids

List<String>

归属边缘侧节点设备ID列表。

last_update_time

String

规则最后更新时间,使用UTC时区,格式:yyyyMMdd'T'HHmmss'Z'。

表14 ConditionGroup

名称

类型

说明

conditions

List<RuleCondition>

规则的条件列表,单个规则最多支持设置10个条件。

logic

String

规则条件列表中多个条件之间的逻辑关系,默认值:and。

  • and:逻辑且。
  • or:逻辑或。

time_range

TimeRange Object

规则条件触发的有效时间段。

表15 RuleCondition

名称

类型

说明

type

String

规则条件的类型,取值范围:

  • DEVICE_DATA:设备数据类型条件。
  • SIMPLE_TIMER:简单定时类型条件。
  • DAILY_TIMER:每日定时类型条件。

device_property_condition

DeviceDataCondition Object

条件中设备数据类型的信息,当type为DEVICE_DATA时,为必选参数

simple_timer_condition

SimpleTimerType Object

条件中简单定时类型的信息,当type为SIMPLE_TIMER时,为必选参数

daily_timer_condition

DailyTimerType Object

条件中每日定时类型的信息,当type为DAILY_TIMER时,为必选参数

表16 DeviceDataCondition

名称

类型

说明

device_id

String

设备ID,用于唯一标识一个设备,在注册设备时由物联网平台分配获得。当rule_type为DEVICE_LINKAGE时,该参数值和product_id不能同时为空。如果该参数和product_id同时存在时,以该参数值对应的设备进行条件过滤。

product_id

String

设备关联的产品ID,用于唯一标识一个产品模型,在管理门户导入产品模型后由平台分配获得。当rule_type为DEVICE_LINKAGE时,该参数值和device_id不能同时为空。如果该参数和device_id同时存在时,以device_id参数值对应的设备进行条件过滤。

filters

List<PropertyFilter>

数据过滤条件

表17 PropertyFilter

名称

类型

说明

path

String

设备属性的路径信息,格式:service_id/DataProperty,例如门磁状态为“DoorWindow/status”。

operator

String

数据比较的操作符,当前支持的操作符有:>,<,>=,<=,=和between:表示数值区间,geo.circle.in:表示圆形区域范围内,geo.circle.out:表示圆形区域范围外。

value

String

数据比较表达式的右值。与数据比较操作符between联用时,右值表示最小值和最大值,用逗号隔开,如“20,30”表示大于等于20小于30。

strategy

Strategy Object

规则条件的处理策略,用于确定规则是否判断上次数据是否满足条件。当rule_type为DEVICE_LINKAGE时,该参数值不能为空。

表18 Strategy

名称

类型

说明

trigger

String

规则条件触发的判断策略,默认为pulse。

  • pulse:设备上报的数据满足条件则触发,不判断上一次上报的数据。
  • reverse:设备上一次上报的数据不满足条件,本次上报的数据满足条件则触发。

event_valid_time

Integer

设备数据的有效时间,单位为秒,设备数据的产生时间以上报数据中的eventTime为基准。

表19 SimpleTimerType

名称

类型

说明

start_time

String

规则触发的开始时间,使用UTC时区,格式:yyyyMMdd'T'HHmmss'Z'。

repeat_interval

Integer

规则触发的重复时间间隔,单位为秒。

repeat_count

Integer

规则触发的重复次数。

表20 DailyTimerType

名称

类型

说明

time

String

规则触发的时间,格式:HH:MM。

days_of_week

String

星期列表,以逗号分隔。1代表周日,2代表周一,依次类推,默认为每天。

表21 TimeRange

名称

类型

说明

start_time

String

规则条件触发的开始时间,格式:HH:mm。

end_time

String

规则条件触发的结束时间,格式:HH:mm。若结束时间与开始时间一致,则时间为全天。

days_of_week

String

星期列表,以逗号分隔。1代表周日,2代表周一,依次类推,默认为每天。星期列表中的日期为开始时间的日期。

表22 RuleAction

名称

类型

说明

type

String

规则动作的类型,取值范围:

  • DEVICE_CMD:下发设备命令消息类型。
  • SMN_FORWARDING:发送SMN消息类型。
  • DEVICE_ALARM:上报设备告警消息类型。当选择该类型时,condition中必须有DEVICE_DATA条件类型。该类型动作只能唯一。

smn_forwarding

ActionSmnForwarding Object

发送给SMN消息结构。当type为SMN_FORWARDING时,必填。

device_alarm

ActionDeviceAlarm Object

上报设备告警消息内容。当type为DEVICE_ALARM时,必填。

device_command

ActionDeviceCommand Object

下发设备命令消息内容。当type为DEVICE_CMD时,必填。

表23 ActionSmnForwarding

名称

类型

说明

region_name

String

SMN服务对应的region区域

project_id

String

SMN服务对应的projectId信息

theme_name

String

SMN服务对应的主题名称

topic_urn

String

SMN服务对应的topic的主题URN

message_content

String

短信或邮件的内容。

message_title

String

短信或邮件的主题。

表24 ActionDeviceAlarm

名称

类型

说明

name

String

告警名称。

alarm_status

String

告警状态。

  • fault:上报告警。
  • recovery:恢复告警。

severity

String

告警级别,取值范围:warning(警告)、minor(一般)、major(严重)和critical(致命)。

description

String

告警的描述信息。

表25 ActionDeviceCommand

名称

类型

说明

device_id

String

下发命令的设备ID。

  • 当创建设备数据规则时,若device_id为空,则命令下发给触发条件的设备。
  • 当创建定时规则时,不允许为空。

cmd

CMD Object

下发的命令信息。

表26 CMD

名称

类型

说明

command_name

String

设备命令名称,在设备关联的产品模型中定义。

command_body

object

设备命令参数,Json格式。

使用LWM2M协议设备命令示例:{"value":"1"},里面是一个个健值对,每个健都是产品模型中命令的参数名(paraName)。

使用MQTT协议设备命令示例:{"header": {"mode": "ACK","from": "/users/testUser","method": "SET_TEMPERATURE_READ_PERIOD","to":"/devices/{device_id}/services/{service_id}"},"body": {"value" : "1"}}。

  • mode:必选,设备收到命令后是否需要回复确认消息,默认为ACK模式。ACK表示需要回复确认消息,NOACK表示不需要回复确认消息,其它值无效。
  • from:可选,命令发送方的地址。App发起请求时格式为/users/{userId} ,应用服务器发起请求时格式为/{serviceName},物联网平台发起请求时格式为/cloud/{serviceName}。
  • to:可选,命令接收方的地址,格式为/devices/{device_id}/services/{service_id}。
  • method:可选,产品模型中定义的命令名称。
  • body:可选,命令的消息体,里面是一个个键值对,每个键都是产品模型中命令的参数名(paraName)。具体格式需要应用和设备约定。

service_id

String

设备命令所属的设备服务ID,在设备关联的产品模型中定义。

buffer_timeout

Integer

设备命令的缓存时间,单位为秒,表示物联网平台在把命令下发给设备前缓存命令的有效时间,超过这个时间后命令将不再下发,默认值为172800s(48小时)。

如果buffer_timeout设置为0,则无论物联网平台上设置的命令下发模式是什么,该命令都会立即下发给设备。

response_timeout

Integer

命令响应的有效时间,单位为秒,表示设备接收到命令后,在response_timeout时间内响应有效,超过这个时间未收到命令的响应,则认为命令响应超时,默认值为1800s。

mode

String

设备命令的下发模式,仅当buffer_timeout的值大于0时有效。

  • ACTIVE:主动模式,物联网平台主动将命令下发给设备。
  • PASSIVE:被动模式,物联网平台创建设备命令后,会直接缓存命令。等到设备再次上线或者上报上一条命令的执行结果后才下发命令。

请求示例

POST https://{Endpoint}/v5/iot/{project_id}/rules
Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********

{
  "rule_type" : "DEVICE_LINKAGE",
  "name" : "timeStart",
  "condition_group" : {
    "conditions" : [ {
      "type" : "DAILY_TIMER",
      "daily_timer_condition" : {
        "time" : "07:00",
        "days_of_week" : "2,3,4,5,6"
      }
    } ]
  },
  "actions" : [ {
    "type" : "DEVICE_CMD",
    "device_command" : {
      "device_id" : "b53c9a4d-a7c1-4111-a387-fc388349d7e7",
      "cmd" : {
        "command_name" : "SET_DEVICE_SWITCH",
        "command_body" : {
          "value" : "0"
        },
        "service_id" : "Switch",
        "buffer_timeout" : 0,
        "response_timeout" : 1800
      }
    }
  } ]
}

响应示例

Status Code: 201 Created

Content-Type: application/json

{
  "rule_id" : "5eb3628d017d9105d0cf9aec",
  "rule_type" : "DEVICE_LINKAGE",
  "name" : "timeStart",
  "condition_group" : {
    "conditions" : [ {
      "type" : "DAILY_TIMER",
      "daily_timer_condition" : {
        "time" : "07:00",
        "days_of_week" : "2,3,4,5,6"
      }
    } ]
  },
  "actions" : [ {
    "type" : "DEVICE_CMD",
    "device_command" : {
      "device_id" : "b53c9a4d-a7c1-4111-a387-fc388349d7e7",
      "cmd" : {
        "command_name" : "SET_DEVICE_SWITCH",
        "command_body" : {
          "value" : "0"
        },
        "service_id" : "Switch",
        "buffer_timeout" : 0,
        "response_timeout" : 1800
      }
    }
  } ]
}

错误码

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.

规则参数不合法

请排查请求参数是否符合华为云文档要求

IOTDA.010015

The rule count of each user has reached the upper limit, the current up limit is 10 entries.

用户下规则数量超过上限

请删除多余的规则后再注册。

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解析失败

请联系华为工程师分析解决。

分享:

    相关文档

    相关产品