Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
오늘 밤 구름 어디서 사냥? 물리 역열·전 지구 4모델·히마와리 위성으로 베트남 58산 구름 예보
Đêm nay đi đâu săn mây? Dự báo biển mây bằng vật lý nghịch nhiệt + 4 mô hình toàn cầu + vệ tinh Himawari, cho 58 điểm núi Việt Nam.
라이프스타일TypeScript · PythonGitHub @phongvan0926온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기cloud
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
☁️ CloudHunter AI v5 — Dự báo Biển Mây Tây Bắc (Engine Deterministic + AI Lời Bình) CloudHunter AI dự báo biển mây cho dân săn mây, trekking và nhiếp ảnh tại núi cao Việt Nam (Tà Xùa, Lảo Thẩn, Ky Quan San, Fansipan, Putaleng, Tà Chì Nhù...). Triết lý v5: "Con số = code, tư vấn = AI." Toàn bộ điểm số và chỉ số khí tượng do một engine deterministic tính từ dữ liệu thật của 3 mô hình toàn cầu; Gemini chỉ viết lời bình. Không có API key AI, app vẫn dự báo đầy đủ — chỉ thiếu phần văn tư vấn.README 전문 보기 ↗
CloudHunter AI dự báo biển mây cho dân săn mây, trekking và nhiếp ảnh tại núi cao Việt Nam (Tà Xùa, Lảo Thẩn, Ky Quan San, Fansipan, Putaleng, Tà Chì Nhù...).
Triết lý v5: "Con số = code, tư vấn = AI." Toàn bộ điểm số và chỉ số khí tượng do một engine deterministic tính từ dữ liệu thật của 3 mô hình toàn cầu; Gemini chỉ viết lời bình. Không có API key AI, app vẫn dự báo đầy đủ — chỉ thiếu phần văn tư vấn.
&elevation=).autoUpdate nên mỗi lần deploy là trang tự location.reload() ngay
giữa lúc đang xem kết quả (lỗi thật 07/09/2026). Bảng xếp hạng cũng được cache trong localStorage
theo phiên bản engine nên mở lại tức thì, không nã lại API.?spot=&from=&to=&alt= — gửi cho bạn đồng hành
là họ mở đúng dự báo đó, không cần mô tả thao tác.gemini-flash-latest vẫn chọn tay
được, nhưng Google không nói nó đang trỏ bản nào (16/10/2026 nó ra 2.5 Flash), nên kết quả
hiện thêm tên model Google báo đã chạy thật. Khi phải dự phòng, alias đứng SAU mọi bản Flash có số
(26/10/2026), và ghi chú dự phòng nói luôn bản Google báo đã chạy. Model cao cấp (vd Gemini 4 Argon,
chỉ gói trả phí) chọn tay được, kèm cảnh báo, nhưng không bao giờ là mặc định hay dự phòng
tự động; họ model mới chưa rõ giá cũng vậy.| Chỉ số | Công thức / cách tính |
|---|---|
| LCL (đáy mây) | thung_lũng + 125 × (T_valley − Td_valley) |
| Ổn định cột khí | anomaly = T_tầng − (T_valley − 6.5°C/km × Δh) trên profile 7 mực (độ cao thật, chỉ tầng ≤2600m); ≥3°C = Strong. Đo cả cột ổn định hơn chuẩn bao nhiêu — có thật, nhưng KHÔNG có địa chỉ |
| Đáy nắp chặn | mực thấp nhất từ đáy mây trở lên có Γ ≤ 3,5°C/km (đoạn nhiệt ẩm ~5 ⇒ ≤3,5 là ổn định hẳn). Không tìm thấy thì trả null, không bịa số. Cần vì anomaly cộng dồn theo độ cao nên "tầng cực đại" rơi vào mực cao nhất cửa sổ ở 113/120 ca đo được (94%) — một trần cửa sổ quét, không phải phép đo |
| Mặt mây (top) | đỉnh LỚP MÂY LIÊN TỤC từ dưới lên (cc tầng ≥45% / RH≥80%) +150m, không nhảy cóc lên lớp mây tách rời |
| ΔH | vị_trí_đứng − top → STATIC / FLUCTUATING(±250m) / FOG |
| Đứng trong mây | mực áp suất gần cao độ người đứng nhất (±250m) mà có mây ≥45% hoặc RH ≥90% ⇒ nhãn FOG, bất kể ΔH. Số đọc trực tiếp thắng số suy ra: đỉnh mây là ước lượng ±200m. Ca thật Fansipan 07/09: ΔH = +5m nên app khuyên đi, trong khi chính mực đó có mây 72% và vệ tinh báo đỉnh mây 3.915m |
| Đáng đi (engine-2.8.2) | không phải ngưỡng điểm: kết luận CÓ biển mây + đồng thuận ≥50% mô hình + ΔH > 100m (đứng CAO HƠN mặt mây ít nhất 100m — biên này chặn kiểu "trên mặt mây 5m", vì so dự báo tối hôm trước với thực tế thì chính ΔH lệch trung vị 207m). Không nới lên 250-500m dù báo nhầm có giảm: ΔH ≤ chỗ đứng − đáy thung lũng, nên ngưỡng 500m sẽ xoá sổ 18/56 điểm địa hình thoải (Linh Quy Pháp Ấn, Đồi chè Cầu Đất, Măng Đen…) bất kể thời tiết. Điểm chỉ xếp thứ tự. Lý do: 6 ngày kiểm chứng có biển mây, ngưỡng điểm ≥60 khuyên đi 0/6 — nó đo nguyên liệu sương bức xạ sách vở, còn biển mây mùa mưa không đi đường đó |
| Gộp nhiều mô hình | bỏ phiếu hai bước: chọn KẾT LUẬN (có biển mây / chìm trong mây / trời quang / bị chặn) trước, rồi mới chọn nhãn chi tiết trong nhóm thắng. Bốn nhãn STATIC/FLOWING/FLUCTUATING/ROLLING là MỘT kết luận, không phải bốn ý kiến — trước đây đa số 4-2 bị chia phiếu nội bộ 2-2 nên thua FOG có 2 phiếu |
| FSI |
npm install
npm run dev # http://localhost:3000
npm run lint # type-check
npm test # 128 golden tests: engine + mùa 3 miền + ensemble + ERA5 + AOD + trăng + fallback + múi giờ + alias + cache/lịch sử + chọn model mới + lọc nhiễu khung vệ tinh
npm run build
# công cụ kiểm chứng (gọi API thật, không phải unit test)
npx vite-node scripts/audit-coords.ts # đối chiếu toạ độ thư viện với DEM
npx vite-node scripts/find-spot.ts "Vân Sơn" 20.61 105.18 8 # tìm toạ độ điểm ngắm: OSM + quét DEM 2 vòng
npx vite-node scripts/pluscode.ts "8VFJ+9V2" 22.30 103.89 # giải plus code (kể cả mã NGẮN) → toạ độ + DEM
npx vite-node scripts/snapshot-dem.ts # chụp lại DEM cho test offline
npx vite-node scripts/hindcast.ts TA_XUA_SON_LA # soi lại 1 ngày: engine chấm gì, vì sao
npx vite-node scripts/rank-now.ts # chạy bảng xếp hạng ngoài trình duyệt
npx vite-node scripts/audit-vars.ts # đối chiếu 2 chiều: biến FETCH ↔ biến engine ĐỌC
npx vite-node scripts/gate-power.ts # đo sức phân biệt của các ngưỡng trước khi nới
npx vite-node scripts/ab-combine.ts # so luật gộp cũ/mới trên cùng 1 lần lấy dữ liệu
npx vite-node scripts/inversion-probe.ts # "độ cao nghịch nhiệt" là phép đo hay là trần cửa sổ quét?
npx vite-node scripts/summit-cloud-probe.ts # đo tần suất bật của bộ dò mây đội đỉnh
npx vite-node scripts/observer-gate-probe.ts # cổng "chỗ tôi đứng có mây không": tần suất bật + quét trần ΔH
~/.venvs/ch-verify/bin/python tools/audit_cloudmask.py --all # nhãn CLEAR của vệ tinh có thật là trời quang? (AHI-CMSK)
npx vite-node scripts/dump-rank.ts truoc.json … # kết xuất bảng xếp hạng để so TRƯỚC/SAU một thay đổi engine
npx vite-node scripts/diff-rank.ts truoc.json sau.json # đếm chính xác bao nhiêu điểm đổi nhãn/kết luận
# VÒNG KIỂM CHỨNG ĐỘ CHÍNH XÁC — GitHub Actions tự chạy 2 lần/ngày (.github/workflows/verify-loop.yml); chạy tay:
npx vite-node scripts/snapshot-forecast.ts [YYYY-MM-DD] # tối hôm trước: chụp dự báo rạng sáng mai (để trống = mai)
~/.venvs/ch-verify/bin/python tools/verify_satellite.py 2026-08-24 # ~8h : nhãn thật từ vệ tinh
npx vite-node scripts/import-fb-auto.ts <nhan-ngay.json> # nhập nhãn Facebook tự động (khi bộ thu báo)
npx vite-node scripts/regional-days.ts # bảng thời tiết vùng 05h, tìm ngày diện rộng tương tự
npx vite-node scripts/audit-cloud-top.ts # đo sai số độ cao mặt mây thật (bản chụp × vệ tinh Himawari)
npx vite-node scripts/calibrate.ts # chấm điểm chính app
Ba nguồn sự thật độc lập, không dùng mô hình dự báo để chấm mô hình:
tools/verify_satellite.py dán nhãn tự động cho mọi điểm mỗi ngày.
Trung thực: hồng ngoại chỉ thấy lớp trên cùng, hôm nào có mây tầng cao che thì trả
BLOCKED_ABOVE và bị loại khỏi phép chấm thay vì đoán bừa.scripts/calibrate.ts ghép hai nguồn trên với dự báo đã chụp, in ra tỉ lệ đúng,
danh sách ngày BỎ SÓT và ngày BÁO NHẦM — chỉnh hằng số nào là nhìn thẳng vào đó.
Từ 14/10/2026 nó in thêm mức theo dõi "đáng đi ∧ điểm ≥ 65" kèm số NGÀY độc lập và tách theo cao độ
(đỉnh ≥ 2.400m đạt 85% toàn kho / 80% ngoài mẫu, nhưng chưa đưa lên giao diện do lỗi cộng trùng ẩm ở
thung lũng thấp và bước nhảy mùa ngày 01/12 - xem AGENTS.md), và bỏ qua báo cáo không phải rạng sáng (timeOfDay).Nhãn tự động từ Facebook (từ 19/10/2026): bài "thời tiết hôm nay" của người làm du lịch tại chỗ ở Tà Xùa và Fansipan được đọc hằng ngày ở máy nhà, mỗi bài gắn nhãn bởi một lượt AI không được xem dự báo. Repo chỉ nhận nhãn (
data/observations/fb-auto-reports.json, nhập bằngscripts/import-fb-auto.ts), không ảnh, không tên. Thứ bậc: người đi > Facebook > vệ tinh; calibrate chỉ chấm nhãn độ tin ≥ 0,6 và in số riêng theo nguồn. Xem AGENTS.md.
Kiểm chứng thực địa 25/8/2026 (Tà Xùa — ngày thứ BA liên tiếp): app ghi
34/100 · FOGtừ hôm trước. Truy ra lỗi gộp phiếu: 4/6 mô hình đặt mặt mây dưới chỗ đứng nhưng chia nhau hai nhãn nên hoà 2-2-2, rồi thuaFOGchỉ có 2 phiếu — trong khi app vẫn hiển thị mặt mây trung vị 1.446m dưới chỗ đứng 1.600m. Nay gộp theo KẾT LUẬN trước, nhãn chi tiết sau: raFLUCTUATING, đồng thuận 67%. Đo trên 50 điểm: chỉ 3 điểm đổi nhãn, không phải cửa xả.
Kiểm chứng thực địa 25/8/2026 (Thảo nguyên Suôi Thầu, Xín Mần): người dùng báo biển mây kèm plus code cho một điểm chưa hề có trong thư viện. Ca này lộ ra bốn lỗi nữa, đáng nhớ nhất là một lỗi câm: engine đọc
relative_humidity_2mnhưng biến đó chưa bao giờ được xin từ API → luônNaN→ cả một nhánh của bộ dò bão hoà chưa từng chạy, mà 80 test vẫn xanh vì fixture gán thẳng số. Nay cóscripts/audit-vars.tsđối chiếu hai chiều. Sau sửa:12/100 · RAIN→24/100 · FLUCTUATING(trạng thái đúng), và trên toàn bảng xếp hạng số điểm giảm trong khi số điểm nhận ra được biển mây tăng — engine nhìn rõ hơn chứ không lạc quan hơn. Chi tiết + số đo trongAGENTS.md.
Kiểm chứng thực địa 23/8/2026 (Tà Xùa, Bắc Yên): người dùng thấy biển mây cả ngày, app cũ trả
0/100 · RAIN. Truy ra 5 lỗi độc lập — toạ độ lệch 16km, bỏ sót tín hiệu bão hoà, phạt hai lần cùng một cơ chế, coi mưa là bằng chứng chống biển mây, và xét sai tầng gió. Chi tiết + ràng buộc mới trongAGENTS.md. Toàn bộ thư viện điểm đã được rà lại bằng DEM.
AI (tùy chọn): nhập Gemini API Key qua nút 🔑 trong app (lưu localStorage máy bạn —
không nhúng key vào code/bundle). Dùng nhiều thiết bị: trong modal 🔑 bấm
"📱 Dùng trên thiết bị khác" → quét QR (hoặc chép link) bằng máy kia → key tự lưu vào
máy đó và tự xóa khỏi thanh địa chỉ. Key nằm trong #fragment của link nên không bao
giờ được gửi lên server nào — chỉ quét/gửi cho chính mình.
Đọc kỹ AGENTS.md — kiến trúc, ràng buộc vật lý, quy tắc "không bịa dữ liệu",
và backlog. Trước khi kết thúc mọi phiên sửa code: npm run lint && npm test && npm run build.
Dự án của phongvan0926. Dữ liệu khí tượng: Open-Meteo (ECMWF/GFS/ICON). Geocoding: Nominatim/OpenStreetMap. Dự báo chỉ mang tính tham khảo — luôn quan sát thời tiết thực tế khi trekking.
| 2(T−Td) + 2(T_valley − T850) + gió — tham chiếu thung lũng |
| VRII | 85 − 12·spread − 2.5·gió_đêm + bonus nghịch nhiệt − phạt mây cao đêm |
| Gió theo vùng | Zone A: 12/18/26 km/h · Zone B (ống gió Lai Châu): 5/8/15 km/h |
| Mặt mây bị kẹp | không vươn qua đáy nắp được — trời mưa làm cả cột khí ẩm, nếu không kẹp thì mọi mô hình đều báo "chìm trong mây". Kẹp bằng đỉnh anomaly khi có đỉnh THẬT, bằng tầng ổn định cục bộ khi anomaly chỉ là một cái dốc |
| Chọn tầng gió | biển mây bị nhốt dưới nắp nghịch nhiệt → xét gió 925hPa trong lớp mây; không có nắp → 850hPa |
| Bão hoà thung lũng | T−Td ≤1°C + RH cao → tín hiệu biển mây độc lập với cloud_cover_low (mô hình toàn cầu bỏ sót sương thung lũng hẹp) |
| Mây đội đỉnh | mây do nâng địa hình sinh ra NGAY TẠI đỉnh, thung lũng bên dưới quang — không phải biển mây, cũng không phải trời quang. Nhận bằng cách so hai quãng đường: cần nâng 25 × (100 − RH) m để ngưng tụ, núi nâng được min(600m, ½ × chênh cao đỉnh−đáy). Tự co giãn theo độ nhô của đỉnh và theo nền nhiệt, không dùng ngưỡng RH cứng. Chỉ được đổi CLEAR → FOG |
| Lớp mây bám gốc | bộ dò thứ ba: lớp ẩm/mây liên tục bắt đầu sát đáy thung lũng trên profile 7 mực. Cần vì mô hình có thể báo cloud_cover_low = 0% trong khi chính nó cho RH 80-85% suốt từ đáy lên 950m rồi rớt hẳn ở 1.450m — đúng một biển mây dày 700m |
| Ẩm lớp biển mây | đo ở mực gần đáy mây + 100m (geopotential thật), không chọn cứng theo độ cao thung lũng — thung lũng 274m mà đo ở 760m là đo gần đỉnh lớp sương, có khi đo hẳn không khí bên trên nó |
| Điểm ngày | max(mây thấp, bão hoà) + nghịch nhiệt + ẩm − gió − mây cao đêm − mưa(theo mm/h) ± mùa |
| Lớp biên đêm | chỉ còn trừ điểm, không thưởng: chỉ GFS có biến này và 46/50 ca của GFS đều ≤200m ⇒ thưởng +8 không phân biệt được ngày tốt/xấu, chỉ nâng riêng GFS lên trong mọi so sánh — mà so sánh giữa các mô hình chính là thứ app dùng để tự hiệu chuẩn |
| Mưa | không còn xoá kết luận biển mây; phạt theo cường độ, giảm 40% khi có "chữ ký biển mây"; cảnh báo mưa luôn hiện theo lượng mưa thật |