สารบัญ:

ควบคุมประตูบานเลื่อนอัตโนมัติของคุณด้วย Home Assistant และ ESPHome: 5 ขั้นตอน (พร้อมรูปภาพ)
ควบคุมประตูบานเลื่อนอัตโนมัติของคุณด้วย Home Assistant และ ESPHome: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ควบคุมประตูบานเลื่อนอัตโนมัติของคุณด้วย Home Assistant และ ESPHome: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ควบคุมประตูบานเลื่อนอัตโนมัติของคุณด้วย Home Assistant และ ESPHome: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Home Assistant 2023 (EP.5) DIY อุปกรณ์ IoT ด้วย Tasmota พร้อมติดตั้ง MQTT Broker 2024, มิถุนายน
Anonim
ควบคุมประตูบานเลื่อนอัตโนมัติของคุณด้วย Home Assistant และ ESPHome
ควบคุมประตูบานเลื่อนอัตโนมัติของคุณด้วย Home Assistant และ ESPHome

บทความต่อไปนี้เป็นข้อเสนอแนะบางส่วนเกี่ยวกับประสบการณ์ส่วนตัวของฉันในการควบคุมประตูเลื่อนอัตโนมัติที่ฉันติดตั้งไว้ที่บ้าน ประตูนี้มีชื่อว่า "V2 Alfariss" มีรีโมท Phox V2 สองสามตัวเพื่อควบคุม ฉันยังมีกริ่งประตู Google Nest Hello ซึ่งโชคไม่ดีที่ไม่สามารถเสียบเข้ากับตัวควบคุมประตูบานเลื่อนเพื่อเปิดประตูจากแอปบนอุปกรณ์เคลื่อนที่จากระยะไกลได้ สำหรับฉัน วิธีหนึ่งในการแก้ไขข้อจำกัดนี้คือค้นหาวิธีเชื่อมต่อตัวควบคุมประตูเลื่อนอัตโนมัติกับอินเทอร์เน็ต ด้วยประตูที่เชื่อมต่อใหม่นี้ ฉันสามารถตอบกรณีการใช้งานต่างๆ เช่น การควบคุมประตูบานเลื่อนด้วยโทรศัพท์มือถือของฉัน ฉันทำได้โดยใช้ Home Assistant, ESPhome และชิ้นส่วนอิเล็กทรอนิกส์บางส่วน

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

เสบียง

  • เครื่องมือ:

    • ไขควง
    • หัวแร้ง
    • มัลติมิเตอร์
  • อะไหล่:

    • Raspberry PI 3 (ครบชุด: 2A alim + 32gb sd card)
    • ESP8266 Wemos D1 mini
    • 2 โมดูลรีเลย์
    • ตัวต้านทาน 2 ตัว 10k
    • PCB สำหรับการสร้างต้นแบบ
    • สายไฟ

ขั้นตอนที่ 1: มันทำงานอย่างไร

มันทำงานอย่างไร?
มันทำงานอย่างไร?

ความท้าทายหลักที่นี่คือการเชื่อมต่อประตูเลื่อนอัตโนมัติกับสมาร์ทโฟน ในการทำเช่นนี้ ให้เปลี่ยนประตูบานเลื่อนอัตโนมัติเป็นอุปกรณ์ IOT แน่นอนว่ามีหลายวิธีในการบรรลุเป้าหมายนี้ ในกรณีของฉัน หลังจากการทดลอง ฉันตัดสินใจใช้:

  • การใช้ Home Assistant เป็นฮับสำหรับควบคุมพอร์ทัลและรับคำขอจากผู้ใช้
  • การติดตั้ง ESPHome เป็นเฟิร์มแวร์ภายใน ESP8266
  • ชิ้นส่วนอิเล็กทรอนิกส์:

    • PCB ต้นแบบเพื่อประสานส่วนประกอบและเชื่อมต่อเข้าด้วยกัน
    • รีเลย์สองตัวจำลองปุ่มกดเพื่อเปิดหรือปิดประตู
    • แหล่งจ่ายไฟ 5V เก่าเพื่อจ่ายไฟให้กับ ESP8266
    • ตัวต้านทานสองตัวเพื่อแบ่งแรงดันจากเซ็นเซอร์เปิด/ปิด
  • การเชื่อมต่ออินเทอร์เน็ตกับเราเตอร์ (ต้องใช้คุณสมบัติการกำหนดค่ากฎ NAT)
  • บัญชี DuckDNS เพื่ออนุญาตให้แก้ไขชื่อกับ Home Assistant ของคุณ
  • โทรศัพท์มือถือสำหรับติดตั้ง Home Assistant App และวิดเจ็ตบนหน้าจอ

