
ผมสร้าง faonam.com เพราะอยากรู้ว่าน้ำใกล้บ้านสูงแค่ไหน
ผมอยู่ที่อยุธยาครับ
เวลาฝนตกหนักหรือมีข่าวเขื่อนปล่อยน้ำ คำถามของคนที่อยู่ใกล้น้ำไม่ใช่แค่ว่า "ปีนี้น้ำเยอะไหม"
คำถามจริงคือ น้ำใกล้บ้านตอนนี้สูงแค่ไหน เหลืออีกกี่เมตรจะถึงตลิ่ง ต้นน้ำกำลังเพิ่มหรือลด แล้วผมควรเริ่มเตรียมตัวหรือยัง
ข้อมูลเหล่านี้มีอยู่แล้ว แต่กระจายอยู่หลายหน่วยงาน หลายเว็บไซต์ และแต่ละหน้าก็ใช้ศัพท์กับรูปแบบไม่เหมือนกัน
ผมเลยสร้าง faonam.com ขึ้นมา
ไม่ใช่เว็บข่าวน้ำท่วม แต่เป็นเว็บสำหรับเปิดดูสถานการณ์น้ำใกล้บ้านตัวเอง
ข้อมูลมีอยู่แล้ว แต่คนทั่วไปยังตอบคำถามไม่ได้
ThaiWater มีสถานีวัดระดับน้ำทั่วประเทศ มีข้อมูลฝน เขื่อน คลอง ประตูระบายน้ำ และคำเตือนทางการ
กรมชลประทานมีสถานีอีกชุดหนึ่ง มีระดับน้ำรายชั่วโมงและรายงานปริมาณน้ำไหลรายวัน
กรุงเทพมหานครมีเซนเซอร์คลองกับถนนน้ำท่วม เทศบาลนนทบุรี รังสิต และปากเกร็ดก็มีระบบของตัวเอง กรมทรัพยากรน้ำยังมีกล้องริมน้ำและสถานีโทรมาตรอีกหลายร้อยจุด
ปัญหาคือ คนที่อยู่บ้านไม่ได้คิดเป็นชื่อ API หรือรหัสสถานีครับ
คนทั่วไปคิดว่า บ้านอยู่จังหวัดไหน แม่น้ำสายไหน สถานีไหนอยู่ต้นน้ำ เขื่อนกำลังปล่อยเพิ่มหรือไม่ และถ้าระดับถึงจุดที่กังวล จะรู้ทันได้อย่างไร
ข้อมูลดิบจึงยังไม่ใช่คำตอบ
ข้อมูลหลายหน่วยงาน + บริบทของบ้าน = สิ่งที่ใช้ตัดสินใจได้จริง
เริ่มจากอยุธยา แล้วเปิดให้ดูได้ทั้งประเทศ
เวอร์ชันแรกเริ่มจากอยุธยาเมื่อวันที่ 27 กันยายน 2569
ผมต้องการเห็นสถานีรอบบ้าน ระดับเทียบตลิ่ง ฝน เขื่อน และแนวโน้มย้อนหลังในหน้าที่อ่านง่ายบนมือถือ
ภายในวันเดียว ระบบขยายจากหน้าอยุธยาไปเป็นข้อมูลครบ 77 จังหวัด เพราะปัญหาแบบเดียวกันไม่ได้เกิดเฉพาะบ้านผม
ตอนนี้หน้าแรกเปิดจังหวัดที่ผู้ใช้อยู่หรือจังหวัดที่เคยเปิดล่าสุด แต่ผมไม่ใช้วิธีเดาจาก IP และไม่เลือกสถานีที่ใกล้ที่สุดแบบตรงๆ
ตำแหน่งจากเครือข่ายมือถือคลาดเคลื่อนไปคนละจังหวัดได้ ส่วนสถานีที่ใกล้ที่สุดอาจอยู่คนละฝั่งแม่น้ำหรือคนละพื้นที่ปกครอง
เฝ้าน้ำจึงใช้ขอบเขตจังหวัดจริงเพื่อหาว่าผู้ใช้อยู่จังหวัดไหน แล้วค่อยแสดงสถานี เขื่อน คลอง ถนน และคำเตือนที่เกี่ยวข้อง
รายละเอียดเล็กแบบนี้สำคัญกว่าหน้าจอสวย เพราะถ้าเปิดเว็บแล้วพาไปผิดจังหวัด ความน่าเชื่อถือก็หายตั้งแต่ครั้งแรก
จากแผนที่ กลายเป็นระบบเฝ้าระวังของแต่ละบ้าน
สิ่งที่ผมอยากได้ไม่ใช่การนั่งเปิดเว็บทั้งวัน
ผู้ใช้จึงตั้ง "เกณฑ์บ้านฉัน" ได้เอง เช่น แจ้งเมื่อระดับน้ำสถานีใกล้บ้านถึงค่าที่กำหนด หรือเมื่อเขื่อนปล่อยน้ำเกินอัตราที่ต้องเริ่มเฝ้าระวัง
เว็บตรวจเกณฑ์ทุก 10 นาทีและส่ง Web Push ให้ ผู้ใช้ไม่ต้องสมัครบัญชี เกณฑ์เก็บอยู่ในอุปกรณ์ของตัวเอง และหน้าเว็บบอกเวลาของข้อมูลทุกครั้ง
ถ้าเพิ่มเว็บไว้บนหน้าจอมือถือ เฝ้าน้ำเปิดได้เหมือนแอป มีหน้าเว็บสำรองตอนอินเทอร์เน็ตขาด และมีข้อมูลล่าสุดที่เคยโหลดไว้
ผมยังทำหน้าผังน้ำไหลของลุ่มเจ้าพระยา ตั้งแต่นครสวรรค์ลงมาอยุธยาและอ่าวไทย ความหนาของเส้นบอกปริมาณน้ำ สีของจุดบอกระยะจากตลิ่ง
ตัวเลขหลายสถานีที่เคยอยู่คนละหน้า จึงเริ่มเล่าเป็นภาพเดียวกันว่า น้ำกำลังมาจากไหนและกำลังลงไปทางไหน
พอคนใช้จริง ปัญหาจริงก็มา
ช่วงที่มีคนเปิดพร้อมกันประมาณ 200 คน ระบบเดิมส่งคำขอไป ThaiWater ราว 37,000 ครั้งต่อชั่วโมง
ผลคือคำขอถูกจำกัดทั้งหมด ข้อมูลบางชุดค้างอยู่ 5 ชั่วโมงครึ่ง และบางคำขอรอถึง 84 วินาที
นี่เป็นจุดที่เว็บทดลองกับระบบที่คนใช้จริงแยกออกจากกันครับ
หน้าเว็บที่ทำงานตอนมีผู้ใช้สิบคน อาจใช้ไม่ได้เลยตอนคนต้องการข้อมูลพร้อมกันในช่วงสถานการณ์น้ำ
ผมแก้โดยให้เครื่องของผู้ใช้ดึงข้อมูลจากต้นทางโดยตรงก่อน ถ้าต้นทางตอบ 429, ล่ม หรือรอนานเกิน 10 วินาที หน้าเว็บจะเปลี่ยนไปใช้สำเนาที่ Cloudflare Worker เก็บไว้
Mac ที่บ้านช่วยดึงเฉพาะข้อมูลที่ผู้ใช้หรือระบบแจ้งเตือนต้องการทุก 15 นาที แล้วส่งสำเนาเข้า Cloudflare KV อีกชั้นหนึ่ง
ถ้าต้นทางยังไม่กลับมา เว็บจะแสดงข้อมูลชุดล่าสุดพร้อมเวลาชัดเจน แทนการขึ้นหน้าว่างหรือทำเหมือนข้อมูลยังสด
ความน่าเชื่อถือไม่ได้แปลว่าระบบต้องไม่ล่มเลย
ความน่าเชื่อถือคือ เมื่อแหล่งข้อมูลมีปัญหา ผู้ใช้ยังรู้ว่ากำลังดูข้อมูลเวลาไหน และรู้ว่าควรเชื่อข้อมูลได้แค่ไหน
Public API ไม่ได้แปลว่าพร้อมเป็น Product
งานส่วนใหญ่ของเฝ้าน้ำไม่ใช่การวาดกราฟครับ
งานจริงคือการทำให้ข้อมูลจากหลายหน่วยงานคุยภาษาเดียวกัน
บางแหล่งใช้ระดับน้ำเทียบระดับทะเลปานกลาง บางแหล่งใช้เซนติเมตรตามไม้ระดับของเทศบาล บางสถานีมีระดับตลิ่ง บางสถานีมีแค่เปอร์เซ็นต์ความจุลำน้ำ บางรายงานยังอยู่ใน PDF ที่ออกวันละครั้ง
ThaiWater เคยหยุดได้รับข้อมูลคลองและถนนของกรุงเทพฯ ผมจึงต้องอ่านจากระบบของสำนักการระบายน้ำโดยตรง และมี POPNIX Flood เป็นแหล่งสำรองพร้อมแสดงเครดิตเมื่อใช้งานจริง
สถานีใต้อยุธยาบางจุดไม่มีใน ThaiWater ผมจึงต่อข้อมูลจากกรมชลประทานเพิ่ม รวมถึงอ่านปริมาณน้ำจากรายงาน PDF รายวัน
แหล่งหนึ่งล่มต้องไม่ทำให้ทั้งเว็บล่ม ข้อมูลเก่าต้องไม่ถูกแสดงเหมือนข้อมูลสด และตัวเลขคนละมาตรฐานต้องไม่ถูกนำมาเทียบกันแบบผิดๆ
AI ช่วยเขียนโค้ดได้เร็ว แต่การตัดสินใจเหล่านี้ต้องมาจากความเข้าใจปัญหา
ผมใช้ AI สร้าง แต่ไม่ได้ปล่อยให้ AI กำหนดปัญหา
จาก commit แรกจนถึงระบบที่รวมข้อมูลทั่วประเทศ แผนที่ กล้อง แจ้งเตือน แอปมือถือ และระบบสำรองข้อมูล ใช้เวลาไม่กี่วัน
ถ้าทำแบบเดิม งานระดับนี้ต้องแยกคนทำ frontend, backend, mobile, data pipeline และ infrastructure
รอบนี้ผมใช้ AI เป็นทีมลงมือทำ ส่วนผมทำหน้าที่กำหนดว่าคนใกล้น้ำต้องรู้อะไร ตรวจว่าตัวเลขสมเหตุผลไหม และตัดสินใจว่าระบบควรทำอย่างไรเมื่อข้อมูลต้นทางมีปัญหา
AI เร่งการลงมือ
แต่ประสบการณ์ที่อยู่กับปัญหา เป็นตัวกำหนดว่าควรสร้างอะไร
นี่คือความต่างระหว่างสั่ง AI ทำ dashboard สักหน้า กับใช้ AI สร้าง Product ที่เอาไปใช้ในชีวิตจริง
บทเรียนที่ผมได้จาก faonam.com
ผมไม่ได้เริ่มจากคำถามว่า "AI สร้างระบบใหญ่แค่ไหนได้บ้าง"
ผมเริ่มจากคำถามเล็กมากว่า "น้ำใกล้บ้านตอนนี้เป็นอย่างไร"
คำถามที่เฉพาะพอ ทำให้รู้ว่าต้องใช้ข้อมูลอะไร ต้องตัดอะไรออก และผลลัพธ์แบบไหนถึงเรียกว่าใช้ได้จริง
พอมีคนใช้ ปัญหาใหม่จะโผล่มาเอง ทั้ง API limit, ข้อมูลค้าง, ตำแหน่งผิดจังหวัด, ระบบชำระเงินบนมือถือ หรือแหล่งข้อมูลที่หยุดอัปเดต
Vibe Coding ไม่ได้จบตอน AI สร้างหน้าเว็บสำเร็จ
งานจริงเริ่มตอนคนเปิดใช้ แล้วโลกจริงไม่ทำงานตามสมมติฐานของเรา
ถ้าอยากลองดูระดับน้ำใกล้บ้าน เปิด faonam.com ได้เลยครับ
ถ้าพบสถานีท้องถิ่นที่ควรเพิ่ม หรือมีจุดไหนที่อ่านแล้วไม่เข้าใจ ส่งมาให้ผมได้ ผมอยากให้เฝ้าน้ำตอบคำถามของคนที่อยู่กับน้ำจริงๆ มากขึ้นเรื่อยๆ