
# 在线开发产品模型
#### 概述
在线开发产品模型前需要[创建产品](https://support.huaweicloud.com/devg-iothub/iot_01_0053.html)。创建产品需要输入产品名称、协议类型、数据格式、所属行业和设备类型等信息，产品模型会使用这些信息作为设备能力字段取值。物联网平台提供了标准模型和厂商模型，这些模型涉及多个领域，模型中提供了已经编辑好的产品模型文件，您可以根据自己的需要对产品模型中的字段进行修改和增删；如果选择自定义产品模型，则需要完整定义产品模型。
本节定义包含一个服务的产品模型为示例，该产品模型包含设备上报数据、下发命令、下发命令响应等场景的服务和字段。
#### 操作步骤
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入"设备接入"控制台。选择您的实例，单击实例卡片进入。
2. 单击左侧导航栏的"产品"，在产品列表中，找到对应的产品，单击产品进入产品详情页。
3. 在产品详情基本信息页面，单击"自定义模型"，添加服务。
4. 输入"服务ID"、"服务类型"和"服务描述"，然后单击"确定"。
   
   - "服务ID"：采用首字母大写的命名方式。比如：WaterMeter、StreetLight。
   
   - "服务类型"：建议和服务ID保持一致。
   
   - "服务描述"：比如路灯上报的环境光强度和路灯开关状态的属性。
   
   
   添加服务后，在"添加服务"区域，对属性和命令进行定义。每个服务下，可以包含属性和命令，也可以只包含其中之一，请根据此类设备的实际情况进行配置。
   
   
5. 单击[4]新增的服务ID，在展开的页面单击"新增属性"，在弹出窗口中配置属性的各项参数，然后单击"确定"。
   
   
   | 参数   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|
   | 属性名称 | 建议采用驼峰形式，如batteryLevel、internalTemperature。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 数据类型 | - **int**：当上报的数据为整数时，可配置为此类型。  - **long:**当上报的数据为长整型时，可配置为此类型。  - **decimal**：当上报的数据为小数时，可配置为此类型。配置"经纬度"属性时，数据类型建议使用"decimal"。  - **string**：当上报的数据为字符串、枚举值时，可以配置为此类型。如果为枚举值，值之间需要用英文逗号（","）分隔。  - **dateTime** ：当上报的数据为日期时，可以配置为此类型。 此类型属性上报格式推荐样例：2020-09-01T18:50:20Z或者2020-09-01T18:50:20.200Z   - **jsonObject**：当上报的数据为JSON结构体时，可以配置为此类型。  - **enum:** 当上报的数据为枚举值时，可配置为此类型。 搭配参数enumList格式填写，比如状态属性的enumList填写为OPEN,CLOSE，那么属性上报格式样例为"OPEN"或者"CLOSE"   - **boolean:** 当上报的数据为布尔值时，可配置为此类型。 此类型属性上报推荐格式样例：true/false 或者 0/1   - **stringList:** 当上报的数据为字符串数组时，可配置为此类型。   此类型属性上报推荐格式样例：\["str1","str2","str3"\] |
   | 访问权限 | - 可读：通过接口可以查询该属性。  - 可写：通过接口可以修改该属性值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 取值范围 | 请根据此类设备的实际情况进行配置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 步长   | 请根据此类设备的实际情况进行配置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 单位   | 请根据此类设备的实际情况进行配置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
      
   图1新增属性-batteryLevel   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001981470861.png "点击放大")
   
   
6. 单击"添加命令"，在弹出窗口中配置命令。 
   - "命令名称"：建议采用全大写形式，单词间用下划线连接的命名方式，如DISCOVERY，CHANGE_STATUS。
   
   - "下发参数"：单击"新增输入参数"，在弹出窗口中配置下发命令字段的各项参数，然后"确定"。
     
     | 参数   | 说明                                           |
     |:---|:---|
     | 参数名称 | 建议采用第一个单词首字母小写，其余单词的首字母大写的命名方式，比如valueChange |
     | 数据类型 | 请根据此类设备的实际情况进行配置。                            |
     | 取值范围 | 请根据此类设备的实际情况进行配置。                            |
     | 步长   | 请根据此类设备的实际情况进行配置。                            |
     | 单位   | 请根据此类设备的实际情况进行配置。                            |
        
     图2新增命令CHANGE_STATUS   
     ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001981311013.png "点击放大") 
   
   - 如果要添加命令响应，单击"新增响应参数"，在弹出窗口中配置响应命令字段的各项参数，然后单击"确定"。
     
     | 参数   | 说明                                           |
     |:---|:---|
     | 参数名称 | 建议采用第一个单词首字母小写，其余单词的首字母大写的命名方式，比如valueResult |
     | 数据类型 | 请根据此类设备的实际情况进行配置。                            |
     | 取值范围 | 请根据此类设备的实际情况进行配置。                            |
     | 步长   | 请根据此类设备的实际情况进行配置。                            |
     | 单位   | 请根据此类设备的实际情况进行配置。                            |
        
     图3新增命令响应参数-valueAResult   
     ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001950351438.png "点击放大") 
   
   
   
   
 
