Skip to content
botnickPublic

About

แอปดูระบบโซลาร์เซลล์ Deye แบบเรียลไทม์ ภาษาไทย · PWA ติดตั้งฟรีบน Cloudflare Workers + D1 — Real-time Deye solar PV monitor (Thai), free & open.

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Repository files navigation

โซลาร์มอนิเตอร์ · Deye Solar Monitor

แอปดูระบบโซลาร์เซลล์ Deye แบบเรียลไทม์ ภาษาไทย
ผลิตไฟ · ใช้ไฟ · แบตเตอรี่ · ซื้อ-ขายไฟ ครบในแอปเดียว — ติดตั้งเป็นแอปบนมือถือ รันฟรีบน Cloudflare ทุน 0 บาท

CI Cloudflare Workers + D1 React 19 TypeScript PWA Thai

Deploy to Cloudflare

เว็บไซต์ · ภาพหน้าจอ · ฟีเจอร์ · ติดตั้ง · ตั้งค่า · สถาปัตยกรรม · คู่มือ deploy · English

ภาพหน้าจอแอปโซลาร์มอนิเตอร์ 4 หน้า: หน้าหลัก วันนี้ อากาศ ย้อนหลัง


ทำไมต้องใช้

⚡ ดูตามเวลาจริง อัปเดตทุกนาที

บ้าน 3D ลากหมุนได้ เส้นไฟวิ่งจากแผงโซลาร์ แบตเตอรี่ และเสาไฟเข้าบ้านตามทิศทางจริง จาก Deye Cloud Open API รีเฟรชเองทุก 1 นาที

📱 เหมือนแอปจริง ใช้ได้ทุกวัย

ดีไซน์แบบ iPhone (หัวข้อใหญ่ แถบเมนูกระจก แป้น PIN) ตัวเลขใหญ่ ทุกสีมีคำกำกับ ปุ่มใหญ่ (Universal Design)

💸 ฟรีจริง

Cloudflare Workers + D1 free tier ล้วน ไม่มีค่าเซิร์ฟเวอร์รายเดือน ติดตั้งได้ในคลิกเดียว

🧠 วิเคราะห์ให้เอง

พยากรณ์การผลิตไฟที่เรียนรู้จากบ้านคุณ สุขภาพแบตเตอรี่ ภาพรวมทั้งปี และคำแนะนำจากตัวเลขจริง (ไม่ใช่ AI เดา)

🔔 แจ้งเตือนเมื่อมีปัญหา

อินเวอร์เตอร์ออฟไลน์ ไฟดับ แบตเตอรี่ต่ำ การแจ้งเตือนจาก Deye ส่งเข้า Discord / Telegram ได้

🔒 ปลอดภัย

กุญแจ Deye อยู่ฝั่งเซิร์ฟเวอร์เท่านั้น ผู้ใช้เข้าด้วย PIN ไม่ต้องรู้รหัสบัญชี Deye

ภาพหน้าจอ

หน้าหลัก
หน้าหลัก
สถานะ + ผังพลังงานตามเวลาจริง
วันนี้
วันนี้
ผลิต / ใช้ / ซื้อ / ไฟย้อน
อากาศ
อากาศ
พยากรณ์ + ช่วงแดดดีสุด
ย้อนหลัง
ย้อนหลัง
วัน / เดือน / ปี / ตลอด

บ้าน 3D บนหน้าหลัก

  • ลากซ้าย-ขวาเพื่อหมุนรอบบ้าน ลากขึ้น-ลงเพื่อก้มหรือเงยมุมกล้อง
  • เส้นไฟวิ่งตามสายจริง จากแผงโซลาร์ ผ่านอินเวอร์เตอร์ ไปยังบ้าน แบตเตอรี่ และเสาไฟ
  • ป้ายตัวเลขอยู่ติดกับอุปกรณ์แต่ละชิ้น
  • ท้องฟ้าและแสงเปลี่ยนตามเวลาจริงของบ้าน
