เขาว่ากันว่า "ข้อมูลคือน้ำมันยุคใหม่" แต่ในชั่วโมงนี้ สินทรัพย์ที่เป็นของจริงอย่าง "โลหะมีค่า" ก็กำลังมาแรงไม่แพ้กัน! ในช่วง 12 เดือนที่ผ่านมา ราคาทองคำพุ่งขึ้นกว่า 75% และแร่เงินโตทะลุ 200% สำหรับสายเก็บสะสมของจริง (Physical) ปัญหาคือราคาหน้าร้านมักจะต่างจากราคาในตลาดหุ้น และการมานั่งรีเฟรชหน้าจอเช็คราคาทั้งวันก็คงไม่ตอบโจทย์คนที่มีงานประจำ
เพื่อหาจังหวะช้อนซื้อตอนราคาตก เราเลยจะมาทำโปรเจกต์ "ExtractToInk" เปลี่ยนบอร์ด Raspberry Pi รุ่นเก๋า ให้กลายเป็นจอ E-ink มินิมอล เอาไว้มอนิเตอร์ราคาแบบอัตโนมัติ วางบนโต๊ะทำงานได้แบบคูลๆ แถมงบรวมไม่ถึง $50 ด้วยซ้ำ!

อุปกรณ์และเครื่องมือที่ต้องใช้ (Tech Stack)
-
Hardware: บอร์ด Raspberry Pi (ในที่นี้ใช้ Pi Zero Wireless) และหน้าจอ Seeed Studio 2.13'' Triple-Color E-Ink (หรือ Pimoroni Inky pHAT)
-
Software: ภาษา Python 3
-
API & Libraries: Zyte API (สำหรับดึงข้อมูลเว็บที่มี JavaScript), BeautifulSoup (สำหรับแกะโค้ด HTML), และไลบรารี Pillow/Inky สำหรับคุมหน้าจอ E-ink
ขั้นตอนการสร้าง (Step-by-Step)
Step 1: เตรียมฮาร์ดแวร์
เริ่มจากติดตั้ง Raspberry Pi OS ลงใน SD Card เมื่อบูตเครื่องแล้ว ให้เปิดใช้งาน I2C หรือ SPI bus ผ่านคำสั่ง sudo raspi-config เพื่อให้บอร์ดเชื่อมต่อกับจอ E-ink ได้
Step 2: ดึงข้อมูลหน้าเว็บด้วย Zyte API
เว็บเช็คราคาส่วนใหญ่มักใช้กลไกป้องกันการดึงข้อมูล หรือใช้ JavaScript ในการแสดงผล แทนที่เราจะเขียนโค้ดสู้กับมัน เราจะใช้ Zyte API ตั้งค่าเป็นโหมด browserHtml: True เพื่อให้ระบบช่วยเรนเดอร์หน้าเว็บออกมาเป็น HTML คลีนๆ ให้เราเลย (เสถียรกว่าการใช้ Selenium มาก)
Step 3: คัดกรองข้อมูลด้วย CSS Selectors
เมื่อได้ HTML มาแล้ว เราจะใช้ BeautifulSoup เจาะหาคลาส CSS ที่ซ่อนราคาอยู่ และใช้ Regular Expression (Regex) เล็กน้อยเพื่อดึงเฉพาะตัวเลขราคาทองและแร่เงินออกมา
คลิกเพื่อดูรูปภาพตัวอย่างโค้ด (View More)
Step 4: แสดงผลขึ้นจอ E-ink
จอ E-ink มีข้อดีคือประหยัดพลังงานมาก และภาพจะค้างอยู่แบบนั้นตลอดเวลา เหมาะสุดๆ กับการทำ Ambient Dashboard โดยเราจะใช้ไลบรารีของ Inky pHAT คู่กับคำสั่ง draw.text() เพื่อวาดตัวอักษรราคาลงบนหน้าจอ
ไอเดียต่อยอด และดาวน์โหลดโค้ด
คุณสามารถโหลดโค้ดตั้งต้นไปประยุกต์ใช้เพื่อดึงราคาน้ำมัน (ตามโจทย์พาดหัว!) หรือราคาสินทรัพย์อื่นๆ เพิ่มเติมได้เลยครับ:
อยากให้ล้ำกว่านี้? ลองทำตามนี้ดู:
- ตั้งค่า
cron job ให้ระบบดึงข้อมูลอัปเดตอัตโนมัติทุกๆ 10 นาที หรือ 12 ชั่วโมง
- ตั้งค่าเป็น
systemd service เพื่อให้โปรแกรมรันเองทันทีที่เสียบปลั๊ก
- ต่อยอดให้มันส่งคำสั่งซื้ออัตโนมัติเมื่อราคาร่วงถึงจุดที่ต้องการ
พร้อมสร้าง Tracker ดูราคาของตัวเองหรือยัง?
คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา