# Art-Net-Controller **Repository Path**: caraba/art-net-controller ## Basic Information - **Project Name**: Art-Net-Controller - **Description**: ArtNetController 是一个基于 Spring Boot 的后端服务,主要用于通过 ArtNet 协议 控制灯光设备(如 DMX 灯具),提供 REST API 接口供前端调用,并支持持久化存储与定时任务更新灯光状态。该项目适用于舞台灯光、智能照明等嵌入式控制场景。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-04-13 - **Last Updated**: 2026-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 后端:spring boot+sqlite3 ArtNetController 是一个基于 **Spring Boot** 的后端服务,主要用于通过 **ArtNet 协议** 控制灯光设备(如 DMX 灯具),提供 REST API 接口供前端调用,并支持持久化存储与定时任务更新灯光状态。该项目适用于舞台灯光、智能照明等嵌入式控制场景。 #### [前端仓库(gitee)](https://gitee.com/W1EMPTY/art-net-controller-frontend) ## 技术栈概览 - **框架**:`Spring Boot 3` - **语言**:`Java 17` - **数据库**:`SQLite` - **ORM 框架**:`MyBatis` - **协议库**:`ArtNet4J`(用于 ArtNet/DMX 通信) - **构建工具**:`Maven` - **部署方式**:可直接运行 jar文件或集成进嵌入式设备 --- ## 核心功能模块 ### 1. 灯光管理 (`Light Management`) - 提供 RESTful 接口实现对灯光的增删改查操作。 - 支持通过 DMX 地址批量设置亮度值(接口 `/api/ArtNet/updateBrightness`)。 - 实体类为 Light.java,包含字段: - id: 唯一标识符 - Brightness: 当前亮度值(0~255) - dmxAddress: DMX 地址(对应硬件通道) - status: 灯光开关状态("0" 表示开启,"1" 表示关闭) #### 相关文件: - 接口:[LightController.java] - 服务层:[LightService.java] - 数据访问层:[LightMapper.java] + [LightMapper.xml] - 实体类:[Light.java] --- ### 2. ArtNet 协议通信 - 使用 `ArtNetClient` 发送 DMX 数据包。 - 定时任务每 200ms 查询一次数据库中 `status = '0'` 的灯光数据,发送至指定 IP 地址(配置在 [application.yml]) - 支持单播(Unicast)方式发送 DMX 数据。 #### 配置参数application.yml: ``` yaml artnet: subNet: 0 universe: 0 ip: 192.168.3.95 ``` #### 相关文件: - [ARTNET.java] --- ### 3. 数据库支持 - 使用 SQLite 存储灯光信息及场景配置。 - 表结构定义在 SQL 文件中(支持自动初始化): - `lights`:记录每个灯的 ID、亮度、DMX 地址和状态。 - `scenes`:场景表,支持多组预设灯光效果。 - `scene_light_settings`:记录每个场景中灯光的具体配置。 - 其他辅助表:如 `scenario_group`、`scene_group_mappings` 等用于分组和快照。 #### 初始化逻辑: - [DatabaseInitializer.java]负责检查并复制初始数据库文件。 - 初始化脚本位于 `src/main/resources/db/migration/V1__Create_scenario_tables.sql` ## 项目亮点 | 特性 | 描述 | |------|------| | **轻量级架构** | 基于 Spring Boot 和 SQLite,适合嵌入式部署。 | | **实时控制** | 每秒 5 次刷新 DMX 输出,确保响应及时。 | | **REST API 设计良好** | 提供标准化接口,便于扩展到其他客户端(如移动端)。 | | **协议支持完善** | 使用 ArtNet4J 实现标准 ArtNet 协议通信,兼容主流 DMX 控制器。 | | **前后端分离设计** | 前端资源独立部署,易于维护和 UI 迭代。 | --- ## 如何运行项目 ### 1. 开发环境要求 - Java 17+ - Maven 3.x - SQLite JDBC 库(已引入依赖) ### 2. 构建与启动 ``` bash mvn clean package java -jar target/ArtNetController-0.0.1-SNAPSHOT.jar ``` ### 3. 默认访问地址 - 前端界面:`http://localhost:8080/index.html` - 灯光 API:`http://localhost:8080/api/ArtNet/lights` --- ## 项目目录结构摘要 ``` . ├── src/ │ ├── main/ │ │ ├── java/com/MetaLive/ArtNetController/ │ │ │ ├── Controller/ # REST 控制器 │ │ │ ├── Mapper/ # MyBatis 映射接口 │ │ │ ├── model/ # 实体类(Light.java 等) │ │ │ ├── service/ # 业务逻辑(包括 ARTNET.java) │ │ │ └── Utils/ # 工具类(如数据库初始化) │ │ │ └── ArtNetControllerApplication.java # 启动类 │ │ └── resources/ │ │ ├── db/ # 数据库迁移脚本 │ │ ├── mappers/ # MyBatis XML 映射文件 │ │ ├── static/ # 前端资源(HTML、JSON、CSS、JS) │ │ └── application.yml # 配置文件 └── src/test/java/ # 测试类 ``` --- ## 总结 ArtNetController 是一个轻量但功能完整的灯光控制系统后台,具备良好的扩展性和可维护性,适用于舞台、演播室、智能家居等需要 DMX 控制的场景。其使用标准 ArtNet 协议通信,结合 REST API 提供灵活的远程控制能力,是物联网灯光控制项目的优秀实践。