กริ่งประตูอัจฉริยะ ESP32 ที่เป็นมิตรต่อความเป็นส่วนตัวผ่านการผสานรวมกับ Home Assistant แบบโลคัล
(tristam.ie)- เป็นโปรเจกต์ทำกริ่งประตู DIY ที่ผสานรวมกับ Home Assistant แบบโลคัลด้วย ESP32-CAM และ ESPHome สำหรับผู้ใช้ที่ต้องการหลีกเลี่ยงกริ่งประตูอัจฉริยะที่พึ่งพาคลาวด์
- โครงสร้างพื้นฐานประกอบด้วย Home Assistant, แอดออน ESPHome และแอป Home Assistant companion บนมือถือ โดยใช้การกดปุ่มเป็นทริกเกอร์เพื่อส่งสแนปช็อตจากกล้องเป็นการแจ้งเตือนไปยังโทรศัพท์
- ฮาร์ดแวร์ประกอบด้วย ESP32-CAM, ปุ่มกดชั่วขณะ, วงแหวน LED RGB 8 ดวง ที่เป็นตัวเลือก, สาย Micro USB ยาว 10 เมตร และกล่อง 3D print โดยสามารถใช้ LED ในตัวแทนแฟลชได้
- ขึ้นอยู่กับรุ่นย่อยของ ESP32-CAM ผังขาและพฤติกรรม pull-down อาจแตกต่างกัน ดังนั้นอินพุตปุ่มที่ GPIO14 จึงต้องเดินสายโดยใส่ ตัวต้านทาน pull-down 10kΩ ระหว่างขานี้กับ GND
- กล่อง PLA ถูกใช้ในตัวอย่างการพิมพ์ แต่สำหรับการกันน้ำ PETG หรือ ABS เหมาะกว่า และเนื่องจากมีช่องกล้อง จึงต้องติดตั้งในตำแหน่งที่หลบฝนได้
การตั้งค่ากริ่งประตูแบบโลคัลและสิ่งที่ต้องเตรียม
- กริ่งประตูอัจฉริยะนี้มีเป้าหมายเป็นการตั้งค่าที่ เป็นมิตรต่อความเป็นส่วนตัว และผสานรวมกับ Home Assistant ผ่าน ESPHome
- ในการเริ่มต้น ต้องมีองค์ประกอบต่อไปนี้
- อินสแตนซ์ Home Assistant ที่กำลังรันอยู่
- แอดออน ESPHome
- แอป Home Assistant companion บนมือถือสำหรับรับการแจ้งเตือนเมื่อกดปุ่ม
- ตัวอย่างการประกอบใช้ ไฟวงแหวน LED RGB 8 ดวง แต่หากต้องการทำให้ง่ายขึ้น สามารถละไว้และใช้ LED ในตัวของ ESP32-CAM เป็นแฟลชแทนได้
- ESP32-CAM เวอร์ชัน AI-Thinker อาจไม่ได้มีตัวต้านทาน pull-up/pull-down ครบเหมือน ESP32 ทั่วไป
- เคยลองใช้ฟังก์ชัน
INPUT_PULLDOWNของ ESPHome บน GPIO14 แต่ไม่ทำงาน - มี ESP32-CAM รุ่นย่อยจากจีนจำนวนมาก จึงอาจมีความแตกต่างกันตามบอร์ด
- เคยลองใช้ฟังก์ชัน
ชิ้นส่วนและไฟล์ที่เผยแพร่
- ชิ้นส่วนหลักมีดังนี้
- ESP32-CAM
- แนะนำให้ใช้บอร์ดที่มีปุ่ม
flash/download/io0เพื่อให้แฟลช ESPHome ครั้งแรกได้ง่าย - บอร์ดที่ไม่มีปุ่มดังกล่าวต้องแฟลชโดยใช้อะแดปเตอร์ FTDI
- แนะนำให้ใช้บอร์ดที่มีปุ่ม
- ปุ่มกดชั่วขณะ
- ไฟวงแหวน LED RGB 8 ดวง
- สาย Micro USB ยาว 10 เมตร
- ESP32-CAM
- มีการเผยแพร่ไฟล์ 3D print และไฟล์ตั้งค่าไว้แล้ว
- ไฟล์ .stl บน Printables
- thatguy-za/esp32-cam-doorbell: การตั้งค่า Home Assistant และ ESPHome
การพิมพ์และประกอบกล่อง
- กล่องพิมพ์ออกมาเป็นสามชิ้น
- ตัวเครื่องหลัก
- แผ่นยึด ESP32-CAM
- แผ่นหลังที่ใช้เป็นขายึดผนังด้วย
- กล่องด้านหน้าและด้านหลังต้องพิมพ์โดยใช้ support
- ตัวอย่างการพิมพ์ใช้ PLA แต่สำหรับการกันน้ำ แนะนำให้ใช้ ฟิลาเมนต์ PETG หรือ ABS พร้อม infill 20~30%
- หลังพิมพ์เสร็จ ให้เพิ่ม insert สำหรับสกรู M2.5 จำนวนสองตัว
- ใส่ไว้ที่ฝาครอบด้านหน้าเพื่อให้ขัน bracket ยึด ESP32-CAM ได้
- ใส่ไว้ที่ด้านล่างของ backplate เพื่อให้ยึด face plate ด้วยสกรู M2.5 ยาว 10mm ได้
แฟลช ESP32-CAM ด้วย ESPHome
- หากต้องการบูต ESP32-CAM เข้าสู่โหมดแฟลช ให้กดปุ่ม
flash/download/io0ค้างไว้ขณะเชื่อมต่อกับคอมพิวเตอร์ด้วยสาย Micro USB - ใน Home Assistant ให้เปิดแอดออน ESPHome และสร้างอุปกรณ์ใหม่
- เส้นทางคือ
Settings -> Add-ons -> ESPHome -> Open Web UI - ตั้งชื่ออุปกรณ์ใหม่ เช่น
Doorbell - เลือกประเภทอุปกรณ์เป็น ESP32 และติ๊ก
use recommended settings
- เส้นทางคือ
- วางโค้ดตั้งค่าจาก GitHub repository ไว้ใต้
captive_portal:ใน YAML ที่สร้างขึ้น - กด
SaveและInstallจากนั้นเลือกPlug into this computer - แฟลชเฟิร์มแวร์จากเบราว์เซอร์ผ่าน ESPHome Web
- Google Chrome เป็นเบราว์เซอร์ที่ใช้แฟลชเฟิร์มแวร์ ESP32-CAM ได้เสถียรที่สุด
- หลังคอมไพล์เฟิร์มแวร์แล้ว สามารถกด
Download Projectได้ ซึ่งอาจใช้เวลาหลายนาที
- เมื่อแฟลชเฟิร์มแวร์ใหม่แล้ว Home Assistant จะค้นพบอุปกรณ์ใหม่ และสามารถเพิ่ม entity ที่ต้องการไปยังแดชบอร์ดได้
ระบบอัตโนมัติสำหรับแจ้งเตือนปุ่มกด
- เมื่อตัวปุ่มกริ่งประตูถูกกด จะตั้งค่า automation ให้ถ่าย สแนปช็อตจากกล้อง แล้วส่งไปยังโทรศัพท์มือถือ
- ใน Home Assistant ให้สร้าง automation ใหม่
- เส้นทางคือ
Settings -> Automations -> + Create Automation - สร้าง automation ใหม่ตั้งแต่ต้น แล้วเลือก
Edit in YAMLจากเมนูมุมขวาบน
- เส้นทางคือ
- วาง YAML สำหรับ automation จาก GitHub repository แล้วแก้ไข ชื่อ entity ของอุปกรณ์ เช่น โทรศัพท์มือถือ ให้ตรงกับสภาพแวดล้อมของคุณ
- หลังบันทึกและรีสตาร์ต Home Assistant แล้ว automation ใหม่จะเริ่มทำงาน
การเดินสายและข้อจำกัดในการติดตั้ง
- บอร์ด ESP32-CAM มีหลายรุ่นย่อย จึงต้องตรวจสอบ ผังขา ของบอร์ดจริง
- การเดินสายทำโดยบัดกรีเข้าที่ด้านหลังของ PCB ล่างซึ่งมีพอร์ต Micro USB
- ต้องเพิ่ม ตัวต้านทาน pull-down 10kΩ ระหว่าง GPIO14 กับ GND
- หากไม่มีตัวต้านทานนี้ พบปัญหาว่า GPIO14 มักลอยอยู่ในสถานะ high
- แนะนำให้หุ้มตัวต้านทานด้วยท่อหด
- เนื่องจากมีช่องสำหรับกล้องในตัว โครงสร้างจึงไม่ได้กันน้ำอย่างสมบูรณ์ และต้องติดตั้งในตำแหน่งที่ได้รับการป้องกันจากฝน
- การจ่ายไฟใช้ สาย Micro USB ยาว 10 เมตร ที่อยู่ในรายการชิ้นส่วน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดีเลย ชอบไฟด้วย
สามารถติด reed switch (เหมือนเซ็นเซอร์เปิด/ปิดประตูทั่วไป) ไว้ใกล้ ๆ ขดลวดแม่เหล็ก ที่ทำให้กริ่งประตูแบบโง่ ๆ ดัง แล้วส่งข้อมูลไปยัง Home Assistant ได้ด้วย
ผมต่อ reed switch ราคา $0.50 เข้ากับกริ่งประตูเดิม แล้วลากไปยังพอร์ต digital I/O ของ ESP ที่รับไฟจากแหล่งจ่ายเดียวกับขดลวดกริ่งประตู พอกดกริ่ง ก็จะส่งสแนปช็อตทางอีเมลจากกล้องหน้าประตูที่ใช้งานเฉพาะในเครื่อง และเล่นเสียงบันทึกกริ่งประตูบนสเตอริโอชั้นบน ตอนแรกตั้งใจจะใช้ input แบบแอนะล็อกคอยตรวจแรงดันของขดลวด แต่มันไม่นิ่งเกินไป ส่วน วิธีใช้ reed switch ที่ง่ายกว่านั้นตรวจจับกระแสได้เสถียรมาก
แหล่งจ่ายเดียวกับขดลวดกริ่งประตูนี่เจ๋งดี สงสัยว่าในบ้านยังมีแหล่งแรงดันไฟฟ้าแบบก้ำกึ่งที่เอามาใช้ได้อีกอะไรบ้าง เช่น head unit ของ HVAC หรือสายโทรศัพท์แอนะล็อกสายโทรศัพท์ POTS (Plain Old Telephone Service) ควรมีไฟประมาณ 48V DC เมื่อโทรศัพท์ทุกเครื่องอยู่ในสถานะ on-hook ถ้าโทรศัพท์บนไลน์เดียวกันถูกยกหูเป็น off-hook แรงดันจะตกลงมาอยู่ช่วง 3–9V โทรศัพท์ที่ off-hook โดยทั่วไปใช้กระแส DC ประมาณ 20mA ในการทำงาน และมีความต้านทาน DC ประมาณ 180Ω แรงดันตกส่วนที่เหลือเกิดจากเส้นทางสายทองแดงและวงจรของบริษัทโทรศัพท์ ซึ่งโดยปกติมีตัวต้านทานอนุกรม 200–400Ω เพื่อป้องกันการลัดวงจรและแยกวงจรเสียง
https://www.jkaudio.com/article_03.htm
เคยใช้ในลักษณะคล้ายกัน โดยติดไว้บนเคสด้านบนของรีเลย์ เพื่อตรวจว่าขดลวดมีไฟเข้าหรือไม่ โดยไม่ต้องจิ้มเข้าไปที่วงจรควบคุมหรือวงจรโหลดโดยตรง
สิ่งที่ผมต้องการจาก อุปกรณ์ IoT แบบนี้ก็มีแค่ไม่ต้องพึ่งคลาวด์และใช้ PoE เท่านั้นเอง ผมยอมเดินสายเป็นพันล้านเส้นดีกว่าต้องมารับมือกับแบตเตอรี่โง่ ๆ ที่หมดอยู่เรื่อย ๆ ราคาแบตเตอรี่ก็แพงขึ้นเรื่อย ๆ ด้วย
แบบไม่แยกกราวด์: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
แบบแยกกราวด์: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
การเปลี่ยนแบตเตอรี่ปีละครั้งดูเหมือนงานเล็ก ๆ แต่พอมีเป็นสิบ ๆ ชิ้นก็สะสมเร็ว และต้องทำซ้ำตามรอบ จึงไม่ได้ดีกว่าการเพิ่มแบบเชิงเส้นเลย
ถ้ามีบ้านของตัวเอง ผมคิดว่าจะไปทาง KNX
ขอออกนอกเรื่องนิดหนึ่ง ภรรยาผมมี ADD ค่อนข้างรุนแรง เลยทำของหายบ่อย Tile หาเจอได้เฉพาะเมื่ออยู่ในระยะหนึ่งเท่านั้น และดูเหมือนจะเสียบ่อย
โอกาสอาจน้อย แต่สงสัยว่ามีใครเคยสร้าง ระบบติดตามตำแหน่งในอาคาร ที่ใช้บีคอน Bluetooth Low Energy เพื่อหาวัตถุในพื้นที่ 3D ด้วยความคลาดเคลื่อนไม่กี่เซนติเมตรในบ้านบ้างไหม
ถ้าพูดให้ใกล้ประเด็นขึ้น ESP32 นี่เจ๋งมากจริง ๆ แต่ผมรักษาการเชื่อมต่อ Wi‑Fi ให้เสถียรด้วย MicroPython หรือ CircuitPython ไม่ได้ ถึงอย่างนั้นขอบเขตของสิ่งที่ทำได้ก็น่าทึ่ง บอร์ดของผมค่อนข้างเก่าแล้ว ถ้าซื้อบอร์ดใหม่อาจเห็นความต่างก็ได้
MicroPythonหรือCircuitPythonก็ไม่รู้ว่าคาดหวังอะไรอยู่ สำหรับ ระบบฝังตัว ที่ต้องการความน่าเชื่อถือ นี่แทบจะเป็นของต้องห้ามเลยเป็นเรื่องน่าสนใจที่ในบางที่ของโลก การมีอยู่ของกริ่งประตูสำคัญมากจนถึงขั้นต้องทำให้มัน “สมาร์ต” ความสำเร็จของผลิตภัณฑ์กริ่งประตูอัจฉริยะสะท้อนความต้องการแบบนั้นได้ดี
ผมไม่มีกริ่งประตู ถ้าผู้มาเยือนไม่รู้วิธีติดต่อผมหรือคนอื่นในบ้าน ก็มีโอกาสสูงว่าเขาแทบไม่มีเหตุผลจะมาที่นั่นตั้งแต่แรก
ไม่ใช่แค่ผมคนเดียวด้วย จากการสำรวจแบบไม่เป็นวิทยาศาสตร์เอามาก ๆ ตอนเดินเล่นสัปดาห์ก่อน บ้านส่วนใหญ่บนถนนผมก็คล้ายกัน และเดาว่าส่วนใหญ่ในเมืองผมก็คงเป็นแบบนั้น
กริ่งประตูรู้สึกล้าสมัยไปแล้ว แถวถนนของเราแทบไม่มีใครติดเลย
จากรีวิวที่ผมเคยเห็น กล้องกริ่งประตู Reolink ดูเหมือนเป็นตัวเลือกเชิงพาณิชย์เดียวที่ตรงกับข้อกำหนดของผู้เขียน ทำงานแบบโลคัลและผสานกับ Home Assistant ได้
อย่างไรก็ตาม อินเตอร์คอมยังต้องใช้แอปแยกต่างหาก โซลูชันที่ผู้เขียนทำเองดูเหมือนจะไม่มีการสื่อสารเสียง และอย่างน้อยถ้าใช้แค่โปรโตคอลกล้อง ก็ดูเหมือนยังไม่มีวิธีใช้เสียงสองทางโดยตรงใน Home Assistant
ESP32 นี่เหมือนโพรงกระต่ายที่ลึกจริง ๆ มีโปรเจกต์จำนวนมากที่ใช้ ESP32 หรือกำลังพัฒนาอยู่แล้ว และตอนนี้ก็มีอีกอย่างหนึ่งให้ต้องนึกถึง
เป็นโปรเจกต์ที่ยอดเยี่ยม กล้อง ESP32 อาจมีคุณภาพภาพค่อนข้างแย่ ถ้ามีภาพความละเอียดเต็มที่ถ่ายจากกริ่งประตูในบล็อกก็น่าจะช่วยได้
โปรเจกต์ยอดเยี่ยมมาก ชอบที่ได้เห็น กริ่งประตู ESP32 หลากหลายแบบที่เหล่าเมกเกอร์สร้างขึ้น
ถ้ามีวิดีโอหรือภาพตัวอย่างก็คงดี ผมเคยใช้ ESP32 Cam มาก่อน ซึ่งตัวมันเองก็น่าประทับใจ แต่โดยส่วนตัวแล้วคุณภาพยังไม่ใช่แบบที่ผมต้องการ แน่นอนว่าการใช้งานกริ่งประตูอัจฉริยะของผมเอนเอียงไปทางความปลอดภัยมากกว่าแค่ “มีใครอยู่ไหม”
ตอนนี้ผมใช้ กริ่งประตู PoE ค่อนข้างแพงที่ซื้อมาสภาพ
AS-ISเพื่อประหยัดค่าใช้จ่าย เป็นผลิตภัณฑ์ของ Axis Communicationsผมชอบความสามารถในการรับเหตุการณ์ ONVIF มาก ถ้าสามารถ consume เหตุการณ์ได้ ก็ทำสิ่งที่ต้องการได้แทบทุกอย่าง ทำให้ผลิตภัณฑ์แบบนี้ยืดหยุ่นมากขึ้น เช่น มีวิธีสร้างเหตุการณ์แบบกำหนดเองได้ด้วย อย่างกรณีมีคนเอามือบังเลนส์กล้อง
Home Assistant รองรับ ONVIF ได้ยอดเยี่ยม ผมอยากสร้าง wrapper บางอย่างครอบสคริปต์ (เช่น boolean ประตูเปิด/ปิด) เพื่อให้ได้เหตุการณ์ ONVIF แบบเนทีฟ
หนึ่งในคอมเมนต์บนไซต์นี้ชี้ประเด็นเรื่อง ปัญหาประสิทธิภาพของ ESP32 ผมไม่เคยจับอุปกรณ์ IoT หรือบอร์ดแบบนี้มาก่อน แต่ราคาค่อนข้างถูกเลยอยากลองเล่นดู และพอค้นก็พบว่า ESP32 ผลิตด้วยกระบวนการ 40nm
สงสัยว่ามีรุ่นใหม่ที่ผลิตด้วยกระบวนการที่ก้าวหน้ากว่า ให้ประสิทธิภาพสูงขึ้นภายใต้งบพลังงานใกล้เคียงกันหรือไม่
มีตระกูล SoC อื่นที่ให้ trade-off ดีกว่า แต่มีไม่มากที่เป็นมิตรกับนักพัฒนางานอดิเรกเท่า ESP32 อาจมี Nordic หรือไม่ก็ขยับไปทางคอมพิวเตอร์บอร์ดเดี่ยวขนาดเล็กอย่าง Pi Zero
ถึงอย่างนั้น ESP32 ก็ยังทรงพลังกว่าที่อุปกรณ์โฮมออโตเมชันส่วนใหญ่ต้องการมาก จะเริ่มชนขีดจำกัดก็เฉพาะงานหนัก ๆ บางอย่าง เช่น สตรีมวิดีโอหรือแมชชีนเลิร์นนิง และถึงตอนนั้น ถ้าทำอย่างชาญฉลาดก็ยังทำอะไรได้ค่อนข้างมาก