Home Assistant กับ Tuya Integration

หลังจากใช้งาน Home Assistant (HA) กับ Tuya มาได้พักใหญ่ คิดว่าตกผลึกประมาณนึงละ เลยอยากเล่าหน่อย

Tuya เป็นบริษัทที่ขายอุปกรณ์ Iot + platform ของจีนเจ้าใหญ่ ที่มีบริษัทเอาไปผลิต device ออกมาเยอะมากที่ใช้งานบน platform ของ Tuya มีทั้งแบบที่เป็น Wi-Fi และ Zigbee

ก่อนจะไปต่อ ต้องบอกความคิดเบื้องหลังใช้งาน Tuya กับ Home Assistant ของตัวเอง ซึ่งก็คือ

  • แอพ Tuya ต้องยังใช้งานกับอุปกรณ์ได้ปกติ
  • ไม่อยากลง custom firmware – อยากให้สามารถใช้งานได้ปกติ ไม่อยากต้องตามข่าวของ library / breaking changes ต่างๆ ของแต่ละ component
  • สามารถใช้งานกับ Google Assistant ได้ (เพื่อทำ voice commands)
  • ถ้าสามารถไม่ต้องพึ่งพา internet ได้ก็จะดี (optional)

ในการ Integrate Tuya เข้ากับ Home Assistant นั้นมีด้วยการ 2 ท่า คือ

  1. Official Tuya Integration – https://www.home-assistant.io/integrations/tuya/
    อันนี้ก็ตามตัว อันหลักของ Tuya built-in มาในระบบของ HA เอง มีข้อควรทราบคือ
    • ต้องการ Tuya Iot platform account คือเราต้องไปสมัคร developer platform เพื่อให้ได้ client detail มากรอกใน Home Assistant
    • ในการใช้งาน developer platform จะมีสิ่งที่เรียกว่า subscription อยู่ ซึ่งที่ผ่านมาจนถึงตอนนี้ ยังฟรีอยู่ (โดยเรียกว่า trial) ซึ่งเมื่อหมดอายุก็เข้ามากด ขอต่ออายุได้ … แต่แน่นอนว่าเราต้องขยันเข้ามากดขอต่ออายุนะ ไม่งั้นก็ใช้ไม่ได้
    • การต่อกับ official add-on นั้น มี mechanism ที่เป็น messaging queue (MQTT) เพื่อส่งข้อมูลของ sensor / สถานะสวิตช์ และค่าต่างๆจาก server Tuya กลับมาให้เรา ซึ่ง add-on ปัจจุบันทำสิ่งนี้ได้แย่มาก กล่าวคือ ทุกๆ 2 ชม. ตัว messaging queue credential จะหมดอายุ และ add-on เองไม่สามารถขอ token ใหม่ได้ เลยต้องมีวิธี workaround (ทีเดี๋ยวจะเขียนไว้ด้านล่าง) เพื่อให้มันใช้งานได้อย่างต่อเนื่อง
    • จากการอ่านค่าต่างๆจากตัว messaging queue ที่ว่า ทำให้ add-on ต้องพึ่งพา internet (ในการรับค่าสถานะ) ตลอดเวลา ส่วนการสั่งงานนั้น น่าจะสามารถสั่งตรงไปยัง Gateway/Hub ได้เลยโดยไม่ต้องออกอินเตอร์เน็ต

ว่าด้วยเรื่อง Cloudflare tunnel และ configuration ของมัน

ตอนนี้ที่บ้านมีใช้ Cloudflare tunnel สำหรับทำให้ Home Assistant เข้าถึงได้จากนอกบ้าน (ถ้าเป็นสมัยก่อนเราจะใช้การทำ dynamic dns + forward port จาก router) แต่ท่า Cloudflare tunnel นี้ทำอะไรได้มากกว่า แถมไม่ต้องไปพึ่งพาทั้ง dynamic dns และ configuration ของ router ที่ดีบ้างไม่ดีบ้างด้วย

ที่ผ่านมามีการใช้งานตัว tunnel ผ่าน cloudflared (ของแท้ต้องมี -ed) ที่เป็น docker image ของทาง Cloudflare เอามาทำสองอย่างคือ ทำตัว DNS ร่วมกับ Pi-hole กับเอามาทำ Tunnel เนี่ยแหล่ะ

ภาพอธิบายการทำงานของ cloudflare tunnel

ที่จะเล่าวันนี้คือ อยู่ ๆ ตัว cloudflared container (ที่รันอยู่บน k3s) ที่ทำหน้าที่ tunnel พออัพเกรด version ก็ใช้งานไม่ได้ ฟ้องว่าไม่ได้มีการ set ingress ผืด( ingress คือตัวที่บอกว่า ต้นทาง host หนึ่งๆ จะให้ forward request ไปที่ local server ตัวไหน) พยายามทำเท่าไหร่ก็ไม่สำเร็จ แก้ ingress ที่เป็น config.yaml ของมันยังไงก็ไม่เวิร์ค

Scroll to top