{"id":50587027,"url":"https://github.com/coloz/diandeng-service","last_synced_at":"2026-06-05T07:02:25.355Z","repository":{"id":336058726,"uuid":"1138519036","full_name":"coloz/diandeng-service","owner":"coloz","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-11T08:54:04.000Z","size":405,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-11T10:17:42.336Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coloz.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-20T19:23:51.000Z","updated_at":"2026-02-11T08:54:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/coloz/diandeng-service","commit_stats":null,"previous_names":["coloz/diandeng-broker","coloz/diandeng-service"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/coloz/diandeng-service","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coloz%2Fdiandeng-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coloz%2Fdiandeng-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coloz%2Fdiandeng-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coloz%2Fdiandeng-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coloz","download_url":"https://codeload.github.com/coloz/diandeng-service/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coloz%2Fdiandeng-service/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33932048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-05T07:02:24.018Z","updated_at":"2026-06-05T07:02:25.344Z","avatar_url":"https://github.com/coloz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 点灯Broker Lite\n\n点灯Broker Lite 是一个基于 Node.js 的轻量级 MQTT Broker 服务。  \n以 [Aedes](https://github.com/moscajs/aedes) 为核心组件，[Fastify](https://fastify.dev/) 提供 HTTP 服务，使用 Map 缓存，SQLite 做持久化。  \n设备端可以是手机 App、Web 页面、ESP32、Arduino 等，可通过 MQTT 或 HTTP 接入；  \n同时提供 Web 用户接口服务（`/user/*`），用于设备管理和调试。\n\n## 快速开始\n\n### 开发模式\n```bash\nnpm install\nnpm start          # 启动所有服务 (MQTT Broker + Web 用户接口)\nnpm run dev        # 仅启动 MQTT Broker (开发模式)\nnpm run dev:web    # 仅启动 Web 用户接口服务 (开发模式)\n```\n\n### 构建生产版本\n```bash\nnpm run build      # 构建到 dist 目录\n```\n\n构建后的使用方法：\n```bash\ncd dist\nnpm install\nnode cli.js        # 启动所有服务\nnode cli.js broker # 仅启动 MQTT Broker\nnode cli.js web    # 仅启动 Web 用户接口服务\n```\n\n### CLI 命令\n```bash\nnode cli.js [命令] [选项]\n\n命令:\n  all, start    启动所有服务 (MQTT Broker + Web 用户接口) [默认]\n  broker        仅启动 MQTT Broker 服务\n  web           仅启动 Web 用户接口服务\n  help          显示帮助信息\n  version       显示版本信息\n\n选项:\n  --verbose, -V 启用详细日志输出\n```\n\n### 环境变量\n\n支持通过 `.env` 文件或系统环境变量进行配置：\n\n| 变量名 | 默认值 | 说明 |\n|--------|--------|------|\n| `MQTT_PORT` | `1883` | MQTT 服务端口 |\n| `MQTT_HOST` | `0.0.0.0` | MQTT 服务监听地址 |\n| `HTTP_PORT` | `3000` | 设备端 HTTP API 端口 |\n| `HTTP_HOST` | `0.0.0.0` | 设备端 HTTP 监听地址 |\n| `WEB_PORT` | `3001` | Web 用户接口服务端口 |\n| `LOG_LEVEL` | - | 日志级别 (none/error/warn/info/debug) |\n| `USER_TOKEN` | - | 用户接口认证 Token，留空则不需认证 |\n| `DB_FILENAME` | `broker.db` | 数据库文件名（相对于 data 目录） |\n| `MESSAGE_MAX_LENGTH` | `1024` | 消息最大长度（字节） |\n| `PUBLISH_RATE_LIMIT` | `1000` | 发布频率限制（毫秒） |\n| `MESSAGE_EXPIRE_TIME` | `120000` | HTTP 消息暂存过期时间（毫秒） |\n| `TIMESERIES_RETENTION_DAYS` | `30` | 时序数据保留天数 |\n| `BRIDGE_ENABLED` | `false` | 是否启用 Bridge 跨 Broker 通信 |\n| `BROKER_ID` | - | 本 Broker 唯一标识（首次启动自动生成） |\n| `BRIDGE_TOKEN` | - | Bridge 连接 Token（首次启动自动生成） |\n\n首次运行会自动创建和初始化数据库。\n\n## 📚 API 文档\n\n详细接口文档已按功能拆分至 `docs/` 目录：\n\n| 文档 | 说明 | 基础URL |\n|------|------|---------|\n| [API 总览](docs/API.md) | 接口概览、错误码汇总、限制机制汇总 | - |\n| [HTTP 接口文档](docs/API-HTTP.md) | 设备注册、上线、HTTP 消息通信 | `http://localhost:3000` |\n| [MQTT 接口文档](docs/API-MQTT.md) | MQTT 连接、设备/组消息发布与订阅 | `mqtt://localhost:1883` |\n| [Web 用户接口文档](docs/API-User.md) | 用户接口，设备管理和调试 | `http://localhost:3001` |\n| [定时任务接口文档](docs/API-Schedule.md) | 定时执行、倒计时、循环执行 | `http://localhost:3000` |\n| [Bridge 桥接文档](docs/API-Bridge.md) | 跨 Broker 通信，多 Broker 设备互联 | - |\n\n## 限制机制\n1. 一个 authKey 只能一个设备使用，每次获取连接信息都将重置连接凭证\n2. 设备只能发布和订阅属于自身的 Topic，操作其他 Topic 将被断开连接\n3. 设备消息发布频率最高每秒 1 次，否则将被断开连接\n4. 每条消息长度不能大于 1024 字节，否则将被断开连接\n5. 设备只能和所在组（Group）的其他设备通信，1 个设备可以在多个组中\n6. HTTP 模式设备的消息暂存 120 秒，过期自动清除\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoloz%2Fdiandeng-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoloz%2Fdiandeng-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoloz%2Fdiandeng-service/lists"}