# Hiot **Repository Path**: kdisi_admin/hiot ## Basic Information - **Project Name**: Hiot - **Description**: 医院Iot平台 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-28 - **Last Updated**: 2026-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hiot `hiot` 是一个面向医疗、楼宇与工业物联网场景的双子系统工程,包含边缘侧 `gateway` 与中心侧 `platform`: - `gateway/`:Rust 边缘网关,负责现场资源接入、协议驱动、采集调度、本地告警、边缘存储与北向上报。 - `platform/`:Go + React 全域物联感知中台,负责网关接入、MQTT 汇聚、资产/规则管理、时序与告警查询、控制命令下发。 两者通过 MQTT 协同,形成“现场设备 / 资源 → 边缘网关 → 中心平台 → 运维控制台”的数据链路。 ## 总体架构 ```text +-----------------------+ 采集/主动上报 +---------------------------+ | 现场设备 / 资源 | <-----------------------> | gateway | | 串口 / TCP / 工业协议 | | Rust + Axum + SQLite | +-----------------------+ | web-lite / egui desktop | +-------------+-------------+ | | MQTT up/down v +-------------+-------------+ | platform | | Go + React + PostgreSQL | | embedded MQTT broker | +-------------+-------------+ | | HTTP API / Web UI v +---------------------------+ | 运维 / 管理前端 | +---------------------------+ ``` ## 仓库结构 ```text . ├── gateway/ # Rust 边缘网关(独立 Git 仓库/工作区) │ ├── apps/ # gateway-server、gateway-desktop 等应用入口 │ ├── crates/ # 网关核心 crate:API、采集、驱动、告警、存储、北向等 │ ├── config/ # 配置、驱动模板、迁移、北向配置目录 │ ├── docs/ # 网关架构、开发、协议与联调文档 │ ├── tests/ # shell / Playwright / 集成回归脚本 │ ├── tools/ # 江苏电信 B 等联调工具 │ └── web-lite/ # 后端直接托管的轻量 Web 控制台 ├── platform/ # 中心平台 │ ├── backend/ # Go HTTP API + MQTT broker/bridge + 前端静态托管 │ ├── frontend/ # React + TypeScript + Vite 控制台 │ ├── docs/ # 平台侧数据库、MQTT、验证说明 │ └── scripts/ # 本地启动、停止与端到端验证脚本 └── README.md # 仓库总览 ``` ## 子系统概览 ### gateway:边缘网关 `gateway` 当前是 Rust workspace,主要能力包括: - 资源、设备、驱动、阈值规则与北向配置管理。 - HTTP API、WebSocket 仪表盘快照推送、后端静态托管 `web-lite/`。 - SQLite 本地持久化、配置文件驱动热重载、资源目录同步。 - 内置工业协议驱动:Modbus、S7、BACnet/IP、DLT645、电总、CHD803LM、E00 报警设备等。 - TCP `client` / `listener` 两种资源模式,兼容轮询采集与设备主动上报。 - 采集结果归一化:设备状态与业务点位分离,历史样本只保存业务点位。 - 活动/历史告警、ACK、静音、清除,以及基于归一化业务点位的告警规则。 - 北向对接:佳力图 MQTT、江苏电信 B(SOAP、FTP、模板导出与联调平台)。 关键技术栈:Rust 1.93、Axum、Tokio、SQLite、egui、原生 ES Module 静态 Web。 常用命令: ```bash cd gateway make check # cargo check --workspace make test # cargo test --workspace make run-server # 启动 gateway-server ``` 默认配置见 [`gateway/config/config.toml`](gateway/config/config.toml)。更多说明见 [`gateway/README.md`](gateway/README.md) 与 [`gateway/docs/DEVELOPMENT.md`](gateway/docs/DEVELOPMENT.md)。 ### platform:全域物联感知中台 `platform` 面向多个 gateway 提供统一接入、存储和管理能力,主要职责包括: - 内嵌 Mochi-MQTT broker,接收 gateway 上行消息并发布下行控制消息。 - 提供 HTTP API 与 React 控制台,用于登录鉴权、网关、资源空间、资产设备、测点、阈值、遥测、告警和命令管理。 - 将网关上报归并到 PostgreSQL:网关清单、资产/测点、规则视图、最新/历史遥测、告警事件、命令与阈值回执。 - 支持佳力图 MQTT v1 协议、状态同步请求、设备级阈值快照下发、命令回执追踪。 - 支持旧 SQLite 配置迁移到 PostgreSQL,以及 4000 测点端到端链路验证脚本。 关键技术栈:Go 1.25、React 19、TypeScript、Vite、PostgreSQL、Mochi-MQTT、Paho MQTT。 常用命令: ```bash cd platform make install # 安装前端依赖并下载后端 Go modules make backend # 只启动后端 make frontend # 只启动前端开发服务器 make dev # 同时启动后端和前端 make serve # 构建前端并由后端托管 ``` 默认后端地址为 `http://localhost:8000`,默认 MQTT broker 为 `tcp://127.0.0.1:1883`。更多说明见 [`platform/README.md`](platform/README.md)。 ## MQTT 协议基线 当前推荐使用佳力图 MQTT v1,默认 topic prefix 为 `jialitu`: ```text jialitu/v1/gateways/{gatewayId}/... ``` ### gateway -> platform - `jialitu/v1/gateways/{gatewayId}/report/devices`:设备/测点清单上报 - `jialitu/v1/gateways/{gatewayId}/report/thresholds`:阈值清单上报 - `jialitu/v1/gateways/{gatewayId}/events/telemetry`:遥测事件上报 - `jialitu/v1/gateways/{gatewayId}/events/alarm`:告警事件上报 - `jialitu/v1/gateways/{gatewayId}/acks/write`:写命令回执 - `jialitu/v1/gateways/{gatewayId}/acks/thresholds`:阈值同步回执 ### platform -> gateway - `jialitu/v1/gateways/{gatewayId}/requests/state-sync`:请求网关重报状态/清单/可选遥测快照 - `jialitu/v1/gateways/{gatewayId}/commands/thresholds`:设备级阈值快照下发 - `jialitu/v1/gateways/{gatewayId}/commands/write`:写控制命令下发 阈值同步是**设备级快照**语义,不是单点 patch:平台会把该设备当前有效的阈值规则整包下发到网关;如果只是把某个测点从告警点切回普通点,前端会显式走设备级清空快照,允许网关清掉最后一批规则。普通单点同步若目标测点没有报警规则,则会被平台拒绝,避免误清空网关侧规则。 平台仍保留部分历史 topic / payload 的兼容接收能力;新接入建议统一使用上述佳力图 MQTT v1 结构。 ## 本地联调建议 1. 准备 PostgreSQL,并创建平台数据库: ```sql CREATE DATABASE iot_platform; ``` 2. 启动平台后端: ```bash cd platform/backend export POSTGRES_URL='postgres://postgres:postgres@localhost:5432/iot_platform?sslmode=disable' go run ./cmd/server ``` 3. 启动平台前端(可选,开发模式): ```bash cd platform/frontend npm install npm run dev ``` 4. 启动 gateway: ```bash cd gateway cargo run -p gateway-server ``` 5. 在 gateway 中配置资源、设备、驱动与北向 MQTT,指向 platform broker;随后在 platform 控制台观察清单、遥测、告警、阈值回执和命令回执。 > 若使用 `platform/scripts/start-local.sh`,脚本默认 MQTT 端口可能为 `1884`;端到端验证命令请以 [`platform/README.md`](platform/README.md) 中的示例为准。 ## 验证与测试 常用验证入口: ```bash # gateway cd gateway make fmt make check make test make test-web-lite-static # platform cd platform make frontend-build cd backend && go test ./... ``` 端到端链路可参考: - [`platform/scripts/verify-jialitu-4000-flow.sh`](platform/scripts/verify-jialitu-4000-flow.sh) - [`platform/docs/jialitu-4000-point-flow-verification.md`](platform/docs/jialitu-4000-point-flow-verification.md) - [`gateway/scripts/jialitu_4000_gateway_e2e.py`](gateway/scripts/jialitu_4000_gateway_e2e.py) ## 文档索引 - 网关总览:[`gateway/README.md`](gateway/README.md) - 网关开发说明:[`gateway/docs/DEVELOPMENT.md`](gateway/docs/DEVELOPMENT.md) - 网关架构说明:[`gateway/docs/ARCHITECTURE.md`](gateway/docs/ARCHITECTURE.md) - 网关文档索引:[`gateway/docs/INDEX.md`](gateway/docs/INDEX.md) - 佳力图北向接口文档:[`gateway/proto-docs/佳力图/佳力图北向MQTT接口文档.md`](gateway/proto-docs/佳力图/佳力图北向MQTT接口文档.md) - 平台总览:[`platform/README.md`](platform/README.md) - 平台数据库设计:[`platform/docs/database-design.md`](platform/docs/database-design.md) - 告警联动验证:[`platform/docs/alarm-link-verification.md`](platform/docs/alarm-link-verification.md) ## 备注 - 根目录 README 仅提供仓库级总览;具体配置、接口和联调细节以各子系统 README 与 docs 为准。 - `gateway/` 当前本身也是一个独立 Git 仓库/工作区;在根仓库提交时请留意嵌套仓库状态。