บ้านอัตโนมัติของฉัน: Raspberry Pi + Node-Red + MQTT & Amazon Echo
ในคุณสมบัติบ้านอัตโนมัติล่าสุดของฉัน Dave McLaughlin พาเราผ่านการเดินทางของเขาพัฒนาระบบบ้านอัจฉริยะของเขาเอง ด้วยการอัพเกรด DIY เป็นฮาร์ดแวร์ระบบอัตโนมัติในบ้านที่มีอยู่และการรวมซอฟต์แวร์ที่ชาญฉลาดเขาได้สร้างระบบที่น่าสนใจ …
ในตอนเริ่มต้น
เมื่อใช้ Homeseer และอุปกรณ์ไร้สายจำนวนมากในขณะที่อยู่ในสหราชอาณาจักรฉันเปลี่ยนไปใช้ Wireless เมื่อฉันย้ายไปต่างประเทศไปยังอินโดนีเซียในปี 2548 เนื่องจากฉันอาศัยอยู่ในอพาร์ทเมนต์เช่า อีเธอร์เน็ตในห้องเดียวกัน
ฉันตัดสินใจเกี่ยวกับระบบ Z-Wave หลังจากนั้นเพิ่มโมดูลหลอดไฟ WEMO ด้วย สำหรับด้าน Z-Wave ของสิ่งต่าง ๆ ฉันเลือกโมดูลเครื่องใช้ไฟฟ้า HomePro สำหรับซ็อกเก็ตและโมดูลโคมไฟ Everspring สำหรับแสง ทั้งสองโมดูลนี้ไม่ถูก
ฉันวิ่งไปกับการตั้งค่านี้จนถึงกลางปี 2559 แต่ปัญหาต่อไปนี้ทำให้เกิดการเปลี่ยนแปลง ประการแรก Z-Wave เป็นเจ้าอารมณ์ที่มี 2 หน่วยที่ปลายสุดของอพาร์ทเมนต์ OU แม้ว่าฉันจะมีโมดูลเครื่องใช้ไฟฟ้าครึ่งทางระหว่างมันก็ไม่เคยทำงานได้อย่างน่าเชื่อถือ ฉันจะต้องกดแท็บเล็ตที่ใช้ Homeseer Touch อย่างต่อเนื่องเพื่อให้ได้ไฟเตียงของฉันออกไป ต่อมาฉันจะมี 2 หน่วยที่หลอดไฟควบคุมระเบิดและล้มเหลว หนึ่งใน IC ที่เป็นส่วนหนึ่งของแหล่งจ่ายไฟได้เปิดกว้าง
ปวดหัวต่อไปคือโมดูลโคมไฟ Wemo วิธีเดียวที่จะทำให้สิ่งเหล่านี้ทำงานได้คือ IFTTT ผ่านช่อง Homeseer และ Wemo ตราบใดที่การเชื่อมต่ออินเทอร์เน็ตของฉันดีก็ใช้ได้ดีแม้ว่าบางครั้งก็ช้าลง ไม่ใช่ 10 ในระดับ WAF
ในช่วงต้นปี 2559 ฉันเจอเว็บไซต์ที่ดำเนินการโดย Peter Scargill ซึ่งเคยเป็น บริษัท ออกแบบอิเล็กทรอนิกส์เมื่อหลายปีก่อนจาก Tyneside ในเวลานั้นฉันใช้คอนโทรลเลอร์ AppCon Wired ของเขาสำหรับระบบอัตโนมัติในบ้านโดยใช้ไมโครคอนโทรลเลอร์ขนาดเล็ก 8 บิต ฉันมีสายเคเบิลสัญญาณเตือนภัยหลัก 4 เมตรวิ่งไปทั่วอพาร์ทเมนต์ของฉัน ระบบมีความน่าเชื่อถือ แต่พยายามซ่อนสายเคเบิลทั้งหมดที่ไม่ได้ลงไปกับคู่ของฉันในเวลานั้น
กรอไปข้างหน้าอย่างรวดเร็วถึงปี 2559 และปีเตอร์กลับมาทำบ้านอัตโนมัติด้วยตัวควบคุม Little ESP8266
สิ่งเหล่านี้ขึ้นอยู่กับคอร์เท็กซ์ M4 Core ที่สร้างขึ้นใน 802.11 WiFi และมาพร้อมกับ SDK ที่ช่วยให้การพัฒนาด้วย eclipse และตัวเลือก Arduino IDE
เนื่องจากหน่วย homepro ของฉันลำบากฉันจึงตัดสินใจที่จะปรับโครงสร้างภายในและเก็บชิ้นส่วนเครื่องจักรกล ดังนั้นฉันจึงนำ PCB เก่าออกมาและทำการวัดทั้งหมดเพื่อให้ฉันสามารถสร้างชุดประกอบ PCB 2 สแต็คของตัวเองได้ในแบบเดียวกับแบบเก่า PCB ที่ต่ำกว่าคือแหล่งจ่ายไฟและการถ่ายทอดสถานะของแข็ง
ฉันเลือกรีเลย์ของโซลิดสเตตขณะที่พวกเขาเปิดการข้ามศูนย์และหลีกเลี่ยงปัญหาใด ๆ ด้วยการดึง AC ลงและทำให้แหล่งจ่ายไฟลดลง สิ่งนี้ใช้งานได้อย่างไม่ผิดพลาดและฉันสามารถเปลี่ยนได้สูงสุด 8 แอมป์ด้วยการจัดเรียงนี้ มากเกินพอสำหรับการใช้โมดูลเหล่านี้โดยตั้งใจ
ภาพเหล่านี้แสดงสแต็กบอร์ดใหม่และบอร์ดเก่าภายในโมดูลและในที่สุดบอร์ดใหม่ที่ติดตั้งลงในกล่องหุ้ม HomePro
มี LED บนกระดานเพื่อแสดงสถานะและฉันเจาะรูเล็ก ๆ เพื่อให้สิ่งนี้สามารถมองเห็นได้จากภายนอก มันกะพริบอย่างรวดเร็วจนกว่าจะได้รับการเชื่อมต่อ WiFi และ MQTT การใช้ปุ่มที่ด้านหน้าคุณสามารถกดค้างไว้ได้ประมาณ 3-5 วินาทีหลังจากเปิดเครื่องและสิ่งนี้จะเปิดใช้งาน APN และหน้าเว็บที่คุณสามารถใช้เพื่อกำหนดค่าอุปกรณ์ ง่ายกว่าการพยายามทำสิ่งนี้ผ่านการเชื่อมต่ออนุกรม ปีเตอร์และไอเดนได้พิจารณาทุกอย่างด้วยสิ่งนี้
ตอนนี้แสงจำเป็นต้องจัดเรียง หน่วย Everspring ที่ฉันซื้อจากสหราชอาณาจักรเมื่อสองสามปีก่อนใช้เพื่อแสดงความผิดที่น่ารำคาญ พวกเขาจะเริ่มปิดแล้วกลับมาอีกครั้ง มันสุ่มอย่างสมบูรณ์ ฉันเปลี่ยนหนึ่งยูนิตด้วยชุดใหม่และสิ่งเดียวกันเกิดขึ้น จากนั้นวันหนึ่งฉันก็เห็นว่าความผิดพลาดเปิด/ปิดเกิดขึ้นเมื่อแรงดันไฟฟ้าในอพาร์ทเมนต์ลดลงต่ำกว่า 209Vac – อินโดนีเซียไม่ดีมากเมื่อพูดถึงเสถียรภาพของแหล่งจ่ายไฟหลัก ฉันเปิดหนึ่งในหน่วยและพบว่าพวกเขาใช้การออกแบบแหล่งจ่ายไฟราคาถูกมากตามประเภทตัวเก็บประจุ/ตัวต้านทาน สิ่งเหล่านี้ดีเมื่อคุณมีแหล่งจ่ายไฟที่เสถียร แต่พวกเขาไม่ชอบเมื่ออินพุตแรงดันไฟฟ้าต่ำเกินไป
ดังนั้นด้วยการออกแบบหน่วย HomePro ฉันตั้งค่าเกี่ยวกับการสร้าง PCB ใหม่เพื่อให้พอดีกับสิ่งที่มีอยู่ในสิ่งที่มีอยู่ ESP12 ตั้งอยู่ด้านหนึ่งและกำลัง AC-DC อีกด้านหนึ่ง รีเลย์ของโซลิดสเตตก็อยู่ในด้านเดียวกับแหล่งจ่ายไฟ มีการติดตั้งปุ่ม PROG และ ON/OFF เพื่อให้ฉันสามารถติดตั้งซอฟต์แวร์ได้ในขั้นต้น เว็บอินเตอร์เฟสจะถูกใช้เพื่อกำหนดค่าในภายหลัง คุณสามารถดูด้าน ESP ของ PCB ด้านล่าง สล็อตใน PCB คือการเพิ่มการแยกพลังงาน AC ออกจากด้านแรงดันไฟฟ้าต่ำ DC แผ่นรองขนาดใหญ่คือ AC และ AC ออกไปที่หลอดไฟ
ดังนั้นตอนนี้ฉันมีโมดูลอุปกรณ์ที่ได้รับการอัพเกรดจำนวนมากและตัวควบคุมแสง แต่ฉันจะควบคุมทั้งหมดนี้ได้อย่างไร? ถึงเวลาที่จะเกษียณระบบ Homeseer 2 เก่าของฉัน พีซีไม่ใช่สิ้นสุดปัญหาและเป็น Windows 10 มันจะตัดสินใจว่าจะอัปเดตตัวเองโดยไม่ได้รับอนุญาตจากฉัน เวลาที่จะย้ายไปยัง Linux
ดังนั้นจากบล็อกจาก Peter ฉันตัดสินใจที่จะออก Raspberry PI3 ด้วย LCD 7″ และ Fire Up Node-Red Node-red สำหรับผู้ที่ไม่เคยเห็นนี่เป็นซอฟต์แวร์ลากและควบคุมที่มีความเสถียรและมีเสถียรภาพมาก ตอนแรกมันน่ากลัวที่จะติดตั้ง แต่หลังจากผ่านไปประมาณหนึ่งสัปดาห์ของการเล่นฉันเริ่มพบว่ามันง่ายมากที่จะได้รับ หากคุณมีทักษะการเขียนโปรแกรมคุณจะรู้สึกเหมือนอยู่บ้านกับสคริปต์ โมดูลทั้งหมดมีให้เป็นแหล่งสคริปต์ Java และมีไลบรารีที่มีขนาดใหญ่และเพิ่มขึ้นอย่างมากในเว็บไซต์ Node-Red
ต่อไปฉันต้องการนายหน้า MQTT เป็นซอฟต์แวร์จาก Peter Communicates โดยใช้โปรโตคอลนี้ เมื่อคุณมีการตั้งค่าและใช้ MQTT คุณจะรู้ได้อย่างรวดเร็วว่ามันมีประสิทธิภาพในเครือข่ายของคุณอย่างไร ไม่จำเป็นต้องโพลอุปกรณ์หรือแม้แต่รู้ที่อยู่ IP ของอุปกรณ์ นายหน้าดูแลเรื่องนี้ ผู้ที่คุ้นเคยกับ XAP จะเข้าใจสิ่งนี้
การใช้ Node-Red ฉันตั้งค่าตัวจับเวลาต่าง ๆ (ขอบคุณ Peter อีกครั้งสำหรับ BigTimer ของเขา) และเปิดไฟในเวลากลางคืน การใช้ปลั๊กอิน WEMO ตอนนี้ฉันยังสามารถควบคุมโคมไฟ WEMO ได้แม้ว่าจะเปิดและปิดเท่านั้น ผู้พัฒนาปลั๊กอิน Node-Red ได้สัญญาว่าจะควบคุมการหรี่แสงในบางช่วงเวลา
ตกลงดังนั้นฉันจึงมีการตั้งค่า Node-Red และ MQTT แต่ตอนนี้ฉันต้องการวิธีการควบคุมไฟและสวิตช์ด้วยทั้งเสียงและอินเทอร์เฟซเชิงกลหรือแบบสัมผัสบางรูปแบบ ฉันวิ่งข้ามสวิตช์ไร้สายบางส่วนจาก Enocean บนเว็บไซต์ Element14 ดังนั้นฉันจึงสั่งซื้อสองสามอันพร้อมกับโมดูล Raspberry Pi Enocean ซึ่งเสียบเข้ากับพิน GPIO บน PI และใช้ UART เพื่อสื่อสารกับ Node-Red และปลั๊กอิน
สวิตช์มีรางวัลที่ไม่มีแบตเตอรี่ให้ติดตั้งหรือดูแล พวกเขาใช้การเก็บเกี่ยวพลังงานผ่านขดลวดและแม่เหล็กที่เปิดใช้งานเมื่อคุณกดปุ่ม พวกเขาน่าเศร้าที่ไม่ได้มาพร้อมกับติดตั้งผนังใด ๆ ดังนั้นคุณต้องออกแบบของคุณเอง พวกเขาให้ไฟล์ STL ปุ่มสลับที่คุณสามารถพิมพ์ 3D ได้ดังนั้นฉันจึงใช้สิ่งนี้และสร้างการติดตั้งของตัวเอง สิ่งนี้ให้บริการ 2 จุดประสงค์หนึ่งเพื่อครอบคลุมสวิตช์เก่าบนผนังเพื่อให้แน่ใจว่ามันยังคงอยู่ในตำแหน่ง ON เพื่อให้โมดูลหลอดไฟเปิดอยู่เสมอและสองเพื่อค้นหาการควบคุมในตำแหน่งที่คุ้นเคย
การใช้ปลั๊ก node-red enocean ในฉันจะได้รับข้อความ payload พร้อมสถานะปุ่ม โดยการแยกวิเคราะห์สิ่งนี้ในสวิตช์โหนดสีแดงฉันสามารถส่งคำสั่งที่เหมาะสมไปยังแสงหรือสวิตช์ ฯลฯ นี่คือตัวอย่างของน้ำหนักบรรทุกที่ส่งโดยสวิตช์ Enocean มันถูกเข้ารหัสในรูปแบบ JSON ง่ายต่อการแยกวิเคราะห์ ID และ V เป็นสิ่งที่เราสนใจ
{“payload”: {“id”: “002d0932”, “v”: “a0 down”, “unit”: “”, “rssi”: -76, “type”: “state”, “eep”: ” F6-02-03 “,” man “:” enocean_gmbh “,” desc “:” Rocker Switch “,” RV “:” 30 “,” Rawbyte “:” 55000707017AF630002D09323001FFFFFFFFFFF4C000D “} }
ภาพต่อไปนี้แสดงสวิตช์ที่มี 4 เอาต์พุตตามค่า msg.payload.v ในโทรเลขจากสวิตช์ Enocean สิ่งเหล่านี้จะถูกนำไปยังอุปกรณ์ที่เหมาะสม ฉันใช้คุณสมบัติสลับภายในเฟิร์มแวร์ MQTT เพื่อเปิดและปิดอุปกรณ์จากสวิตช์เดียวกัน ซึ่งหมายความว่าฉันมีสถานะสวิตช์สูงสุด 4 สถานะจากแต่ละโมดูล Enocean
ตอนนี้ส่วนที่สนุกเริ่มต้นขึ้นเพราะฉันมี Amazon Echo และฉันต้องการควบคุมบ้านด้วยคำสั่งเสียงเสมอ คุณสามารถตำหนิ scifi สำหรับสิ่งนี้
ไม่มีการสนับสนุนเสียงสะท้อนโดยตรงอย่างน้อยก็ไม่มีการเชื่อมต่อ HTTPS กับโหนดสีแดงของคุณและน่าเศร้าที่เป็นไปไม่ได้กับ ISP ของฉันดังนั้นฉันจึงต้องการทางเลือกอื่น การใช้ Amazon Echo HaBridge นี้จากการทำงานบน Raspberry PI3 เดียวกันฉันไม่สามารถตั้งค่าเสียงเปิดใช้งานไฟ ฯลฯ HaBridge เลียนแบบ Philips Hue API เพื่อให้เสียงสะท้อนเห็นอุปกรณ์ที่คุณตั้งค่า นี่คือตัวอย่างของอุปกรณ์ที่เรียกว่าพัดลมในห้องด้านหน้า
ด้วยการพูดต่อไปนี้ที่เสียงสะท้อนพัดลมสามารถเปิดได้ “ Alexa เปิดพัดลมในห้องด้านหน้า” หรือปิดด้วยการพูดว่า“ Alexa ปิดพัดลมในห้องด้านหน้า”
HaBridge ส่งคำสั่งไปยัง Node-Red ผ่านคำขอ HTTP และจากนั้นฉันจึงแยก URL สำหรับค่า นี่คือสคริปต์ง่ายๆดังที่แสดงด้านล่าง
วิธีการทำสิ่งนี้ด้วยโมดูลต้นทุนต่ำ
การออกแบบ PCB ของตัวเองเพื่อแทนที่โมดูลที่ฉันต้องการวิธีเพิ่มโมดูลสวิตช์เพิ่มเติมและตัวควบคุมแสง
บ้านของฉันทำหน่วยทำประมาณเรา $ 15 เพื่อทำกับ PCB และชิ้นส่วนทั้งหมดด้วยกัน ดังนั้นยังคงต้นทุนต่ำ
#
แสดงตัวอย่าง
ผลิตภัณฑ์
การให้คะแนน
ราคา
1
Jane Choi Raspberry Pi 4 B Model B 8GB Starter Kit (8GB RAM) -Motherboard 64GB SD Card, cooliNg Fan, …
121 บทวิจารณ์
£ 222.99
ซื้อใน Amazon
2
Raspberry PI 400 4GB ชุดเริ่มต้นอย่างเป็นทางการเค้าโครงของสหราชอาณาจักร
215 บทวิจารณ์
£ 110.56
ซื้อใน Amazon
3
Freenove Ultimate Starter Kit สำหรับ Raspberry Pi 4 B 3 B+ 400, 561 หน้าแบบฝึกหัดรายละเอียด, Python C …
2,835 บทวิจารณ์
£ 42.95
ซื้อใน Amazon
เพื่อให้สิ่งนี้ต่ำกว่านี้ฉันได้พบกับสตูดิโอ Slampher และสวิตช์สมาร์ท S20 สิ่งเหล่านี้อยู่ที่ประมาณ US $ 12 สำหรับโมดูล S20 และ $ 8.50 สำหรับตัวควบคุมแสงดังนั้นจึงน้อยกว่าโมดูล Z-Wave ใด ๆ ในตลาด พวกเขามาพร้อมกับเฟิร์มแวร์ของ Itead ที่ควบคุมจากแอพ iOS หรือ Android แต่ฉันต้องการใช้รหัสของ Peter ปีเตอร์ได้ทำการวิจัยเกี่ยวกับเรื่องนี้และพบว่าด้วยการเปลี่ยนแปลงเล็กน้อยในรหัสของเขามันจะโปรแกรมเป็นหน่วย ITEAD และที่ทำงาน คุณต้องใช้ USB ถึง UART ด้วยเอาท์พุท 3.3V เพื่อทำสิ่งนี้ แต่มันง่ายพอถ้าคุณสามารถใช้เหล็กบัดกรี ข้อเสียเพียงอย่างเดียวคือโมดูล ITEAD มาพร้อมกับแฟลช 512KB และเพื่อให้รหัสของ Peter ทำการอัปเดต OTA เราต้องเปลี่ยนสิ่งนี้เป็น 8MB หน่วยความจำ IC อยู่ที่ประมาณ $ 3 สำหรับ 5 บน eBay ติดอาวุธด้วยสถานีทำงานใหม่ของอากาศร้อน (ยืมเพื่อนถ้าคุณไม่มี) งานนั้นรวดเร็วและไม่เสี่ยงต่อความเสียหายต่อบอร์ด ภาพต่อไปนี้แสดง Soic IC ด้านบนซ้ายหลังจากลบภาพเก่าและภาพใหม่ที่ติดตั้ง
คุณต้องประสานกับส่วนหัวไปยังแถวเดียวของ 4 หลุมบน PCB สิ่งนี้ใช้พลังงานกับบอร์ดและช่วยให้คุณสามารถตั้งโปรแกรมด้วยเฟิร์มแวร์ MQTT ที่กำหนดเอง ฉันมีบล็อกโดยละเอียดเกี่ยวกับวิธีการทำเช่นนี้
โมดูล S20 ดูฉลาดและทันสมัยมาก สวิตช์ไฟช่วยให้คุณสามารถเปิดและปิดเครื่องได้ สิ่งที่แสดงที่นี่คือซ็อกเก็ตยูโร แต่มันจะมีทั้งตัวเลือกทั้งในสหรัฐอเมริกาและสหราชอาณาจักรในไม่ช้า
โมดูล Slampher เป็นตัวควบคุมหลอดไฟที่ใช้ ES27 ดังนั้นจึงไม่เหมาะสำหรับสหราชอาณาจักรในปัจจุบัน แต่ทำงานได้ดีมาก
เมื่อพิจารณาว่าพวกเขากำลังเสนอโมดูลสวิตช์เป็นสหราชอาณาจักรฉันคาดหวังว่าเวอร์ชันดาบปลายปืนอาจจะเข้ามาเร็ว ๆ นี้ ตอนนี้ฉันชอบประเภทสกรูเพื่อการติดตั้งที่ง่ายขึ้น
สิ่งเหล่านี้ง่ายต่อการเปิดและแก้ไขก่อนหน้านี้ด้วยขั้นตอนอื่นเพิ่มเติมนอกเหนือจากการเปลี่ยนแฟลช IC และนั่นคือการย้ายลิงค์ศูนย์โอห์มเดียว