กลางวัน
กลางวัน · ผลิตเต็ม + ไฟย้อน
แดดเย็น
แดดเย็น · ชาร์จแบตเตอรี่
กลางคืน
กลางคืน · ไฟในบ้านเปิด แบตเตอรี่จ่ายไฟ
ใช้ไฟกลางวันกับกลางคืน
ใช้ไฟกลางวัน กับ กลางคืน (เที่ยงถึงเที่ยง)
แบตเตอรี่ตอนนี้
แบตเตอรี่ตอนนี้ · ใช้ได้ถึงกี่โมง
ภาพรวมทั้งปี
ภาพรวมทั้งปี + คาดการณ์การผลิตทั้งปี
สุขภาพแบตเตอรี่
สุขภาพแบตเตอรี่ (วัดจริง)

ฟีเจอร์

ดูระบบตามเวลาจริง

  • หน้าหลัก — บ้าน 3D หมุนได้พร้อมเส้นไฟวิ่งตามทิศจริง, สถานะระบบ (ปกติ/แจ้งเตือน), ผลิตไฟวันนี้, เงินที่ประหยัดวันนี้ และ เดือนนี้ประหยัดแล้ว พร้อมตัวเลขคาดการณ์ทั้งเดือน
  • แบตเตอรี่ตอนนี้ — กำลังชาร์จหรือจ่ายไฟเท่าไร และ เพราะอะไร เป็นประโยคสั้น ๆ, "ใช้ได้ถึงกี่โมง" / "เต็มราวกี่โมง" คิดจากความจุที่วัดจริงและจุดตัดที่เรียนรู้จากข้อมูลบ้านนี้ (ไม่ใช้ค่าบนฉลาก)
  • วันนี้ — สรุปผลิต/ใช้/ซื้อ/ไฟย้อน, สัดส่วนพึ่งพาตัวเอง, การหมุนเวียนพลังงาน · สลับมุมมอง ทั้งวัน หรือ เที่ยงถึงเที่ยง (เห็นการใช้ไฟกลางวันกับกลางคืนแยกกัน)
  • รายละเอียดเครื่อง — ค่าต่อเฟส / PV string / BMS, การแจ้งเตือนจริงจากอินเวอร์เตอร์, ตรวจสุขภาพระบบ (สมดุลเฟส · ช่องแบตเตอรี่ · แรงดัน/ความถี่ · อุณหภูมิ — เงียบเมื่อปกติ), แนวโน้ม 1–90 วัน
  • หลายสถานี — บัญชีมีหลายระบบ มีปุ่มสลับระบบที่ด้านบนของจอให้อัตโนมัติ

ผลิตไฟวันนี้ ใช้ไฟ ซื้อไฟ และเงินที่ประหยัดวันนี้กับเดือนนี้ สัดส่วนพึ่งพาตัวเองวันนี้

วิเคราะห์และพยากรณ์

  • พยากรณ์ที่เรียนรู้จากผลจริง — ขนาดระบบสอบเทียบจากวันแดดดี + ค่าเมฆของบ้านนี้ปรับทุกวันจาก ค่าคาดการณ์เทียบกับค่าจริง (วันใหม่มีน้ำหนักมากกว่า ตามฤดูทัน) · การ์ดความแม่นยำของการพยากรณ์: คะแนน + แท่งผลิตจริงรายวันพร้อมขีดที่คาดไว้ และป้าย แม่น / ต่ำไป / สูงไป
  • อากาศ — พยากรณ์ TMD (หรือ Open-Meteo), เส้นทางดวงอาทิตย์ + ช่วงแดดดีสุด, ดัชนี UV, ราย ชม. + 7 วัน
  • สุขภาพแบตเตอรี่ (วัดจริง) — ความจุใช้ได้จริงจากช่วงคายประจุ, SOH เทียบพิกัด BMS, จำนวนรอบ, ใช้ลึกเฉลี่ย, แนวโน้ม 60 วัน
  • ย้อนหลัง + ภาพรวมทั้งปี — กราฟราย วัน/เดือน/ปี/ตลอด, สรุปรายเดือน (เงินที่ประหยัด, คาดการณ์ทั้งเดือน, ยอดผลิต / ใช้ / ซื้อ / แบตเตอรี่จ่ายไฟหรือไฟย้อน), เดือนดีสุด/แย่สุด, เทียบปีก่อน, คาดการณ์การผลิตทั้งปีตามแดดของพิกัดบ้าน
  • คำแนะนำอัตโนมัติ — คิดจากสมการสมดุลพลังงานของเลขจริง ปรับตามชนิดระบบ on-grid / hybrid / off-grid
  • เทียบ + ส่งออก — เทียบช่วงก่อนหน้าแบบเวลาเท่ากัน (วันนี้ vs เมื่อวานถึงเวลานี้) · ดาวน์โหลด CSV ทุก 5 นาที / รายวัน / รายเดือน