การไหล

ดูสคีมาเพื่อความเข้าใจที่ดีขึ้น

  1. จากโทรศัพท์มือถือของคุณ คุณกดวิดเจ็ตแอพมือถือ Home Assistant
  2. คำขอจะถูกส่งไปยังที่อยู่เว็บของ Home Assistant (แก้ไขโดย DuckDNS และ TLS โดยมาเข้ารหัสกันเถอะ)
  3. เราเตอร์อินเทอร์เน็ตของคุณกำหนดเส้นทางคำขอไปยังแอปพลิเคชัน Home Assistant
  4. Home Assistant ส่งการดำเนินการคำขอไปที่ ESPHome
  5. ESPHome เรียกมอเตอร์ประตูบานเลื่อนอัตโนมัติ
  6. แชมเปญ !

ขั้นตอนที่ 2: ติดตั้งและตั้งค่า Home Assistant บน Raspberry PI

Home Assistant สามารถถูกมองว่าเป็นศูนย์กลางสำหรับทุกสิ่ง IOT ในบ้านของคุณ จะเป็นที่ที่ดีในการควบคุมอุปกรณ์ที่เชื่อมต่อทั้งหมดและเพิ่มคุณสมบัติมากมาย คุณสมบัติหลักที่ฉันชอบมากที่สุดคือแดชบอร์ด, API และความหลากหลายของส่วนเสริม

การติดตั้ง

ฉันไม่มีค่าเพิ่มใดๆ ที่จะบอกวิธีตั้งค่าและติดตั้ง Home Assistant ให้คุณ อันที่จริง ก่อนหน้าโครงการนี้ ฉันไม่รู้จักซอฟต์แวร์นี้มาก่อน บทความสำคัญคือ:

  • ติดตั้ง Home Assistant ด้วยบทความนี้
  • การกำหนดค่าเครือข่ายสำหรับ Home Assistant สามารถพบได้ที่นี่:

    github.com/home-assistant/operating-system…

  • ติดตั้ง ESPHome ด้วยสิ่งนี้:
  • ติดตั้ง DuckDNS Add-on สำหรับ Home Assistant:
  • ติดตั้งปลั๊กอิน File Editor (มีประโยชน์):

หลังจากจุดเหล่านี้ทั้งหมด คุณมี Home Assistant ที่ดีที่ทำงานบน Raspberry PI ของคุณ คุณต้องสามารถเข้าถึงได้ผ่าน HTTP และ IP ในพื้นที่ หรือลอง

การกำหนดค่า

กำหนดค่า DuckDNS กับโดเมนของคุณและโทเค็น ตัวอย่างเช่น คุณสามารถเห็นในรูปภาพ ชิ้นส่วนของการกำหนดค่าของฉัน อย่าลืม accept_terms ด้วย "จริง"

let_encrypt:

accept_terms: true certfile: fullchain.pem keyfile: privkey.pem โทเค็น: 92f56bb2-2c26-4802-8d4d-xxxxxxxxxxxx โดเมน: - nameofyourchoice.duckdns.org วินาที: 300

ฉันตัดสินใจกำหนดค่า HA ด้วย IP แบบคงที่เพราะมันง่ายกว่า และคุณแน่ใจว่า IP จะเหมือนเดิมหลังจากรีบูต จากนั้นกฎการส่งต่อพอร์ตของคุณจะยังคงทำงานต่อไป: https://github.com/home-assistant/ ระบบปฏิบัติการ…

ในกรณีของฉัน ฉันเพิ่มการกำหนดค่าบางส่วนในไฟล์ configuration.yaml เนื่องจาก DuckDNS ไม่ได้จัดการ https เป็นเพียงการเข้ารหัสใบรับรองและการอัปเดต DuckDns:

