# gateway **Repository Path**: kdisi_admin/gateway ## Basic Information - **Project Name**: gateway - **Description**: rust版本物联网网关 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-10 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HuShu Gateway / Rust Gateway 基于 Rust 的工业 / 物联网边缘网关,采用模块化单体架构。 ## 项目组成 | 组件 | 说明 | |---|---| | `gateway-server` | Axum + Tokio 后端服务 | | `gateway-desktop` | 基于 egui 的桌面客户端 | | `web-lite/` | 后端直接托管的静态 Web 控制台 | | `gateway-driver` | 工业协议驱动与主动上报运行时 | | `gateway-collector` | 采集调度状态与告警运行时 | | `gateway-northbound` | 佳力图、江苏电信 B 等北向适配 | --- ## 快速开始 ### 环境准备 - Rust `1.93.0` ```bash rustup toolchain install 1.93.0 rustup override set 1.93.0 ``` ### 启动后端 ```bash cargo run -p gateway-server ``` 默认监听 `http://127.0.0.1:80`,管理员账号 `admin` / `admin`。 常用环境变量: - `GATEWAY_CONFIG` - 指定配置文件路径 - `GATEWAY_MEMORY_MODE=balanced|eco` - 切换运行时内存模式 - `GATEWAY_DISABLE_WEBSOCKET=1|true` - 关闭实时推送 - `GATEWAY_LOW_MEMORY=1` - SQLite 低内存模式 ### 启动桌面客户端 ```bash cargo run -p gateway-desktop -- http://127.0.0.1:80 ``` ### 打开 Web 控制台 - 首页:`http://127.0.0.1:80/` - 健康检查:`http://127.0.0.1:80/health` - WebSocket:`ws://127://127.0.0.1:80/ws/client?token=...` `web-lite/` 无需构建,采用原生 ES Module。 --- ## 工作区结构 ``` apps/server # gateway-server 入口 apps/desktop # gateway-desktop 入口 crates/ api # HTTP / WebSocket / SOAP 路由与静态托管 api-contract # HTTP request / response DTO app # GatewayApplication 应用门面与业务编排 bootstrap # 启动装配、驱动加载、资源目录同步 driver # 驱动抽象、内置协议、配置文件驱动、TCP listener 运行时 collector # 采集计划、最新值、运行状态缓存 alarm # 阈值规则与活动/历史告警运行时 storage # SQLite 持久化与配置后端(TOML / SQLite) northbound # 佳力图 / 江苏电信 B 运行时与协议适配 jiangsu_telecom_b # 江苏电信 B SOAP / FTP 专用协议适配 config # 配置加载、路径发现、运行目录解析 domain # 共享领域模型与错误类型 egui # 桌面 UI、HTTP 客户端、WebSocket 订阅 ``` ### 运行目录 ``` config/ config.toml # 主配置 auth.toml # 管理员配置(TOML 后端) site/ # 站点配置(TOML 后端) drivers/ # 配置文件驱动(TOML) resource_catalogs/ # 资源目录(gc65xx、gt6757、x100、x200、y800) northbound/ # 北向配置落盘 migrations/ # SQLite 迁移脚本 session_secret.key # 会话签名密钥 data/ gateway_data.db # 默认数据库 web-lite/ # 静态前端 ``` --- ## 核心能力 ### 驱动与协议 - **配置文件驱动**:所有驱动统一放在 `config/drivers/*.toml`,按需热加载 - **内置协议**:Modbus、S7、BACnet/IP、DLT645、电总、CHD803LM、E00 报警设备、青鸟消防、Local IO - **TCP 资源模式**:`client`(主动连接)和 `listener`(本地监听,接收设备上报) - **采集归一化**:统一输出设备状态 + 业务点表,历史样本只落业务点位 ### 告警 - 阈值规则绑定归一化业务点位 - 告警规则同步按设备级完整快照替换 - 支持活动告警、历史告警、ACK、静音、清除 - 告警模板使用 `config/drivers/*.alarm.toml` ### 北向对接 | 平台 | 协议 | |---|---| | 佳力图 | MQTT | | 江苏电信 B | SOAP / FTP | ### 网关网络配置 - IP 持久化在 `config/config.toml`,启动时用运行时命令直接下发 - 支持修改确认 / 回滚流程 --- ## 常用命令 ```bash make fmt # cargo fmt --all make check # cargo check --workspace make test # cargo test --workspace + app 边界护栏 make run-server # cargo run -p gateway-server make release-host # 发布构建 ``` --- ## 部署约定 远端部署使用统一入口脚本: ```bash # GC65XX DEPLOY_PASSWORD='htnice' ./scripts/deploy_remote.sh \ --host 192.168.1.230 --model gc65xx --user root # Y800(armv7) DEPLOY_PASSWORD='htnice' ./scripts/deploy_remote.sh \ --host 192.168.7.112 --model y800 --user root \ --target armv7-unknown-linux-musleabihf # GT6757(aarch64,默认 eco) DEPLOY_PASSWORD='htnice' ./scripts/deploy_remote.sh \ --host 192.168.7.230 --model gt6757 --user root \ --target aarch64-unknown-linux-musl ``` 启动方式: - 有 `systemd`:安装 `gateway-rust.service` - 无 `systemd`:安装 `/etc/init.d/S98gateway-rust` 禁止使用旧式启动入口(`rcS`、`rc.d`、`/etc/rc*`)。 --- ## 文档索引 - [开发说明](docs/DEVELOPMENT.md) - 工具链、配置、环境变量、调试入口 - [架构说明](docs/ARCHITECTURE.md) - 分层关系、启动链路、运行时模型、API 边界 - [后端架构与设计](docs/DESIGN.md) - 模块化单体定位、核心 crate 职责、扩展点 - [文档索引](docs/INDEX.md) - 全部文档目录 - [佳力图北向接入](docs/jialitu-integration.md) - MQTT 配置、Topic、消息协议 - [重构记录](docs/REFACTORING.md) - 服务层架构重构过程 --- ## License MIT