คาดการณ์การผลิตไฟ วันนี้ พรุ่งนี้ มะรืนนี้ ความแม่นยำพยากรณ์ เทียบผลิตจริงกับที่คาดไว้รายวัน สรุปเดือนนี้ เงินที่ประหยัด คาดทั้งเดือน และยอดผลิต ใช้ ซื้อ แบตจ่าย

ทนทาน ไม่ต้องเฝ้า

  • แจ้งเตือนออกนอกแอป (ไม่บังคับ) — Discord webhook / Telegram: อินเวอร์เตอร์ออฟไลน์, การแจ้งเตือนเกิดขึ้นหรือหายไป, ไฟดับ, แบตเตอรี่ต่ำ, ฟ้าโปร่งแต่ไม่ผลิตไฟ — ส่ง "กลับมาปกติ" ให้ด้วย · ออกแบบให้ ไม่แจ้งเตือนพร่ำเพรื่อ (ต้องยืนยันหลายรอบก่อนส่ง)
  • ไม่บันทึกค่าปลอม — ตัวส่งข้อมูลหลุด / Deye ส่งค่าค้าง ระบบรู้และไม่เก็บซ้ำ · กลับมาแล้ว เติมข้อมูลย้อนหลังให้เอง
  • แถบสถานะชัดเจน — เชื่อมต่อ Deye ไม่ได้ ระบบหยุดบันทึกข้อมูล หรืออินเวอร์เตอร์ไม่ส่งข้อมูล แอปบอกสาเหตุให้เห็น · /api/_health ใช้กับ uptime monitor ได้
  • ติดตั้งเป็นแอป (PWA) — คำแนะนำติดตั้งปรับตามเครื่อง (Android / iPhone / Mac / อื่นๆ) · ใช้งาน offline ได้

ติดตั้ง (ฟรี)

ทางที่ 1 — คลิกเดียว: กดปุ่ม Deploy to Cloudflare ด้านบน แล้ว Cloudflare จะสร้าง repo และฐานข้อมูล D1 พร้อมถามค่าลับให้เอง เสร็จแล้วจะได้ลิงก์ https://deyecloud.<ชื่อคุณ>.workers.dev เปิดบนมือถือแล้วกด เพิ่มลงหน้าจอโฮม

ทางที่ 2 — คำสั่งเดียว (ใช้ส่วนตัว):

npx wrangler login        # ล็อกอิน Cloudflare ครั้งเดียว
cp .dev.vars.example .dev.vars   # ใส่ DEYE_APP_SECRET, DEYE_PASSWORD, APP_PIN, TMD_TOKEN
npm run setup             # สร้าง D1 + ตั้งค่าลับ + build + deploy ให้อัตโนมัติ

อัปเดตครั้งต่อไป npm run deploy · ดู log npm run tail · ตารางใน D1 สร้างเองตอนใช้งานครั้งแรก และระบบเก็บข้อมูลให้เองทุก 5 นาที — ดูรายละเอียดทั้งหมดได้ใน DEPLOY.md

รันบนเครื่องตัวเอง (สำหรับนักพัฒนา)
npm install
cp .dev.vars.example .dev.vars   # ใส่ค่าจริง
npm run dev                       # เปิด http://localhost:5174  (มือถือใน LAN: http://<ip>:5174)
  • ใส่ PIN ที่ตั้งไว้เพื่อเข้า · ระบบตั้งเวลาเก็บข้อมูล (cron) ไม่ทำงานใน vite dev ให้เปิด GET /api/_poll หนึ่งครั้งเพื่อดึงข้อมูลครั้งแรก (route /api/_* ต้องตั้ง APP_PIN และล็อกอินก่อน)
  • ดูข้อมูลดิบจาก Deye GET /api/_debug · ทดสอบหน้าจอด้วยฉากจำลอง ?dev=1 หรือ ?sim=peak
