b3njaminbaya/iot-custodian
GitHub: b3njaminbaya/iot-custodian
一个基于 React 和 Supabase 构建的 IoT 设备实时监控与异常事件管理平台,帮助运维团队跟踪设备状态并在指标越限时自动响应。
Stars: 0 | Forks: 0
# IoT Custodian
实时 IoT 设备监控、异常检测和事件响应 — 基于 React 和 Supabase 构建。
## 状态
本项目正在积极开发中。代码库的工程审计(包括架构、功能缺失、安全发现和路线图)在内部进行跟踪;总结如下:身份验证、设备/事件数据以及可视化仪表板是真实可用的,而部分页面(分析、用户管理、报告、设置)目前仅为 UI,尚未接入实时数据。目前的异常检测是一个简单的阈值模型,而不是机器学习——这已列入路线图,尚未发布。
## 技术栈
- **前端:** React 18, TypeScript, Vite, Tailwind CSS, shadcn/ui, Recharts
- **后端:** Supabase (Postgres, Auth, Row-Level Security, Deno 上的 Edge Functions)
- **数据流:** 设备使用基于设备的 API key 对 `telemetry-ingestion` edge function 进行身份验证,该函数对传入的读数进行评分,并在读数越过阈值时开启事件
## 核心功能
### 用户管理
基于 Supabase Auth 的注册/登录,配备 `profiles` 表(角色:admin、device owner 或 security analyst),在注册时通过数据库触发器自动创建。
### 设备管理
设备注册、状态跟踪(online/offline/maintenance)以及基于设备的元数据。
### 遥测与异常检测
设备将传感器读数发布到 edge function,该函数根据可配置的阈值对读数进行评分并标记异常。被标记的读数会自动开启事件。
### 事件管理
事件经历 `new → investigating → resolved` 的状态流转,包括分配给 security analyst 以及记录解决时间戳。
### 通知
目前已实现 webhook 推送。Email/SMS 发送尚未接入提供商。
## 本地开发
```
git clone
cd IoT-Custodian
npm install
cp .env.example .env # fill in your Supabase project values
npm run dev
```
### 环境变量
将 `.env.example` 复制到 `.env` 并设置:
| 变量 | 描述 |
|---|---|
| `VITE_SUPABASE_URL` | 你的 Supabase 项目 URL |
| `VITE_SUPABASE_PUBLISHABLE_KEY` | 你的 Supabase anon/publishable key |
| `VITE_SUPABASE_PROJECT_ID` | 你的 Supabase 项目 ID |
`.env` 已被 gitignored — 切勿提交真实的凭证。
### 数据库
Schema 和 Row-Level Security 策略位于 `supabase/migrations/` 中,通过 Supabase CLI 进行管理。该目录是 schema 的唯一事实来源。
### Edge Functions
基于 Deno 的 Supabase Edge Functions 位于 `supabase/functions/`:
- `device-management` — 设备的 CRUD 操作,限定于已认证的用户范围
- `incident-management` — 事件列表、分配和状态更新
- `telemetry-ingestion` — 通过设备 API key 接收设备遥测数据,对其进行评分,并在出现异常时开启事件
- `notifications` — webhook 推送和应用内通知记录
使用 Supabase CLI 部署:`supabase functions deploy `。
## 许可证
MIT — 查看 [许可证](LICENSE)。
## 联系方式
Benjamin Mweri Baya — b3njaminbaya@gmail.com
标签:React, Supabase, Syscalls, 告警管理, 异常检测, 测试用例, 物联网, 自动化攻击, 设备监控, 运维监控