# Kimi Code 额度监控 ESP32 实时显示系统 **Repository Path**: vi_king_66/KimiCodeWatch-ESP32 ## Basic Information - **Project Name**: Kimi Code 额度监控 ESP32 实时显示系统 - **Description**: No description available - **Primary Language**: JavaScript - **License**: CC-BY-4.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-21 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Kimi Code 额度监控 → ESP32 实时显示系统 ## 项目简介 通过浏览器 Tampermonkey 脚本自动抓取 [Kimi Code](https://www.kimi.com/code/console) 额度信息,通过局域网实时同步到 ESP32,ESP32 维护本地时钟并每秒打印时间,实现"零第三方工具"的额度监控小屏方案。 ## 系统架构 ``` ┌─────────────────┐ HTTP POST ┌─────────────┐ │ 浏览器(Edge/Chrome) │ ────────────────→ │ ESP32 │ │ + Tampermonkey │ 额度+同步时间 │ (局域网) │ └─────────────────┘ └──────┬──────┘ │ 串口每秒打印 [本地时间] 19:35:01 ``` ## 功能特性 - **自动读取额度**:本周用量、更多额度、重置时间、频限明细 - **智能等待**:页面未加载完时不发送空数据,自动重试 - **颜色预警**:额度≥70%橙色,≥90%红色 - **时间同步**:浏览器发送当前时间,ESP32 维护本地实时时钟 - **每秒打印**:ESP32 串口每秒输出 `[本地时间] HH:MM:SS` - **Web 查看**:浏览器访问 ESP32 IP 可查看额度页面 - **30秒刷新**:页面自动刷新,数据实时更新 ## 硬件需求 | 硬件 | 型号 | 数量 | | --- | ------------------ | --- | | 开发板 | ESP32-DevKitC | 1 | | 数据线 | Micro-USB / Type-C | 1 | > 无需 OLED 屏幕,纯串口输出即可工作。 ## 软件需求 | 软件 | 用途 | | -------------------------------------------------------------------------------------------------------------- | ---------- | | [Tampermonkey](https://www.tampermonkey.net/) | 浏览器脚本管理器 | | [Arduino IDE](https://www.arduino.cc/en/software) 或 [PlatformIO](https://platformio.org/) | ESP32 代码上传 | | [CH340/CP2102 驱动](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/usb-serial-jtag.html) | ESP32 串口通信 | ## 文件说明 | 文件 | 说明 | 下载 | | ------------------------- | ------------------- | ---------------------------------------------------------- | | `kimi_esp32_sync.user.js` | 浏览器 Tampermonkey 脚本 | [下载](sandbox:///mnt/agents/output/kimi_esp32_sync.user.js) | | `esp32_kimi_clock.ino` | ESP32 Arduino 代码 | [下载](sandbox:///mnt/agents/output/esp32_kimi_clock.ino) | ## 快速开始 ### 1. 配置 ESP32 编辑 `esp32_kimi_clock.ino`,修改 WiFi 配置: ```cpp const char* ssid = "你的WiFi名称"; const char* password = "你的WiFi密码"; ``` 上传代码到 ESP32,打开串口监视器(波特率 **115200**),记录打印的 IP 地址: ``` WiFi Connected! IP Address: 192.168.189.181 ``` ### 2. 配置浏览器脚本 1. 安装 [Tampermonkey](https://www.tampermonkey.net/) 插件 2. 下载 `kimi_esp32_sync.user.js`,拖到浏览器窗口安装 3. 编辑脚本,修改 ESP32 IP(如果和记录的不一致): ```javascript const ESP32_IP = 'http://192.168.189.181'; ``` ### 3. 启动监控 1. 浏览器登录 [kimi.com/code/console](https://www.kimi.com/code/console) 2. 页面右上角出现悬浮窗,显示实时额度 3. ESP32 串口开始打印: ``` ---------- 收到额度更新 ---------- 本周用量: 6% 重置时间: 162h 频限明细: 0% 频限重置: 4h 同步时间: 19:35:01 ---------------------------------- [本地时间] 19:35:02 [本地时间] 19:35:03 ... ``` ## 额度数据结构 Kimi Code 页面显示: | 显示项 | 示例 | 说明 | | ---- | ---------- | -------------- | | 本周用量 | 6% | 每周额度使用百分比 | | 更多额度 | 3% | 额外赠送额度 | | 重置时间 | 162h | 周额度重置倒计时 | | 频限明细 | 0% | 5分钟窗口频限使用 | | 频限重置 | 4h / 33min | 频限重置倒计时(小时或分钟) | ## 浏览器悬浮窗 ``` ┌─────────────────────────┐ │ ◉ Kimi额度 → ESP32 │ ├─────────────────────────┤ │ 本周用量 6% │ ← 绿色(正常)/橙色(≥70%)/红色(≥90%) │ 重置时间 162h │ │ 频限明细 0% │ │ 频限重置 4h │ ├─────────────────────────┤ │ 同步时间: 19:35:01 │ │ 下次刷新: 19:35:31 │ └─────────────────────────┘ ``` ## 调试方法 ### 浏览器端 按 `F12` → **Console**,查看日志: ``` [KimiQuota] 数据未就绪,继续等待... [Kimi→ESP32] 发送成功: 19:35:01 ``` ### ESP32 端 串口监视器 115200,查看: ``` [时间同步] 浏览器时间: 19:35:01 已同步到本地时钟 [本地时间] 19:35:02 ``` ### 常见问题 | 问题 | 原因 | 解决 | | ----------- | ------------ | -------------------------- | | 悬浮窗显示 `--` | 页面未加载完 | 等待3秒,脚本自动重试 | | ESP32 连接失败 | IP 错误或设备离线 | 检查串口打印的 IP,确认同局域网 | | CORS 错误 | 浏览器安全策略 | 使用 `GM_xmlhttpRequest` 已绕过 | | 收到两次更新 | 页面加载时数据未就绪 | 新版已修复,只发送有效数据 | | 频限重置显示 `--` | 0%时页面不显示重置时间 | 正常现象,有数值时会显示 | ## 技术细节 ### 浏览器脚本 - **@grant GM_xmlhttpRequest**:绕过浏览器 CORS 限制 - **正则匹配**:从页面文字提取额度,支持小时/分钟两种格式 - **智能等待**:数据未就绪时内部重试,避免发送空数据 - **自动刷新**:30秒刷新页面,保持数据最新 ### ESP32 时钟同步 ```cpp // 浏览器发送: time=19:35:01 // ESP32 解析为基准时间,之后用 millis() 偏移计算 unsigned long elapsedSec = (millis() - timeBaseMillis) / 1000; int totalSec = baseHour*3600 + baseMin*60 + baseSec + elapsedSec; ``` ## 安全提醒 - 脚本仅在本地局域网通信,不涉及外网 - 不存储或上传任何 Token 到第三方服务器 - 额度数据来自 Kimi 官方页面公开显示的内容 ## 版本历史 | 版本 | 日期 | 更新 | | ---- | ---------- | ------------------ | | v8.0 | 2026-05-21 | 时间同步 + 本地时钟 + 智能等待 | | v7.0 | 2026-05-21 | 实时时间每秒下发 | | v6.0 | 2026-05-21 | 绕过 CORS 限制 | | v5.0 | 2026-05-21 | 支持频限重置小时/分钟 | | v1.0 | 2026-05-21 | 基础额度读取 | ## 作者 基于 [Kimi](https://www.kimi.com) 官方平台开发,仅供个人学习使用。