คำสั่ง ทำอะไร
npm run dev dev server (port 5174) เสิร์ฟ Worker + หน้าเว็บ
npm run build build ไปไว้ที่ dist/
npm run typecheck · npm test ตรวจ type · unit test (Vitest)
npm run setup ตั้งค่า + deploy ครั้งแรกอัตโนมัติ
npm run deploy build + deploy ขึ้น Cloudflare
npm run db:create / db:init สร้าง / ตั้งตาราง D1 แบบ manual (ปกติ setup ทำให้แล้ว)
npm run tail ดู log production
node design/mockup.mjs ถ่ายภาพหน้าจอพร้อมกรอบมือถือ เก็บไว้ที่ docs/shots/ (ใช้กับเครื่องที่ deploy แล้วได้ด้วย BASE=… PIN=…)

ตั้งค่า

ตั้งน้อยที่สุด — สถานี พิกัด กำลังติดตั้ง สถานที่ ดึงจาก Deye เองแล้วเก็บไว้ ไม่มีค่าส่วนตัวฝังในโค้ด · ค่าไฟ / ค่าขายไฟ / ทุนติดตั้ง / CO₂ ตั้งในแอป (ไปที่หน้าย้อนหลัง เลือกแท็บ "ตลอด" แล้วกดตั้งค่าการคำนวณ) ทุกเครื่องเห็นค่าเดียวกัน

ต้องตั้ง ที่มา
DEYE_APP_ID, DEYE_EMAIL จาก developer.deyecloud.com (ตั้งตอน deploy)
DEYE_APP_SECRET, DEYE_PASSWORD ค่าลับ — .dev.vars (เครื่องตัวเอง) / wrangler secret (production)
APP_PIN PIN เข้าแอป · ไม่ตั้ง = ดูได้สาธารณะ แต่หน้าผู้ดูแล /api/_* จะปิด
ค่าเสริมทั้งหมด (ไม่ตั้งก็ใช้ได้)
ตัวแปร ใช้ทำอะไร
DEYE_BASE_URL ค่าตั้งต้น EU (eu1-developer…) — เปลี่ยนเป็น us1 ถ้าบัญชีอยู่ US
DEYE_STATION_ID · DEYE_COMPANY_ID ปักสถานีเจาะจง / company ของบัญชี
TMD_TOKEN · TMD_BASE พยากรณ์อากาศกรมอุตุฯ (ไม่ตั้ง = ใช้ Open-Meteo)
WEATHER_LAT / WEATHER_LON / WEATHER_PLACE ปรับพิกัดอากาศเอง
ALERT_WEBHOOK_URL · TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID ช่องทางแจ้งเตือน
ALERT_SOC_MIN · ALERT_REPEAT_MIN · ALERT_MUTE · ALERT_HEURISTICS เกณฑ์แบตเตอรี่ต่ำ · เตือนซ้ำทุกกี่นาที (360) · ปิดรายกติกา · ส่งคำแนะนำเชิงวิเคราะห์ออกนอกแอปด้วย
GRID_NOMINAL_V / GRID_NOMINAL_HZ แรงดัน/ความถี่ปกติของระบบไฟฟ้า (เช่น 230/50) — ไม่ตั้ง = ไม่ตรวจเช็กค่าสัมบูรณ์ (จงใจไม่เดา)
CONTACT_EMAIL อีเมลติดต่อที่แนบไปกับการค้นชื่อสถานที่ (OpenStreetMap ขอให้ระบุ)
DEYE_RELAY_URL ทางอ้อมเมื่อ Deye บล็อกเครือข่าย Cloudflare — รัน scripts/deye-relay.mjs บนเครื่องอื่นแล้วใส่ที่อยู่ (ติดตั้งเองให้เปลี่ยนเป็นของคุณหรือลบออกจาก wrangler.jsonc) ดู DEPLOY.md

คำถามที่พบบ่อย

