ผมเคยใช้ hass.io มาหลายปีแล้ว โดยใช้ Raspberry Pi 3B + MicroSD card โดยส่วนใหญ่จะทำ automation ที่ไม่ได้ซับซ้อนมาก แต่ก็ไม่มีใน App Smart Home ทั่วไป เช่น กรณีที่ไฟฟ้าดับช่วงกลางวัน ปัญหาที่จะเจอคือ หลอดไฟที่เป็น smart light ทั้งหลาย มันจะสว่างขึ้นมา ซึ่งเราสามารถทำ automation ให้ปิดหลอดไฟได้ ถ้าไฟเกิดติดขึ้นมาในช่วงกลางวัน

ปัญหาที่พบ

  • เมื่อใช้งาน hass บน Pi3B ไปซักพัก จะเจอปัญหา sdcard พัง หรือใช้งานไม่ได้ บูตไม่ขึ้น ซึ่งเป็นปัญหาที่พบกันบ่อยมาก ส่วนตัวผมเองเจอปัญหานี้ไป 3 รอบ แม้เราจะ backup configuration ทั้งหมดไว้ แต่การ setup ทุกอย่างใหม่หมด ก็เป็นงานที่เสียเวลาและเหนื่อยโดยใช่เหตุ
  • Note: ไม่นับปัญหาที่ power supply Pi3 จ่ายไฟไม่พอนะครับ อันนั้นเป็น classic problem ของ Pi เองไม่เกี่ยวกับ Hass … คำแนะนำคือ ซื้อ power supply ดีๆ ที่จ่ายไฟได้ 2–3 Amp เป็นอย่างน้อย

ทางออก

  • ว่ากันว่า สาเหตุของปัญหา MicroSD พัง เกิดจากการเขียนและอ่านไฟล์บน MicroSD บ่อยเกินไป
  • ดังนั้น วันนี้เราจะมา setup Hass บน USB Drive กัน เพื่อที่จะได้ใช้งานกันยาวๆ ไม่ต้องมาปวดหัวเรื่องปัญหา MicroSD อีกต่อไป ที่สำคัญคือความเร็วในการเขียนหรืออ่านไฟล์บน SSD นั้น เร็วกว่า SD Card มหาศาลครับ ลองเทียบง่ายๆ โดยการ flash hass.io บน device ทั้งสองตัวเทียบกันดูได้เลย

อุปกรณ์ที่ต้องใช้

  1. Raspberry Pi แนะนำรุ่น 3b เป็นต้นไป ถ้ามีตังจะข้ามไป 3b+, 4 หรือจะไป intel nuc เลยก็ตามสบาย
  2. MicroSD 32GB (ใช้ชั่วคราวเท่านั้น)
  3. USB Drive ที่มี SSD Disk อยู่ข้างใน ซัก 64/128GB ก็กำลังดี ใหญ่กว่านี้ก็แพง (ผมใช้ SSD ที่ถอดมาจาก notebook เครื่องเก่า ขนาด 128GB)
  4. USB 3.0 Y Power Micro Cable for External HDD เจ้าตัวนี้จำเป็นนะครับ เพราะถ้าเราต่อ External SDD ของเราเข้าที่ Pi3 ตรงๆ ไฟมันจะไม่พอ ต้องจ่ายไฟเพิ่มโดยใช้สายนี้
USB 3.0 Y Power Micro Cable for External HDD
USB 3.0 Y Power Micro Cable

ขั้นตอนการซีตุ้ป (Setup Instructions) Hass.io บน SSD External

  1. Download Home Assistant OS จาก Official web site
  2. ใช้โปรแกรม BalenaEtcher เพื่อ flash Home Assistant OS ลงบน USB SSD External ที่เตรียมไว้ (ถ้าไม่มี BalenaEtcher ก็ setup BalenaEtcher ให้เรียบร้อยก่อนนะครับ Google หาได้เลย ง่ายมากกกก)
  3. สำหรับท่านใดที่มี External USB Drive (SATA) อยู่แล้ว เช่น ยี่ห้อ Buffalo ที่นิยมๆ กัน แนะนำให้ใช้ Case เดิมแต่เปลี่ยน Disk ข้างในเป็น SSD แทนนะครับ ผมก็ใช้วิธีนี้ แต่จะมีความเหนื่อยนิดนึงคือ เจ้า case USB Drive มันแงะยากพอสมควร อาจจะมีรอยกันบ้างก็ต้องยอมกันไป มีคลิปตัวอย่างการแงะมาฝากสำหรับท่านที่ไม่รู้ว่าจะเริ่มต้นแงะอย่างไร
  4. หลังจาก Flash Home Assistant OS เสร็จแล้ว ก็ Unmount ออกเพื่อเตรียมทำตาม Steps ถัดไป

ขั้นตอนการซีตุ้ป (Setup Instructions) สำหรับ 2B v1.2, 3A+, 3B และ Compute Module 3

  1. Download Raspberry Pi OS (32-Bit) Lite จากเว็บนี้ ให้เลือก Lite นะ จะได้ไฟล์เล็กๆ โหลดเสร็จเร็วหน่อย (เลือกเป็น Download ZIP)
  2. ใช้โปรแกรม BalenaEtcher เพื่อ flash SD card ที่เตรียมไว้ โดยไม่ต้องเสียเวลา Unzip ไฟล์ออกมา (BalenaEtcher สามารถ unzip ได้เอง)
  3. จากนั้นเมื่อ flash SD card เสร็จแล้ว ให้ unmount และ mount ใหม่ และหาไฟล์ที่ชื่อ “config.txt”
  4. เปิดไฟล์ config.txt โดยใช้ text editor ตัวไหนก็ได้ แล้วเพิ่มบรรทัดด้านล่างนี้เข้าไปท้ายไฟล์ และ Save
    program_usb_boot_mode=1
  5. Reboot Pi
  6. หลังรีบูตให้รอนานพอสมควร ใจเย็นๆ ออกไปซื้อกาแฟซักแก้ว ให้เวลามันซัก 15 นาที
  7. จากนั้นเสียบ SSD External (ใช้ data port) เข้า USB Port
    อย่าลืมเสียบ power port (ที่มีสายไฟเส้นเล็กกว่า) เข้ากับ power adaptor ด้วย
  8. ไฟ status การเขียนอ่านไฟล์บน SSD External จะกระพริบ จังหวะนี้ไม่ต้อง interrupt มัน ปล่อยมันไปเรื่อยๆ เลย รอนานพอสมควร(สิบกว่านาที) จนกว่าจะไม่มีการเคลื่อนไหวใดๆ แล้ว จึงให้ถอดปลั้ก Pi ออก
  9. ถอด SD Card ออก
  10. เสียบปลั้กให้ Pi แล้วบูตขึ้นมา ก็จะสามารถใช้งาน Hass.io โดยไม่ต้องใช้ SD Card แล้ว ข้อมูลทุกอย่างจะเขียนอ่านจาก SSD external แทน
สำหรับ ท่านที่ใช้ Pi 3B+, 4 ไม่ต้องทำตามขั้นตอน 1–10 นะครับ สามารถเสียบ SSD External USB Drive เข้ากับ Pi และใช้งานได้เลย อย่าลืมเอา SD Card ออกก่อนด้วยละ ไม่งั้นมันจะเลือกบูตจาก SD Card เป็นลำดับแรกเสมอ

References

Buy me a coffee