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, 告警管理, 异常检测, 测试用例, 物联网, 自动化攻击, 设备监控, 运维监控