โซลาร์มอนิเตอร์คืออะไร

แอปดูระบบโซลาร์เซลล์ที่ใช้อินเวอร์เตอร์ Deye แบบเรียลไทม์เป็นภาษาไทย ดึงข้อมูลจาก Deye Cloud Open API แล้วแสดงผลิตไฟ ใช้ไฟ แบตเตอรี่ และซื้อ-ขายไฟ พร้อมพยากรณ์และสรุปเงินที่ประหยัด ติดตั้งเป็นแอปบนมือถือได้

ต้องเสียเงินไหม

ไม่ต้อง รันบน Cloudflare Workers + D1 ในโควตาฟรี เก็บข้อมูลทุก 5 นาที (วันละ 288 ครั้ง) ต่ำกว่าลิมิตฟรี 100,000 ครั้งต่อวันมาก

ใช้กับอินเวอร์เตอร์รุ่นไหนได้บ้าง

ระบบที่ส่งข้อมูลขึ้น Deye Cloud ทั้ง on-grid, hybrid และ off-grid แอปปรับคำแนะนำตามชนิดระบบให้เอง ต้องมีบัญชีนักพัฒนาที่ developer.deyecloud.com

ต่างจากแอป Deye Cloud อย่างไร

ภาษาไทยทั้งแอป ตัวเลขใหญ่อ่านง่าย มีพยากรณ์ที่เรียนรู้จากบ้านคุณ สุขภาพแบตเตอรี่จากการวัดจริง สรุปเงินที่ประหยัดรายเดือน แจ้งเตือน Discord / Telegram และคนในบ้านดูได้ด้วย PIN โดยไม่ต้องรู้รหัสบัญชี Deye

ข้อมูลและรหัสผ่านปลอดภัยไหม

กุญแจและรหัสบัญชี Deye เก็บเป็นค่าลับฝั่งเซิร์ฟเวอร์ ไม่ส่งไปที่มือถือ เข้าแอปด้วย PIN หน้าแอปตั้งค่าไม่ให้ขึ้นในผลค้นหา ประวัติข้อมูลทั้งหมดเก็บในบัญชี Cloudflare ของคุณเอง · ถ้าตั้ง DEYE_RELAY_URL ไว้ คำขอที่ส่งไป Deye (รวมคำขอโทเคนที่มีอีเมลและรหัสผ่านแบบแฮช) จะผ่านเครื่อง relay นั้นด้วย จึงควรใช้ relay ของคุณเองหรือของคนที่ไว้ใจเท่านั้น ไม่ใช้ก็ลบบรรทัดนี้ได้


สถาปัตยกรรมโดยย่อ

