集成构建
概述
集成是Beaver IoT实现设备连接、设备控制、功能拓展的主要途径,它能够使Beaver IoT和其它软件、设备、第三方平台等交互。 Beaver IoT平台的集成面 向社区共建,促进系统的扩展和集成。
在本章节中,我们将介绍如何使用我们提供的集成开发仓库和环境进行工程构建、开发、调试以及发布的整个过程。
工程构建
代码仓库
我们提供了一个集成开发的仓库,包含所有已经发布的集成、示例代码以及调试环境, 你可以通过下载beaver-iot-integrations代码仓库来体验集成开发。
pom.xml配置
- 
依赖包引入
对于集成开发,我们提供了
context依赖包,用于集成开发的基础功能。通常情况下,我们不需要将context打包到集成中,所以我们将其scope设置为provided。 开发者可引入其他依赖包(Beaver IoT 平台未引入的包),以满足集成开发的需求。 
    <dependencies>
        <dependency>
            <groupId>com.milesight.beaveriot</groupId>
            <artifactId>context</artifactId>
            <version>${project.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
请注意,为避免依赖冲突和导致包过大,我们建议开发者在引入依赖包时,尽量选择Beaver IoT 平台已引入的包。对于平台已经引入的包,开发者可设置scope设置为provided。
- 依赖包版本统一
为统一依赖包的版本,Beaver IoT 平台定义了一个
beaver-iot-parentPOM依赖,开发者可在dependencyManagement中定义依赖包的版本。 
    <dependencyManagement>
        <dependencies>
          <dependency>
              <groupId>com.milesight.beaveriot</groupId>
              <artifactId>beaver-iot-parent</artifactId>
              <version>${beaver-iot.version}</version>
              <type>pom</type>
              <scope>import</scope>
          </dependency>
        </dependencies>
    </dependencyManagement>
在beaver-iot-integrations工程中,我们已经定义了beaver-iot-parent的版本号,因此开发者在集成开发过程中无需特别定义。
- 集成打包
需要将集成打包成jar包,以便在Beaver IoT使用。我们建议开发者使用
maven-assembly-plugin插件进行打包。 
    <build>
        <plugins>
            <!-- in case you have your own dependencies to be packaged -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
集成开发
集成配置
参数说明
集成配置是集成的基础,它包含了集成的基本信息、设备、实体等元数据信息。开发者需要在resources目录下创建integration.yaml文件,定义集成的配置信息。
| 参数名 | 默认值 | 是否必填 | 描述 | 
|---|---|---|---|
| id | 无 | 是 | 集成ID | 
| name | 无 | 是 | 集成名称 | 
| icon-url | 无 | 否 | 集成图标地址,支持相对路径和绝对路径地址 | 
| description | 无 | 否 | 集成描述 | 
| enabled | true | 否 | 是否启用 | 
| entity-identifier-add-device | 无 | 否 | 添加设备的Entity Identifier,当配置此值则说明当前集成支持设备添加 | 
| entity-identifier-delete-device | 无 | 否 | 删除设备的Entity Identifier,当配置此值则说明当前集成支持设备删除 | 
| initial-devices | 无 | 否 | 初始化的设备实体,具体参见设备/实体构建章节 | 
| initial-entities | 无 | 否 | 初始化的集成实体,具体参见设备/实体构建章节 | 
请注意,集成配置文件中的id字段是集成的唯一标识,不可重复。
icon-url配置
icon-url支持相对路径和绝对路径,相对路径是相对于集成的根目录的路径,绝对路径是引用外部的图片地址。
- 相对路径示例:
icon-url: /public/my-integration.png - 绝对路径示例:
icon-url: https://www.example.com/my-integration.png 
当使用相对路径,开发者需要将图片文件放置在集成的/resources/static/public目录下,例如:
  my-integration/
  ├── src/
  │ ├── main/
  │ │ └── resources/
  │ │ └──── static/
  │ │ └────── public/
  │ │ └──────── my-integration.png