http:

ssl_certificate: /ssl/fullchain.pem ssl_key: /ssl/privkey.pem base_url:

ขั้นตอนที่ 3: บอร์ดอิเล็กทรอนิกส์แบบกำหนดเองเพื่อเพิ่มประสิทธิภาพประตูบานเลื่อนอัตโนมัติ

บอร์ดอิเล็กทรอนิกส์แบบกำหนดเองเพื่อเพิ่มประสิทธิภาพประตูบานเลื่อนอัตโนมัติ
บอร์ดอิเล็กทรอนิกส์แบบกำหนดเองเพื่อเพิ่มประสิทธิภาพประตูบานเลื่อนอัตโนมัติ
บอร์ดอิเล็กทรอนิกส์แบบกำหนดเองเพื่อเพิ่มประสิทธิภาพประตูบานเลื่อนอัตโนมัติ
บอร์ดอิเล็กทรอนิกส์แบบกำหนดเองเพื่อเพิ่มประสิทธิภาพประตูบานเลื่อนอัตโนมัติ
บอร์ดอิเล็กทรอนิกส์แบบกำหนดเองเพื่อเพิ่มประสิทธิภาพประตูบานเลื่อนอัตโนมัติ
บอร์ดอิเล็กทรอนิกส์แบบกำหนดเองเพื่อเพิ่มประสิทธิภาพประตูบานเลื่อนอัตโนมัติ

บางทีอาจเป็นส่วนที่ผิดปกติมากที่สุดสำหรับฉันเพราะฉันมักจะปรับแต่งซอฟต์แวร์มากกว่าฮาร์ดแวร์ ฉันเริ่มต้นด้วยเขียงหั่นขนมและวงจรพื้นฐานเพียงเพื่อตรวจสอบว่าฉันสามารถอัปโหลดโปรแกรมภายใน Wemos D1 mini และไฟ LED กะพริบได้หรือไม่ จากนั้น ฉันได้เปลี่ยนเฟิร์มแวร์สำหรับ ESPhome และปฏิบัติตามบทความการเริ่มต้นใช้งานที่สมบูรณ์แบบนี้:

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

หมายเหตุ: คุณจะพบจุดเริ่มต้นที่ดีที่นี่ในคำถามที่พบบ่อยของ ESPhome หากคุณไม่สามารถเสียบ ESPHome กับ Home Assistant สำหรับการเริ่มต้นครั้งแรก หลังจากอัปโหลดเฟิร์มแวร์แล้ว คุณจะสามารถอัปโหลด "ผ่านทางอากาศ" (OTA) ได้

รีเลย์เพื่อเปิดใช้งานทริกเกอร์เปิด/ปิด

ในข้อกำหนดทางเทคนิคของประตูเลื่อนอัตโนมัติ ระบุว่าคุณต้องปิดวงจรระหว่าง "START" และ "COM" เพื่อทริกเกอร์การดำเนินการเปิด/ปิดประตู (การเปิดแบบเต็ม) วงจรปิดระหว่าง "START. P" และ "COM" ทริกเกอร์การดำเนินการเปิด/ปิดประตูสำหรับคนเดินเท้า ฉันไม่ได้ใช้ "STOP" แต่นี่เป็นแนวคิดเดียวกันแต่เพื่อหยุดประตูเมื่อเปิดหรือปิด

ในการเลือกชิ้นส่วนอิเล็กทรอนิกส์ ฉันได้ตัดสินใจเลือกใช้รีเลย์แทนทรานซิสเตอร์ ทรานซิสเตอร์นั้นดี แต่ไม่ได้รับประกันว่าวงจรจะปิดสนิท ฉันคิดว่าพวกเขาสามารถปล่อยให้กระแสไฟต่ำมากเข้ามาในวงจรได้ ข้อดีอีกประการของรีเลย์คือเมื่อคุณทดสอบวงจร คุณจะได้ยินเมื่อหน้าสัมผัสอยู่ใกล้กับเสียง "คลิก"

รับสถานะเซ็นเซอร์เปิด

ตอนแรกฉันคิดว่าจะใช้เซ็นเซอร์แม่เหล็กเพื่อตรวจจับสถานะการเปิดหรือปิดของประตู แต่ฉันได้รู้ว่ามีปลั๊กที่กล่าวถึง "เซ็นเซอร์จำกัด" บนตัวควบคุม เห็นได้ชัดว่าไม่ได้ใช้ (โดยเกินบรรยายเช่นฉัน) ฉันพบผู้ทดสอบการติดต่อที่ฉันสามารถอ่านสถานะเปิดหรือปิดได้เมื่อฉันเปิดประตู ฉันทำผิดพลาดครั้งใหญ่โดยคิดว่าสถานะนั้นเป็นแรงดันลอจิก TTL (3.3v) ในกรณีนี้ คุณสามารถเสียบปลั๊กเข้ากับ Wemos Input ได้โดยตรง แต่ในความเป็นจริง เมื่อประตูเปิดออก มีแรงดันเอาต์พุต 6.3v ในการใช้สัญญาณนี้ คุณต้องแบ่งแรงดันไฟฟ้าด้วยวงจรประเภทนี้ https://www.learningaboutelectronics.com/Articles/H… วิธีแก้ปัญหาค่อนข้างตรงไปตรงมาเพราะแรงดันต้องหารด้วยสอง ดังนั้นฉันจึงใช้ตัวต้านทาน 10 Kohms สองตัวระหว่างเอาต์พุตเซ็นเซอร์ลิมิตและอินพุต Wemos (ดูสคีมาในรูปภาพที่แนบมาอีกครั้ง)

แหล่งจ่ายไฟ 5v ราคาถูก

ในการจ่ายไฟให้กับส่วนประกอบเหล่านี้ ฉันใช้แหล่งจ่ายไฟของโทรศัพท์มือถือรุ่นเก่า ฉันเปิดมันและเปลี่ยนปลั๊กเป็นสายปลั๊กขนาดเล็กพร้อมสกรู ฉันยังตัดสินใจที่จะรวมสอง pcb (esp และแหล่งจ่ายไฟ) ด้วยกาวร้อน (ใช่ฉันรู้ว่ามันค่อนข้างสกปรก แต่ใช้งานได้:-) ไม่ใช่สิ่งที่สะอาดที่สุดเท่าที่เคยมีมา แต่ง่ายต่อการจัดการและหลีกเลี่ยงการสัมผัส 220v

นั่นคือทั้งหมดสำหรับส่วนฮาร์ดแวร์

ขั้นตอนที่ 4: ESPHome Firmware เพื่อเรียกใช้บน PCB Prototype

ตรรกะภายใน ESP8266 ถูกฉีดผ่านส่วนเสริมของ Home Assistant ESPHome คุณเขียนโค้ดตรรกะที่ ESPHome ดำเนินการ แอปพลิเคชันขนาดเล็กมากต้องเป็นโค้ดที่มีไวยากรณ์ ESPHome เป็นเรื่องง่ายและสนุกเพราะด้วย YAML เพียงไม่กี่บรรทัด ทำให้ ESP8266 ของคุณกลายเป็นสิ่งที่ชาญฉลาดได้อย่างรวดเร็ว ซอร์สโค้ดแบบเต็มมีอยู่ที่นี่: https://gist.github.com/toomone/819112ea1b04937912… มาเน้นที่ส่วนสำคัญของโค้ดกัน

การควบคุมรีเลย์

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

สวิตซ์:

- แพลตฟอร์ม: gpio pin: D3 // หมายเลข PIN ที่สัญญาณจะถูกส่งออกบน Wemos id: relay restore_mode: ALWAYS_OFF - แพลตฟอร์ม: ชื่อเทมเพลต: "Gate Pedestrian Remote" ไอคอน: "mdi:walk" turn_on_action: // the ตรรกะที่จะดำเนินการโดย ESPHome เพื่อจำลองพัลส์ - switch.turn_on: รีเลย์ - หน่วงเวลา: 500ms - switch.turn_off: รีเลย์

รหัสก่อนหน้าจะสร้างสวิตช์และเทมเพลต แนวคิดทั้งสองนี้ช่วยให้ ESPHome สามารถเสนอกลไกที่ได้รับการปรับปรุงโดยไม่ต้องเข้ารหัสจริง ฉันขอเชิญคุณอ่านเอกสารประกอบของ ESPHome เพื่อเจาะลึกคุณสมบัติที่มีให้ https://esphome.io/cookbook/relay.html และ

กำลังอ่านสถานะเซ็นเซอร์เปิดปิด

binary_sensor:

- แพลตฟอร์ม: gpio พิน: หมายเลข: D1 คว่ำ: ชื่อจริง: "เซ็นเซอร์เปิด" id: open_sensor อุปกรณ์_คลาส: Garage_door

สคริปต์ส่วนนี้บอกให้บอร์ด wemos อ่านสถานะบนเซ็นเซอร์เปิดบน D1 ในการค้นหา D1 คุณเพียงแค่อ่านบน Wemos PCB ของคุณ ฉันใช้พารามิเตอร์ "inverted" เป็น true เพื่อกลับค่าสัญญาณ ฉันจำเหตุผลที่ชัดเจนไม่ได้ แต่ฉันคิดว่ามันง่ายในการแสดงการปิดหรือเปิดตามสถานะพอร์ทัลบนแดชบอร์ด HA

อนุญาตให้เรียก API ไปที่ ESPHome

หากคุณต้องการใช้วิดเจ็ต Home Assistant บนโทรศัพท์ของคุณ คุณต้องเพิ่มโค้ดเล็กๆ นี้:

# เปิดใช้งาน Home Assistant API

api: บริการ: - บริการ: open_portal_pedestrian จากนั้น: - switch.turn_on: รีเลย์ - ล่าช้า: 500ms - switch.turn_off: รีเลย์

ด้วยวิธีนี้ ตัวกำหนดค่าแอพ Home Assistant จะแสดงรายการการดำเนินการเพื่อเปิดประตู ฉันเลือกเพียงอันเดียวสำหรับคนเดินเท้าเพราะเป็นอันที่ฉันใช้บ่อยที่สุด

ขั้นตอนที่ 5: เปิดเผยผู้ช่วยในบ้านของคุณสู่โลก

เปิดเผยผู้ช่วยบ้านของคุณสู่โลก
เปิดเผยผู้ช่วยบ้านของคุณสู่โลก
เปิดเผยผู้ช่วยบ้านของคุณสู่โลก
เปิดเผยผู้ช่วยบ้านของคุณสู่โลก

เพราะคุณต้องการเปิดประตูบานเลื่อนอัตโนมัติได้จากทุกที่บนโลก ไม่ใช่แค่จากบ้านเท่านั้น คุณต้องเปิดเผย HA ของคุณให้โลกเห็น อย่าลืมใช้การพิสูจน์ตัวตนด้วยรหัสผ่านที่รัดกุม บนเราเตอร์อินเทอร์เน็ตของคุณ คุณต้องกำหนดค่ากฎเพื่อกำหนดเส้นทางการรับส่งข้อมูลทั้งหมดที่มาจากพอร์ตเฉพาะไปยัง IP เฉพาะและพอร์ต ตัวอย่างเช่น คุณจะพบการกำหนดค่าที่ฉันทำบนเราเตอร์ผู้ให้บริการของฉัน (ขออภัย เป็นภาษาฝรั่งเศส) แต่คุณจะสังเกตเห็นว่าการกำหนดค่านั้นง่ายมาก กฎต้องบอกให้เราเตอร์ของคุณยอมรับโปรโตคอลทั้งหมดบนพอร์ต xxxx เพื่อไปยัง Home Assistant IP ด้วยพอร์ต 8123 (หากคุณไม่ได้เปลี่ยน)

นั่นคือทั้งหมดที่ อย่าลังเลที่จะถามคำถามเพราะฉันลืมเพิ่มรายละเอียดในส่วนที่เฉพาะเจาะจง ระบบทำงานทุกวันไม่มีปัญหา ฉันยังชอบความจริงที่ว่าฉันสามารถให้สถานะเปิดหรือปิดพอร์ทัลจากโทรศัพท์ของฉัน

แนะนำ: