323 lines
11 KiB
Markdown
323 lines
11 KiB
Markdown
|
|
# CRICS_V3 - 酒店客房智能控制系统
|
|||
|
|
|
|||
|
|
## 项目概述
|
|||
|
|
|
|||
|
|
CRICS(Customer Room Intelligent Control System)是一套酒店客房智能控制系统,用于管理酒店客房的智能设备控制、状态监控和数据统计等功能。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 技术框架
|
|||
|
|
|
|||
|
|
### 开发环境
|
|||
|
|
- **IDE**: Visual Studio 2010+
|
|||
|
|
- **目标框架**: .NET Framework 4.0
|
|||
|
|
- **解决方案格式**: VS 2010 Solution Format Version 11.00
|
|||
|
|
|
|||
|
|
### 核心技术栈
|
|||
|
|
|
|||
|
|
| 分类 | 技术/框架 | 版本 | 说明 |
|
|||
|
|
|------|----------|------|------|
|
|||
|
|
| **Web框架** | ASP.NET MVC | 2.0 | Web应用程序框架 |
|
|||
|
|
| **IoC容器** | Spring.NET | 1.3.x | 依赖注入、AOP支持 |
|
|||
|
|
| **ORM框架** | NHibernate | 3.0 | 对象关系映射 |
|
|||
|
|
| **数据库** | SQL Server | - | 关系型数据库 |
|
|||
|
|
| **缓存** | Redis (CSRedis) | - | 分布式缓存 |
|
|||
|
|
| **缓存** | Memcached | - | 内存缓存 |
|
|||
|
|
| **日志** | log4net | 1.2.10 | 日志记录框架 |
|
|||
|
|
| **JSON处理** | Newtonsoft.Json | 6.0 | JSON序列化/反序列化 |
|
|||
|
|
| **通信协议** | UDP | - | RCU主机通信 |
|
|||
|
|
| **消息队列** | MQTT (M2Mqtt) | 4.3 | 消息传输 |
|
|||
|
|
| **任务调度** | FluentScheduler | 4.1.2 | 定时任务调度 |
|
|||
|
|
| **Excel处理** | NPOI | - | Excel文件读写 |
|
|||
|
|
| **HTTP客户端** | RestSharp | 105.2.3 | REST API调用 |
|
|||
|
|
| **JWT** | jose-jwt | - | JWT令牌处理 |
|
|||
|
|
|
|||
|
|
### 前端技术
|
|||
|
|
- **UI框架**: EasyUI 1.4.2
|
|||
|
|
- **JavaScript库**: jQuery
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
CRICS_V3_1124/
|
|||
|
|
├── CRICS_V3_1124.sln # 解决方案文件
|
|||
|
|
├── README.md # 项目说明文档
|
|||
|
|
├── Para.prom # 参数配置文件
|
|||
|
|
├── Para_copy.yaml # YAML配置文件
|
|||
|
|
│
|
|||
|
|
├── WebSite/ # Web应用程序(主项目)
|
|||
|
|
│ ├── Controllers/ # MVC控制器
|
|||
|
|
│ ├── Views/ # 视图模板
|
|||
|
|
│ ├── Models/ # 视图模型
|
|||
|
|
│ ├── Config/ # Spring.NET配置
|
|||
|
|
│ ├── api/ # API接口
|
|||
|
|
│ ├── Core/ # 核心业务逻辑
|
|||
|
|
│ ├── Job/ # 定时任务
|
|||
|
|
│ ├── Scripts/ # JavaScript脚本
|
|||
|
|
│ ├── Styles/ # CSS样式
|
|||
|
|
│ ├── Images/ # 图片资源
|
|||
|
|
│ └── easyui-1.4.2/ # EasyUI前端框架
|
|||
|
|
│
|
|||
|
|
├── RCUHost/ # RCU主机通信服务
|
|||
|
|
│ ├── Implement/ # 接口实现
|
|||
|
|
│ │ ├── HostServer.cs # UDP服务器核心
|
|||
|
|
│ │ ├── *Receiver.cs # 各类命令接收器
|
|||
|
|
│ │ └── ReceiverContext.cs # 接收器上下文
|
|||
|
|
│ ├── Protocols/ # 通信协议定义
|
|||
|
|
│ ├── Config/ # 配置文件
|
|||
|
|
│ ├── RCUHostCommon/ # 通用工具类
|
|||
|
|
│ ├── NewUDP/ # 新版UDP处理
|
|||
|
|
│ └── TimingHelper/ # 定时辅助工具
|
|||
|
|
│
|
|||
|
|
├── Domain/ # 领域模型层
|
|||
|
|
│ ├── *.cs # 实体类定义
|
|||
|
|
│ └── *.hbm.xml # NHibernate映射文件
|
|||
|
|
│
|
|||
|
|
├── Dao/ # 数据访问层
|
|||
|
|
│ ├── I*Repository.cs # 仓储接口
|
|||
|
|
│ ├── Implement/ # 仓储实现
|
|||
|
|
│ └── RepositoryBase`1.cs # 泛型仓储基类
|
|||
|
|
│
|
|||
|
|
├── Service/ # 业务逻辑层
|
|||
|
|
│ ├── I*Manager.cs # 服务接口
|
|||
|
|
│ ├── Implement/ # 服务实现
|
|||
|
|
│ └── GenericManagerBase`1.cs # 泛型服务基类
|
|||
|
|
│
|
|||
|
|
├── Common/ # 公共工具库
|
|||
|
|
│ ├── CSRedisCacheHelper.cs # Redis缓存帮助类
|
|||
|
|
│ ├── MemoryCacheHelper.cs # 内存缓存帮助类
|
|||
|
|
│ ├── AliyunSMSHelper.cs # 阿里云短信帮助类
|
|||
|
|
│ ├── ExcelHelper.cs # Excel帮助类
|
|||
|
|
│ ├── HttpWebRequestHelper.cs # HTTP请求帮助类
|
|||
|
|
│ ├── Tools.cs # 通用工具类
|
|||
|
|
│ ├── BLWMQTT.cs # MQTT客户端
|
|||
|
|
│ ├── XiaoDuOperation.cs # 小度音箱操作
|
|||
|
|
│ ├── TianMaoOperation.cs # 天猫精灵操作
|
|||
|
|
│ ├── RokidOperation.cs # Rokid操作
|
|||
|
|
│ └── ... # 其他工具类
|
|||
|
|
│
|
|||
|
|
├── CommonEntity/ # 公共实体层
|
|||
|
|
│ ├── CacheDTO.cs # 缓存数据传输对象
|
|||
|
|
│ ├── CacheKey.cs # 缓存键定义
|
|||
|
|
│ ├── DataTongJi.cs # 数据统计实体
|
|||
|
|
│ └── ... # 其他实体类
|
|||
|
|
│
|
|||
|
|
├── ConsoleApplication1/ # 控制台测试程序1
|
|||
|
|
├── ConsoleApplication2/ # 控制台测试程序2
|
|||
|
|
├── ConsoleApplication3/ # 控制台测试程序3
|
|||
|
|
├── ConsoleApplication666/ # 控制台测试程序
|
|||
|
|
├── test/ # 测试项目
|
|||
|
|
├── MyIPY/ # Python互操作项目
|
|||
|
|
│
|
|||
|
|
├── DBSql/ # 数据库脚本
|
|||
|
|
│ └── crics.sql # 数据库初始化脚本
|
|||
|
|
│
|
|||
|
|
├── lib/ # 第三方依赖库
|
|||
|
|
│ ├── Spring.NET/ # Spring.NET程序集
|
|||
|
|
│ ├── NHibernate/ # NHibernate程序集
|
|||
|
|
│ ├── Redis/ # Redis客户端
|
|||
|
|
│ ├── Memcached/ # Memcached客户端
|
|||
|
|
│ ├── log4net/ # 日志组件
|
|||
|
|
│ ├── NPOI/ # Excel处理组件
|
|||
|
|
│ ├── RestSharp/ # REST客户端
|
|||
|
|
│ ├── jwt/ # JWT组件
|
|||
|
|
│ ├── M2Mqtt.Net/ # MQTT客户端
|
|||
|
|
│ ├── taskschedule/ # 任务调度组件
|
|||
|
|
│ └── ... # 其他依赖
|
|||
|
|
│
|
|||
|
|
└── CA/ # 证书/许可证文件
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 分层架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ 表现层 (WebSite) │
|
|||
|
|
│ Controllers / Views / Scripts / Styles │
|
|||
|
|
├─────────────────────────────────────────────────────────┤
|
|||
|
|
│ 业务逻辑层 (Service) │
|
|||
|
|
│ I*Manager / *Manager │
|
|||
|
|
├─────────────────────────────────────────────────────────┤
|
|||
|
|
│ 数据访问层 (Dao) │
|
|||
|
|
│ I*Repository / *Repository │
|
|||
|
|
├─────────────────────────────────────────────────────────┤
|
|||
|
|
│ 领域模型层 (Domain) │
|
|||
|
|
│ Entity Classes / HBM Mappings │
|
|||
|
|
├─────────────────────────────────────────────────────────┤
|
|||
|
|
│ 基础设施层 │
|
|||
|
|
│ Common (工具类) / CommonEntity (公共实体) / RCUHost │
|
|||
|
|
└─────────────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 核心模块说明
|
|||
|
|
|
|||
|
|
### 1. RCUHost - RCU主机通信服务
|
|||
|
|
|
|||
|
|
RCU(Room Control Unit)主机通信服务是系统的核心组件,负责与酒店客房内的智能控制主机进行UDP通信。
|
|||
|
|
|
|||
|
|
**主要功能:**
|
|||
|
|
- UDP服务器监听和数据接收
|
|||
|
|
- 协议解析和命令分发
|
|||
|
|
- 设备状态实时同步
|
|||
|
|
- 心跳检测和在线状态维护
|
|||
|
|
- Redis消息发布/订阅
|
|||
|
|
|
|||
|
|
**核心类:**
|
|||
|
|
- `HostServer.cs` - UDP服务器核心实现
|
|||
|
|
- `*Receiver.cs` - 各类命令接收处理器
|
|||
|
|
- `ReceiverContext.cs` - 请求上下文
|
|||
|
|
|
|||
|
|
**支持的命令类型:**
|
|||
|
|
- 0x01 - 主机注册
|
|||
|
|
- 0x02 - 心跳
|
|||
|
|
- 0x0E - 状态上报
|
|||
|
|
- 0x32-0x36 - 新版协议命令
|
|||
|
|
- 更多命令参见 `CommandType` 枚举
|
|||
|
|
|
|||
|
|
### 2. 智能语音设备集成
|
|||
|
|
|
|||
|
|
系统支持多种智能语音设备:
|
|||
|
|
- **小度音箱** - 百度小度
|
|||
|
|
- **天猫精灵** - 阿里天猫
|
|||
|
|
- **Rokid** - Rokid智能音箱
|
|||
|
|
|
|||
|
|
功能包括:欢迎词播放、离房提示、设备重置等。
|
|||
|
|
|
|||
|
|
### 3. 缓存策略
|
|||
|
|
|
|||
|
|
**多级缓存架构:**
|
|||
|
|
- **L1**: MemoryCache (进程内缓存)
|
|||
|
|
- **L2**: Redis (分布式缓存)
|
|||
|
|
- **L3**: Memcached (可选)
|
|||
|
|
|
|||
|
|
**缓存应用场景:**
|
|||
|
|
- 主机在线状态
|
|||
|
|
- 设备状态数据
|
|||
|
|
- 取电状态
|
|||
|
|
- 配置信息
|
|||
|
|
|
|||
|
|
### 4. 消息队列
|
|||
|
|
|
|||
|
|
使用Redis Pub/Sub进行消息通信:
|
|||
|
|
- `redis-takecard_change` - 取电状态变更
|
|||
|
|
- `redis-serviceinfo_change` - 服务信息变更
|
|||
|
|
- `redis-on_off_line` - 上下线状态
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 数据库设计
|
|||
|
|
|
|||
|
|
**数据库**: SQL Server
|
|||
|
|
**数据库名**: CRICS
|
|||
|
|
|
|||
|
|
### 主要数据表
|
|||
|
|
|
|||
|
|
| 表名 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| tb_Host | 主机信息 |
|
|||
|
|
| tb_HostModal | 主机回路模块 |
|
|||
|
|
| tb_RoomType | 房间类型 |
|
|||
|
|
| tb_RoomStatus | 房间状态 |
|
|||
|
|
| tb_SysHotel | 酒店信息 |
|
|||
|
|
| tb_SysUser | 系统用户 |
|
|||
|
|
| tb_AlarmSetting | 告警设置 |
|
|||
|
|
| tb_FaultRecord | 故障记录 |
|
|||
|
|
| tb_HostModalEnergy | 能耗统计 |
|
|||
|
|
| ... | 更多表参见DBSql |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 配置文件说明
|
|||
|
|
|
|||
|
|
### Spring.NET 配置
|
|||
|
|
|
|||
|
|
配置文件位于各项目的 `Config` 目录下:
|
|||
|
|
|
|||
|
|
- `WebSite/Config/Controllers.xml` - 控制器依赖注入配置
|
|||
|
|
- `Service/Config/*.xml` - 服务层配置
|
|||
|
|
- `Dao/Config/*.xml` - 数据访问层配置
|
|||
|
|
- `RCUHost/Config/*.xml` - RCU服务配置
|
|||
|
|
|
|||
|
|
### Web.config
|
|||
|
|
|
|||
|
|
主要配置项:
|
|||
|
|
- 数据库连接字符串
|
|||
|
|
- NHibernate配置
|
|||
|
|
- log4net日志配置
|
|||
|
|
- Spring.NET配置
|
|||
|
|
- Redis连接配置
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 依赖注入
|
|||
|
|
|
|||
|
|
项目使用 **Spring.NET** 作为IoC容器,通过XML配置文件进行依赖注入。
|
|||
|
|
|
|||
|
|
**配置示例:**
|
|||
|
|
```xml
|
|||
|
|
<object type="WebSite.Controllers.HostController, WebSite" parent="BaseController" singleton="false">
|
|||
|
|
<property name="HostManager" ref="Manager.Host" />
|
|||
|
|
<property name="HostAirManager" ref="Manager.HostAir" />
|
|||
|
|
...
|
|||
|
|
</object>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 开发指南
|
|||
|
|
|
|||
|
|
### 环境要求
|
|||
|
|
- Visual Studio 2010 或更高版本
|
|||
|
|
- .NET Framework 4.0
|
|||
|
|
- SQL Server 2008 或更高版本
|
|||
|
|
- Redis Server
|
|||
|
|
- IIS (部署用)
|
|||
|
|
|
|||
|
|
### 项目构建
|
|||
|
|
1. 使用Visual Studio打开 `CRICS_V3_1124.sln`
|
|||
|
|
2. 还原NuGet包(如有)
|
|||
|
|
3. 配置数据库连接字符串
|
|||
|
|
4. 执行 `DBSql/crics.sql` 初始化数据库
|
|||
|
|
5. 构建解决方案
|
|||
|
|
|
|||
|
|
### 调试运行
|
|||
|
|
1. 设置 `WebSite` 为启动项目
|
|||
|
|
2. 配置IIS Express或本地IIS
|
|||
|
|
3. F5启动调试
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 主要功能模块
|
|||
|
|
|
|||
|
|
1. **设备控制** - 灯光、空调、窗帘、电视等
|
|||
|
|
2. **状态监控** - 实时状态查看、告警通知
|
|||
|
|
3. **场景管理** - 场景配置、一键控制
|
|||
|
|
4. **能耗统计** - 用电量统计、能耗分析
|
|||
|
|
5. **用户管理** - 权限控制、角色管理
|
|||
|
|
6. **酒店管理** - 多酒店支持、分组管理
|
|||
|
|
7. **API接口** - 第三方系统集成
|
|||
|
|
8. **微信控制** - 微信公众号集成
|
|||
|
|
9. **语音控制** - 智能音箱集成
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 版本信息
|
|||
|
|
|
|||
|
|
- **版本**: V3
|
|||
|
|
- **最后更新**: 2024年12月
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. RCU通信使用UDP协议,注意防火墙配置
|
|||
|
|
2. Redis缓存需要正确配置连接信息
|
|||
|
|
3. 数据库初始化脚本需要根据实际情况修改路径
|
|||
|
|
4. 生产环境部署注意安全配置
|