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 ของมันยังไงก็ไม่เวิร์ค

มัลดีฟส์ 2022

การเดินทางครั้งนี้เป็นครั้งแรกตั้งแต่โควิดระบาด เลยทำให้รู้ว่าการออกเดินทางนั้นน่าสนุกตื่นเต้นขนาดไหน (แถมเพิ่มความตื่นเต้นจากโควิดไปอีก)

เริ่มตั้งแต่สนามบินดอนเมือง ที่เจอว่าวันที่เราเดินทางนั้น มีเที่ยวบินขาออก(ต่างประเทศ) เพียงไม่กี่เที่ยวบิน ยังไม่นับว่าเคาเตอร์เช็คอินนั้นเปิดอยู่เพียงแถวเดียว มองผ่านๆแทบจะเหมือนว่าสนามบินไม่ได้เปิดให้บริการด้วยซ้ำ ! … ยิ่งเมื่อจนท.บอกว่าร้านอาหารข้างในปิดหมดเลยยิ่งแล้วใหญ่ แต่ในความเงียบเหงา ก็เหมือนจะมีข้อดีอยู่บ้าง คือการที่เราสามารถผ่านขั้นตอนการตรวจคนเข้าเมือง(ขาออก)และจุดตรวจความปลอดภัยได้ภายในสิบนาที มันก็รู้สึกดีเหมือนกันนะ

สนามบินที่ดูเหมือนไม่ได้เปิดให้บริการ
จอแสดงเที่ยวบินขาออกสองจอ

ทริปมัลดีฟส์ครั้งแรกของเรานั้นมีทั้งสองแบบคือ ช่วงแรกเราไปเกาะที่เป็นรีสอร์ท (private resort island) พักที่พักกลางน้ำ บริการอย่างดี ในขณะที่ช่วงหลังเราเลือกที่จะกลับเข้าไปพักในเมืองเพื่อจะได้รู้จักว่าคนท้องถิ่นจริงๆเค้าอยู่เค้ากินกันแบบไหน

Private Resort Island

เราพักกันที่ Cocoon Maldives ที่อยู่ทางเหนือของเมืองมาเล่ (Male’) เมืองหลวงของมัลดีฟส์ โดยหลังจากลงเครื่องที่มัลดีฟส์แล้ว ต้องต่อเครื่อง Seaplane ไปอีก 30-40 นาที ถือเป็นประสบการณ์ที่ดีที่ได้ลองนั่งเครื่องบินน้ำแบบนี้ (ถึงแม้ว่าภายในจะคล้ายๆรถตู้บ้านเราก็ตามที)

Krisp: โปรแกรมตัดเสียงรบกวนที่ทำให้ประชุมออนไลน์ง่ายขึ้น

หลังจากทำงานที่บ้านมาค่อนปี ก็พบว่าการประชุมทั้งวันโดยใส่หูฟัง (แบบ over-ear) นั้น ไม่ค่อยสบายหูเอาซะเลย

เลยเริ่มจากการประชุมโดยใช้ไมค์จากกล้องเว็บแคม และลำโพงข้างนอกก็เหมือนจะสะดวกขึ้น แต่ก็ต้องคอยระวังเรื่องเสียงรบกวน ไม่ว่าจะเป็นบ้านข้างๆต่อเติม เสียงรถกับข้าว หรือหมู่บ้านข้างๆกำลังตอกเสาเข็ม ทำให้บางทีต้องพูดหลายรอบ(ถึงจุดนี้ต้องยอมรับว่าการตัดเสียงรบกวนของ Microsoft Teams นั้นทำได้ดีกว่า Google Meets เยอะเลย)

ยังไม่นับว่าการต้องคอยปิดเปิดไมค์เวลาพูดด้วย ทำให้การสนทนาไม่ไหลลื่น หรือบางทีพูดไปตั้งนานโดยที่ไม่ได้เปิดไมค์

จนไปจบที่ลอง krisp.ai แอพที่ช่วยตัดเสียงรบกวน โดยทำตัวเองเป็น virtual microphone/speakers เราเลือกแอพต่างๆให้ใช้งานไมค์/ลำโพงผ่านทาง krisp ก็จะได้ฟีเจอร์นี้ไป

หลังจากลองแบบฟรี (ฟรี 240 นาทีต่อสัปดาห์) ก็พบว่ามันใช้ได้อยู่ เลยลองจ่ายเงินแบบ 1 เดือน (ที่แพงกว่าแบบรายปีเยอะมาก) … และสุดท้ายก็มาจบที่จ่ายรายปีในที่สุด

