Skip to content

Commit 9d9482e

Browse files
THUNDER PHUMclaude
andcommitted
docs: forecast learning loop, battery health, year insights (README/ARCHITECTURE)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 6329fd6 commit 9d9482e

2 files changed

Lines changed: 7 additions & 0 deletions

File tree

‎ARCHITECTURE.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ PWA ดูข้อมูลระบบโซลาร์เซลล์แบ
8383
| `GET /api/device` | ค่าเครื่อง (เฟส/PV/BMS) cache 60s · รับ `?station=` |
8484
| `GET /api/weather` | TMD/Open-Meteo + UV (cache 30 นาที) |
8585
| `GET /api/history?range=day\|month\|year` | กราฟย้อนหลัง (D1 ก่อน → Deye) · รับ `?station=` |
86+
| `GET /api/forecast/accuracy?days=` | คาดพรุ่งนี้ (จาก `forecast_log`) vs `daily.gen` ของวันที่จบแล้ว — คะแนน 100−MAPE, bias, MAE + แถว |
87+
| `GET /api/battery/health?days=` | ความจุใช้ได้จริงจากช่วงคายประจุ (samples), SOH = ÷ (Ah × V ที่วัดกลาง SOC), รอบ, DoD · cache 6 ชม. |
8688
| `GET /api/device/history?sn=&days=&keys=` | แนวโน้มค่าเครื่องจาก `device_samples` (bucket ≤240 จุด/คีย์, memo 10 นาที) |
8789
| `GET /api/export?range=day\|month\|year\|all&date=` | CSV จาก D1 ของสถานีหลัก (BOM, attachment) — สำหรับสคริปต์ · ปุ่มในแอปสร้าง CSV ฝั่ง client จากข้อมูลที่แสดงอยู่ (ทุกสถานี) |
8890
| `GET /api/settings` / `POST /api/settings` | ค่าไฟ/ขายคืน/ทุน/CO₂ (whitelist) |
@@ -106,6 +108,7 @@ middleware: `ensureSchema` → auth gate (`/api/*` ยกเว้น login/sess
106108
- `samples(ts, gen_power, use_power, grid_power, batt_power, soc, *_today, gen_total)` — snapshot ทุก 5 นาที · **prune >90 วัน** (`SAMPLES_RETENTION_DAYS`) — backfill/self-heal เขียนด้วย DO NOTHING (แถวจาก cron ชนะ)
107109
- `device_samples(sn, ts, data)` — measure point ทั้งหมดของทุก inverter ทุก ~15 นาที · **prune >180 วัน** (`DEVICE_RETENTION_DAYS`) — อ่านโดย `/api/device/history`
108110
- `daily(day, gen, use, buy, sell, charge, discharge, peak_power, peak_ts)` — สรุปรายวัน เก็บถาวร · peak ขยับขึ้นเท่านั้น
111+
- `forecast_log(day, predicted, cond, psh, cap_kw, made_at)` (schema v3) — "คาดพรุ่งนี้" ตัวสุดท้ายของแต่ละวัน เขียนทับทุก tick; ประเมินเทียบ `daily.gen` เมื่อวันจบ → ความแม่นยำ + เรียนรู้ค่าเมฆ (`lib/skylearn.ts`: median ต่อ cond ถ่วงด้วย prior K=3)
109112

110113
---
111114

@@ -145,6 +148,7 @@ src/
145148
lib/ api.ts (ApiError + ?station=) format.ts weather.ts analysis.ts device.ts
146149
diagnostics.ts (สุขภาพเครื่อง — config-or-silent) forecast.ts (PSH จาก sun) useCapacity.ts (kWp หรือ peakPower)
147150
economics.ts (savings signed + savingsLabel, co2Of(settings)) settings.ts (rate/sellRate/systemCost/co2Factor)
151+
calib.ts (kWp จากวันแดดดี) skylearn.ts (ค่าเมฆเรียนรู้ + accuracy) battery.ts (SOH/รอบ/DoD) season.ts (ปี/ฤดู/คาดทั้งปี) peak.ts
148152
config.ts (ค่าเริ่มต้น) ui.ts (glass/plate tokens) icons.tsx wxicon.tsx (Meteocons) haptics.ts scenarios.ts brand.ts
149153
components/ Splash PinGate Header BottomNav StationSwitcher PullToRefresh DevPanel InstallPrompt
150154
HomeView TodayView WeatherView HistoryView (compare + CSV) LifetimeView DeviceView (alarm log + DeviceTrends)

‎README.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@
5757
- **คำแนะนำ** — การ์ดวิเคราะห์อัตโนมัติจากเลขจริง (สมการสมดุลพลังงาน — **ไม่ใช่ AI**) ปรับตามชนิดระบบ on/hybrid/off-grid
5858
- **รายละเอียดเครื่อง** — ค่าต่อเฟส/PV string/BMS (เข้าผ่านปุ่มบนหน้าหลัก) · **แจ้งเตือนจากอินเวอร์เตอร์ (Deye alarm log จริง)** · **ตรวจสุขภาพระบบ** (สมดุลเฟส / ช่องแบต / V-Hz / อุณหภูมิ — เงียบเมื่อปกติ) · **แนวโน้มสุขภาพ** ย้อนหลัง 1–90 วัน (SOC / อุณหภูมิ / แรงดันแบต / กำลังต่อสตริง / แรงดันกริด)
5959
- **แจ้งเตือนออกนอกแอป (optional)** — Discord webhook / Telegram: อินเวอร์เตอร์ออฟไลน์ (ยืนยัน 15 นาที) · Deye alarm เกิด/หาย · ดึง Deye ไม่ได้ติดกัน · ฟ้าโปร่งกลางวันแต่ไม่ผลิตไฟ · ไฟกริดหาย · แบตต่ำ — ส่ง "กลับมาปกติ" เมื่อหาย · ผลวิเคราะห์เชิงคำแนะนำอยู่ในแอป ไม่ push (เว้นแต่ `ALERT_HEURISTICS=1`) · ปิดรายกติกาด้วย `ALERT_MUTE`
60+
- **พยากรณ์ที่เรียนรู้จากผลจริง** — ขนาดระบบสอบเทียบจากวันแดดดีจริง + ค่าเมฆของบ้านนี้เรียนรู้จาก "คาดพรุ่งนี้ vs ผลิตจริง" ทุกวัน · การ์ด **ความแม่นยำพยากรณ์** (คะแนน/คลาดเฉลี่ย/7 วันล่าสุด) ในแท็บอากาศ
61+
- **สุขภาพแบตเตอรี่ (วัดจริง)** — ความจุใช้ได้จริงจากช่วงคายประจุต่อเนื่อง, SOH เทียบพิกัด BMS × แรงดันที่วัดได้, รอบเต็ม, ใช้ลึกเฉลี่ย, แนวโน้ม 60 วัน (แท็บ Inverter)
62+
- **ภาพรวมทั้งปี** — ผลิต/วัน รายเดือน (ปีก่อนเทียบ), เดือนดีสุด/แย่สุด, ตามฤดู, เทียบปีก่อน, คาดผลิตทั้งปีจากแดดตามฤดูของพิกัดบ้าน (แท็บย้อนหลัง → ปี)
6063
- **เทียบ + export** — เทียบกับช่วงก่อนหน้าแบบเวลาเท่ากัน (วันนี้ vs เมื่อวานถึงเวลานี้ ฯลฯ) · ดาวน์โหลด CSV (ทุก 5 นาที / รายวัน / รายเดือน / ทั้งหมด)
6164
- **หลายสถานี** — ถ้าบัญชีมี >1 สถานี จะมีตัวสลับสถานีบนหัวจอให้อัตโนมัติ (จำค่าที่เลือก)
6265
- **ทนทาน** — เชื่อม Deye ไม่ได้ → แถบ "เชื่อมต่อระบบไม่ได้" + คงข้อมูลล่าสุด + ลองใหม่อัตโนมัติ · ข้อมูลไม่ขยับ ≥15 นาที → แถบ "ระบบเก็บข้อมูลหยุด/อินเวอร์เตอร์ไม่ส่งข้อมูล" + สาเหตุ · token หมดอายุกู้คืนเอง (login มี backoff กันบัญชีล็อก) · cron ไม่บันทึกค่า 0 ตอนระบบล่ม และ**เติมข้อมูลย้อนหลังเองหลังกลับมา** · `/api/_health` ตอบ 503 เมื่อระบบเก็บข้อมูลหยุด (ต่อ uptime monitor ได้)

0 commit comments

Comments
 (0)