集成构建
概述
集成是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-parent
POM依赖,开发者可在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
为避免资源文件冲突,建议开发者使用包含integration-id
的名称作为图片文件名
代码示例
- 简单的集成配置示例
integration:
my-integration: # integration identifier
name: My Integration Name # integration name
description: "My Demo Integration" # integration description
- 完整的集成配置示例
integration:
my-integration: # integration identifier
name: My Integration Name # integration name
icon-url: /public/my-integration.png # integration icon url
description: "My Demo Integration" # integration description
enabled: true # whether enable this integration. Must be "true" for now
entity-identifier-add-device: add_device # entity identifier for adding device
entity-identifier-delete-device: delete_device # entity identifier for deleting device
initial-entities: # initial entities
- identifier: 'connect' # entity identifier
name: connect # entity name
value_type: object # entity value type
type: service # entity type
children: # children entities
- identifier: 'url'
name: connectUrl
value_type: string
type: service