มือถือ (PWA) ─▶ Cloudflare Worker ─┬─▶ Deye Cloud Open API  (สด + ย้อนหลัง + อุปกรณ์ + alarm)
  เข้าด้วย PIN    หน้าเว็บ + /api/*   ├─▶ D1 (SQLite)          (ประวัติ + cache + token)
                  cron ทุก 5 นาที    └─▶ TMD / Open-Meteo     (อากาศ + UV ตามพิกัดสถานี)

ทุกอย่างอยู่ใน Worker เดียว · ค่าลับไม่ออกไปฝั่งมือถือ · ถ้า Deye บล็อกเครือข่าย Cloudflare จะอ้อมผ่าน relay ที่ตั้งไว้ (DEYE_RELAY_URL) · การรับแดด (ขึ้น-ตก, ช่วงแดดดี, ชั่วโมงแดดเต็ม) คำนวณจริงด้วย NOAA + Haurwitz · โควตาต่อรอบของ free tier ถูกคิดไว้ในโค้ด (cron วันละ 288 ครั้ง ห่างลิมิต 100,000 req/วันมาก)

Vite React TypeScript Tailwind CSS three.js Hono Cloudflare Workers Cloudflare D1 · Cron · Static Assets vite-plugin-pwa Vitest Meteocons


English

Deye Solar Monitor is a free, self-hosted real-time dashboard for Deye solar inverters, built on the official Deye Cloud Open API. It shows PV production, home load, battery state and grid import/export live, adds a production forecast that learns from your own roof, measured battery health, monthly savings, CSV export and Discord/Telegram alerts, and installs on a phone as a PWA. It runs entirely on the Cloudflare Workers + D1 free tier (no monthly cost). The app interface is Thai.

Live view

  • Home — a rotatable 3D house with power flowing in the real direction between panels, battery, grid and home; system status; today's production and savings, plus savings so far this month with a whole-month estimate
  • Battery now — charging or discharging, the reason in one sentence, and when it will run out or be full, from measured capacity and the cut-off learned from this house
  • Today — produced, used, bought and exported, self-sufficiency and energy flow, as a whole day or noon-to-noon (daytime and night-time use apart)
  • Device detail — per-phase, PV string and BMS values, real inverter alarms, a quiet-when-normal health check, trends over 1–90 days
  • Several stations — a switcher appears when the account has more than one system

Analysis and forecast

  • A forecast that learns — system size calibrated from clear days, cloud factors re-learned daily from forecast vs actual (recent days weigh more, so it follows the season); an accuracy card with a score and each day's production bar with a tick at the forecast, labelled on target / too low / too high
  • Weather — Thai Meteorological Department forecast (or Open-Meteo), sun path and best sun window, UV index, hourly and 7-day
  • Measured battery health — usable capacity from real discharges, SOH against the BMS rating, cycles, average depth, 60-day trend
  • History and year overview — day / month / year / all-time charts, a month summary (savings, whole-month estimate, produced / used / bought / battery or exported), best and worst months, year-on-year, a whole-year estimate from the site's sunlight
  • Recommendations — derived from the energy balance of measured values, adjusted for on-grid, hybrid or off-grid
  • Compare and export — against the previous period at the same time of day; CSV every 5 minutes, daily or monthly

Hands-off reliability

  • Alerts (optional) — Discord webhook or Telegram: inverter offline, alarm raised or cleared, grid loss, low battery, clear sky but no production, plus "back to normal"; confirmed over several polls before sending
  • No fake values — a dropped logger or stuck Deye values are detected and not stored; gaps are backfilled automatically when data returns
  • Clear status — cannot reach Deye, collection stopped or inverter silent, each explained in the app; /api/_health for uptime monitors
  • Installable PWA — install hints per device (Android, iPhone, Mac, others), works offline

Install

  • Supports: any Deye system on Deye Cloud — on-grid, hybrid, off-grid
  • Needs: a Deye developer account (developer.deyecloud.com) for an App ID and App Secret
  • One click: the Deploy to Cloudflare button above; Cloudflare creates the repo and the D1 database and asks for the secrets
  • One command: npx wrangler login, cp .dev.vars.example .dev.vars, then npm run setup — see DEPLOY.md

FAQ

What is Deye Solar Monitor?

A free, self-hosted web app that shows a Deye solar system live — production, home load, battery and grid — using the official Deye Cloud Open API, with a forecast that learns from your own roof, measured battery health, savings and alerts. It installs on a phone as a PWA.

Does it cost anything?

No. It runs on the free tier of Cloudflare Workers and D1. It polls every 5 minutes (288 requests a day), far below the free limit of 100,000 a day.

Which inverters does it support?

Any system that reports to Deye Cloud — on-grid, hybrid or off-grid. You need a developer account at developer.deyecloud.com for an App ID and App Secret.

Is the interface in English?

The app interface is Thai, built for Thai households with large numbers and labelled colours. The code, API and setup work the same anywhere Deye Cloud is available.

Are my Deye credentials safe?

Deye keys and the account password are server-side secrets only and never reach the phone. People sign in with a PIN, the app is marked noindex, and all stored history lives in your own Cloudflare account. If DEYE_RELAY_URL is set, outgoing Deye requests (including the token request with the email and password hash) pass through that relay, so only use a relay you run or trust, or remove the setting.


สร้างด้วย ❤️ บน Cloudflare Workers · ARCHITECTURE.md · DEPLOY.md

About

แอปดูระบบโซลาร์เซลล์ Deye แบบเรียลไทม์ ภาษาไทย · PWA ติดตั้งฟรีบน Cloudflare Workers + D1 — Real-time Deye solar PV monitor (Thai), free & open.

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages