# 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 ... ``` --- ## 开发指南 ### 环境要求 - 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. 生产环境部署注意安全配置