ตัวแอพทำอะไรได้บ้าง

  • ตัดเสียงรบกวนจากฝั่งเราเวลาเราพูด
  • ตัดเสียงรบกวนจากฝั่งคนพูดแล้วมี Noise มาหาเรา (ต้องจ่ายเงิน)
  • บันทึกเสียงเก็บไว้ (ต้องจ่ายเงิน)
  • บันทึกที่ว่าสามารถดาวโหลด/เล่นผ่านเว็บได้ (เล่นแบบ x2 ได้ด้วย)
  • มี feature ของฝั่ง video ด้วย พวกจัดการ background (แต่ยังไม่ได้ลองใช้)
  • มีการวิเคราะห์ให้ว่าเราใช้เวลากับการประชุม (รวมถึงการพูดในที่ประชุม) มากน้อยแค่ไหน
การใช้เวลาสำหรับประชุม/คุยงาน ในข่วงที่ผ่านมา

สิ่งที่คิดว่าแอพน่าจะทำได้ดีดว่านี้

  • คุณภาพของแอพ – ที่ผ่านมาเจอว่าบางแอพแฮงค์ พาลพาเอาการประชุมมีปัญหาไปด้วย
  • การกินทรัพยากรเครื่อง – บางทีเจอว่าเครื่องร้อง (เพราะต้องทำงานเยอะ)
  • ถ้าต่ออุปกรณ์ใหม่ๆเข้าไปกลางการประชุม เสียงจะวิ่งไปที่อุปกรณ์ใหม่ โดยที่ไม่ได้ผ่าน krisp – อันนี้ไม่แน่ใจว่าตัว krisp ทำอะไรได้บ้างมั๊ย
  • Mobile app – ที่เหมือนจะเคยมีและเลิกทำไปแล้ว
  • เห็น Google Meets ทำ Live caption ได้แล้ว คาดหว่างว่า krisp น่าจะทำได้ด้วย เป็น transcript ออกมา แล้วก็ทำ summarize อีกทีออกมาเป็น minute of meeting ให้เราอ่านได้เลย (เวอร์มาก !) – ถึงจุดนึงเราก็ส่ง krisp ไปเข้าประชุม (observe) แทนเราแล้วก็ส่งสรุปมาให้ !

โดยรวมถือว่าทำให้การทำงานชิลขึ้น เราสามารถนั่งเอนหลังฟังการประชุมได้ แล้วก็ไม่ต้องกังวลว่าเสียงสิ่งแวดล้อมจะกวนเวลากำลังพูด

หลังจากนี้ สิ่งที่มองหาคือ ปลาดาว ! (Conference speaker) น่าจะช่วยทำให้การคุยสะบายขึ้นอีกนิดนึง เพราะไมค์กับลำโพงอยู่ที่เดียวกัน ตอนใช้จอนอกนี่จะเจอว่าถ้าใช้ไมค์กับลำโพงจากเครื่องแมคที่วางอยู่ข้างๆนั้น เราจะเอียงตัวไปหามัน แล้วจบที่ปวดหลังทุกที

ปล. ประชุมเยอะเหมือนกันนะเนี่ย

MAC101: เมื่อ Dock ย้ายหน้าจอด้วยตัวเอง

หลังจากใช้ Mac มา 4 เดือน ปัญหานึงที่เจอบ่อยๆก็คือ อยู่ๆ Dock ด้านล่างก็ย้ายจอเอง จากหน้าจอหลักที่เป็นจอนอก ไปยังจออื่นๆ

ที่ผ่านมาก็แก้ปัญหาด้วยการถอดสายจอแล้วเสียบใหม่ (เป็นวิธีการที่บ้านมาก)

จนเมื่อวานก็ชวนสมบอยคุยเรื่องนี้ ก็เจอว่าสมบอยก็ถอดสายจอเสียบใหม่เหมือนกัน จนสมบอยไปหามาให้ว่ามันเป็น feature !!

สาเหตุของการที่ Dock ย้ายจอคือฟีเจอร์ที่ว่า

“ถ้าเราลากเมาส์จากกลางหน้าจอ ลงไปถึงขอบล่างของจอบน monitor ใดๆ Dock จะย้ายไปอยู่ที่หน้าจอนั้น !! “

วิธีการแก้ปัญหาหลังจากนี้คือ

  • ถ้ามันย้ายไป เราก็ย้ายกลับด้วยการลากเมาส์บนหน้าจอหลักของเรา
  • อีกทางแก้ที่มีคนแนะนำคือ ปิด feature “Displays have separate spaces” (System preferences > Mission Control) ซึ่งส่วนตัวคิดว่ามีผลกระทบมากกว่าแค่การย้าย Dock เลยยังไม่ได้ลอง

บางทีก็งงนะว่าฟีเจอร์แบบนี้มีไปทำไมกัน !

ปล. บางทีก็งงกับคำในภาษาไทย ระหว่างหน้าจอ (Logical screen) กับ จอ (Monitor) เหมือนกันเนอะ

Ref:

Scroll to top