รีวิวหาทำ ระบบเปิดปิดประตูรั้วไฟฟ้าด้วย App
หลังจากที่บ้านเราเปลี่ยนมาใช้รถไฟฟ้า อีกหนึ่งอุปกรณ์ที่มันตามมาคือ ประตูรั้วไฟฟ้า ฟิล ๆ ว่า เราจะเอารถเข้าบ้านมาเสียบชาร์จ แต่ถ้าจะให้เดินลงจากรถมาเปิดรั้ว แล้วเดินกลับไปถอยรถเข้า มันก็จะยากเกินไปหน่อย มีประตูไฟฟ้ามันก็จะสบายขึ้นเยอะ แต่คนเรามันก็ไม่หยุดแค่ไหนไง มันต้องเปิดปิดผ่าน App ได้สิวะ ไหน ๆ เราทำ Smart Home ขนาดนี้ ประตูรั้วแค่เนี๊ย มันต้องได้สิ เลยทำให้หาทำมาเริ่ม Project นี้
Solution แรก แต่เกือบได้ผล
ตอนแรกสุดเลย เราไม่ได้คิดอะไรมาก เห็นว่าตัวประตูมันมี Remote ไปอ่าน ๆ ดู อ่อ มันเป็น Remote ที่คุยผ่าน RF 433 MHz ปกติเลยนี่หว่า พวก Remote กุญแจรถที่เราใช้งานกันปกติมันก็ใช้ลักษณะนี้เหมือนกัน เราเลยไปซื้อพวก Smart Remote ที่มันสามารถส่งคลื่น 433 MHz ได้มา
แน่นอนว่า เราก็ทำการ Copy Remote โดยการให้ Smart Remote มัน จำค่าจากสัญญาณ เมื่อเรากดปุ่มสำหรับเปิดปิดประตูรั้วบ้าน จากนั้นเราก็ทดสอบโดยการให้ Smart Remote ยิงสัญญาณที่เรา Copy ไว้ออกมา เหยยยย มันเปิด ปิด ได้ปกติเลยเว้ย !! โอ้ววว ความสำเร็จนิหว่าาา
แต่ ๆๆๆ เมื่อ เราเอา Remote ที่มากับประตูรั้วเปิด แล้วจะใช้ App กดปิดอีกครั้ง ปรากฏว่ามันไม่ยอมปิดแฮะ กดยังไง มันก็ไม่มีอะไรเกิดขึ้นเลย ทำให้นึกได้ว่า เอ๊ะ หรือว่า มันมี Feature ความปลอดภัยอะไร หรือว่า..... เอาแบบ เบสิกเลยก็น่าจะเป็น Rolling Code จนไปดูสเปก Remote สาดดดดด จริงด้วย ชิบหาย
Rolling Code คือ วิธีนึงที่เราใช้งานเพื่อป้องกันสิ่งที่เรียกว่า Replay Attack อธิบายง่าย ๆ กับประตูรั้วบ้าน คือ ถ้าเกิด เวลาที่เรากดปิดประตูบ้านผ่าน Remote และโจร อยู่แถว ๆ นั้นและมีเครื่องสำหรับรับสัญญาณวิทยุอยู่ เขาก็จะเอาข้อมูลที่ใช้ปิดเปิดประตูนี่แหละ ไปยิงอีกรอบด้วยเสาของโจรเอง เขาก็จะเปิดประตูได้ แต่ Rolling Code เขาจะมีการเปลี่ยนข้อมูลที่ส่งไปเรื่อย ๆ ทำให้ถึงโจรที่อยู่หน้าบ้านเขาจะได้รหัสที่ยิงจาก Remote เรา เขาก็จะไม่สามารถใช้งานได้
ถามว่า แล้วประตู และ Remote รู้ได้ยังไงว่า รอบต่อไป รหัสที่ควรจะเป็นคือรหัส หรือข้อมูลหน้าตาแบบไหน เขาก็จะมีการตกลงกันล่วงหน้า โดยมันจะเกิดขึ้นเมื่อตอนที่ช่างเขา Pair Remote หรือบางคนจะเรียกว่า Learn Remote ให้กับเราตอนที่เขาตั้งค่าเครื่องให้นั่นเอง
ดังนั้น การที่เราใช้วิธีการ Copy Remote โต้ง ๆ เลย ส่วนนึงโอเค มันจะใช้งานได้ไปเรื่อย ๆ ตราบใดที่เราใช้ App หรือ ระบบของเราเปิดทุก ๆ ครั้ง แต่ถ้าเราลืม... ใช้ Remote ที่มากับประตู ตัว Code มันก็จะเปลี่ยนไป ทำให้ Remote ที่เรา Copy ไว้มันก็จะใช้ไม่ได้ อีกส่วนคือ ความปลอดภัยว่า คนแถว ๆ นั้น เห็นเรากดเปิด ๆ ปิด ๆ บ่อย ๆ โอกาสที่เขาจะ Copy Remote มันก็เพิ่มขึ้นเรื่อย ๆ อีกเหมือนกัน เพิ่มความเสี่ยงมากเข้าไปใหญ่ ทำให้วิธีการนี้ไม่ค่อยโอเคเท่าไหร่
Relay + Microcontroller = ❤️
หลังจากยกธงขาวพ่ายแพ้ นอน ๆ อยู่ ก็ตื่นขึ้นมา แล้วเอ๊ะได้ว่า แมร่งมี Pin อะไรเยอะ ๆ บน Board นี่หว่า ถ้าเราไปจุ๊บกับส่วนที่มันรับสัญญาณ Remote มันก็ไม่น่าจะต่างจาก Switch ปะ ถ้าครบวงจร มันก็เหมือนกับการกดปุ่มเปิด มันก็จะไปสั่งให้ประตูเปิด
เลยไปลองแกะออกมาดู โอ้ชิทททท อะเสา ๆ ทองแดงที่มีขด ๆ นั่น เสาอากาศแน่ ๆ งั้นเราไล่ ๆ สายลงไป มันน่าจะเจอสิ่งที่เราหาปรากฏว่า โอ้โห้มันอยู่ล่าง ๆ ลึก ๆ เลย ไม่น่าจะตอบโจทย์ละ เห้ย แต่มันจะยอมแพ้ได้ไงวะ
ในเมื่อมันมี Pin นั่นนี่อยู่ด้านบนด้วย เลยคิดว่า ถ้าเราเริ่มจากดู Schematics ก่อน เราน่าจะพอไล่ ๆ แกะ ๆ แบบไปเรื่อย ๆ ได้ มันก็แค่ มอเตอร์จ่ายไฟหมุนไปหมุนมานั่นแหละ มันจะยากอะไรได้วะ แต่..... การหา Schematics ของ ยี่ห้อ และ รุ่น (เราใช้เป็น Powertech PLH600) ที่เป็นของประตูไฟฟ้าบ้านเรานั้นก็คือยากมาก แต่เอาเถอะ สุดท้ายก็หามาจนได้ เลยได้ Pinput มาแบบในรูปด้านบนนี่เลย ไปเอ๊ะ PPB-1 กับ PKS-1 อะไรไม่รู้นะ มันให้เราไปต่อช่อง 10,11 อื้มม เหมือน Switch เลยแฮะ มันต้องทำอะไรสักอย่างได้สิวะ เลยไปหาว่า เห้ย มันคือ ปุ่มที่เราติดไว้ในบ้าน กดแล้วจะเปิดปิดรั้วได้ เลยของเอาสายไฟไป Short มัน ปรากฏว่า ประตูเปิดและปิดได้ปกติเลย เสร็จตรูสิวะ
ถ้างั้น เราสามารถเอาพวก ESP32 หรือ Microcontroller อะไรสักอย่าง มาเสียบกับ Relay แล้วเราอาจจะให้มันคุยกับระบบ Smart Home เรา พอเราจะเปิด เราก็ให้ Relay มันสับลง ทำให้ Pin 10,11 ครบวงจร พอเสร็จ เราก็ดึงออกแค่นั้นเลย ESP32 เราก็มีอยู่แล้ว ไปซื้อแผง Relay มา เขียน Code สั่งเปิดปิด Relay, ยิง MQTT กับ Flash ไม่น่าเกิน 5 นาทีก็เสร็จแล้ว
เลยไปลองหา ๆ Relay Board ขำ ๆ ระหว่างนั้นหาไปหามา เจอ เห้ยยยย แมร่ง !! มีคนคิดแบบเรา เขาทำ Board ที่มี Microcontroller กับ Relay ออกมาเลยเว้ย !! ประกอบกับ Flash โปรแกรมมาเสร็จ และ รอบรับ Ewelink ด้วย และทั้งหมดนี่ราคา 235 บาทเอง ลองกดมาดูเดะ
Relay Board
ได้ของมา เขามาในกล่องกระดาษสีน้ำเงินเขียน Smart Switch ธรรมดาเลย มันก็แบบนี้แหละ สำหรับพวกอุปกรณ์ Smart Home ส่วนใหญ่ ก็ไม่ได้ให้ความสำคัญกับ Packaging เท่าไหร่
ตัว Board ออกมามีขนาดเล็กมาก สบายละ ยัด ๆ อยู่ในกล่องประตูรั้ว ๆ ได้ง่าย ๆ ถ้าเราดูผ่าน ๆ ด้านซ้ายสีน้ำเงิน น่าจะเป็น Relay ขนาด 10A ตรงกลางเห็นเป็นบอร์ดอะไรสักอย่างอยู่ น่าจะเป็นพวก Microcontroller ที่เขาแปะมาให้เราหมดแล้ว เดาว่า น่าจะเป็น ESP-01 และด้านขวา เราจะเห็นว่า มันมีปุ่ม 2 ปุ่ม และ Port Micro-USB สำหรับจ่ายไฟ
ด้านล่างเราจะเห็นว่า มันมี Pin สำหรับเสียบสายเข้าไป ถ้าจะมานั่งบัคกรีเพื่อให้ได้ขนาดนี้ ก็ขี้เกียจทำเหมือนกันนะ ดีแล้วแหละที่ซื้อเขามา
ด้านหลังบอร์ดก็เป็นอันเฉลยแล้ว เขามีการ Label Pinout มาแล้วว่า แต่ละ Pin ที่เราเห็นคืออะไร ด้านซ้ายที่เป็นสองช่องคือ ช่องสำหรับเสียบไฟกระแสตรงเข้าไป โดยเสียบได้หมดตั้งแต่ 7-32V จะให้เราเสียบเข้ากับแหล่งจ่ายไฟของตัวประตู ส่วนใหญ่ประตูพวกนี้จะใช้ DC Motor ยังไงเขาต้องมีการแปลงเป็นไฟกระแสตรงแน่ ๆ และน่าจะมี Pin ให้เราเข้าไปเสียบได้ แค่ว่า อาจจะต้องดู แรงดันด้วยนะว่า มันอยู่ในช่วง 7-32V หรือไม่ และ ด้านขวา NC,COM และ NO ถ้าใครที่พอจะรู้จัก Relay มาก็น่าจะคุ้น ๆ เนอะ มันคือ Pin ของ Relay ในกรณีของประตูแบบนี้ เราก็ต่อง่าย ๆ คือ เสียบช่อง COM และ NO ก็จบแล้ว หรือจะ COM กับ NC ก็ได้
การติดตั้ง
อันเนื่องจากว่า เราไม่มีสายไฟแบบ สายไฟเส้นใหญ่ ๆ หน่อย แต่เดาว่า Board พวกนี้น่าจะกินไฟไม่เยอะ น่าจะไม่เกิน 5W เท่านั้นแหละ เลยเอาสายไฟที่เหลือ ๆ จากโต๊ะ DIY มาใช้ ตัด Pin ออกแล้วปลอกสายแล้วเสียบเข้าไป ตาม Pin ที่เราวางแผนไว้เลย แต่แนะนำว่า ก่อนเราจะเสียบอะไรพวกนี้ ให้เราปิดไฟก่อน และ สำหรับประตูที่มี Battery อย่างเราให้ถอดขั้วมันออกด้วย
ต่อเสร็จ เปิดไฟกลับมา โอ้วววววว ที่บอร์ดมีไฟขึ้นแล้ว อะ เดาว่า ไฟตรง Relay มันน่าจะเป็นไฟแสดงสถานะของ Relay และไฟอีกดวงตรงปุ่ม น่าจะเป็นไฟแสดงสถานะการเชื่อมต่อ WiFi แหละ เดาได้จากการกระพริบของไฟ ประกอบกับบอกว่ามันเชื่อมต่อผ่าน Ewelink Platform เลยลองกดสักปุ่มค้างไว้ ไฟมันกระพริบเร็วขึ้น อ๋าาา ชัวร์ละ Compatibility Mode ต่อกันสบาย ๆ เลย หยิบมือถือขึ้นมา แล้วเชื่อมต่อกับ App Ewelink ในเครื่องของเราได้เลย
แต่ ๆๆ มันเป็น Relay ธรรมดาเลย ถ้าเราสั่งเปิดใน App มันก็จะเปิดค้างไว้เลย แต่เวลาเรากด Remote วงจร มันจะครบวงจรเฉพาะเมื่อเรากดปุ่ม และ เราไม่กดปุ่มค้างไว้จนประตูเปิดหรือปิดสุด เรากดแว๊บเดียว ทำให้ เราจะต้องสั่งให้ Relay อันนี้มันเปิดแว๊บนึง แล้วปิดทันที ไม่งั้น ประตูที่กำลังเปิดหรือปิดอยู่ มันจะหยุดกลางทาง เพราะมันคิดว่า เรากดอีกรอบนั่นเอง
มันจะมี Mode ที่เรียกว่า Inching หรือ การที่เมื่อเรากดเปิดแล้ว มันก็จะหน่วงเวลาแปบนึง แล้วพอ หมดเวลา มันก็จะปิดเอง จำลองว่า เรากดแล้วปล่อยนั่นเอง เราสามารถเข้าไปตั้งค่าใน App Ewelink ได้เลย
สุดท้าย เมื่อตั้งค่า และ ทดลองกดเปิดปิดเรียบร้อย เราก็ต้องมาหาที่ซ่อนบอร์ดของเรากัน เพื่อให้เราปิดฝาได้ บังเอิญว่า Board มันบาง และในกล่องควบคุมประตูมันมีช่องว่างตรงกลางพอดี เลยหยอดไว้ในนั้นแหละ ก็ดูเรียบร้อย โอเคใช้ได้เลย
ลองปิดกล่องดู โอ้ววว ปิดได้สนิทไขน๊อตปิดได้แบบพอดี ๆ เหมือนเดิม ไม่มีอ้วนเกิน หรือสูงเกิดเลย โชคดีไป เราก็ไม่อยากจะไปทำอะไรจัดสายมันเยอะ ดีละที่ปิดได้ง่าย ๆ เลย
การเชื่อมต่อกับ Home Assistant
ที่บ้านเรา เราทำพวก Smart Home โดยใช้ Home Assistant เป็น Main ในการทำงาน ซึ่งที่เราเลือก Board ตัวนี้มา เพราะ มันบอกว่า มันรองรับ Ewelink Platform มาในตัวเลย ซึ่งใน Home Assistant มันสามารถ Import เข้ามาใช้งานได้ผ่าน Sonoff Integration โดยที่เราไม่ต้องทำอะไรเลย และเป็น LAN Control เน็ตหลุดก็ยังใช้ได้ เป็น Integration ในฝันเลย ฮ่า ๆ
จากนั้น เราก็เอามาทำเป็นปุ่ม ธรรมดาในหน้าจอหน้าแรกแค่นั้นเลย กดแล้วก็เปิด กดอีกทีมันก็จะปิดแค่นั้นเลย กับเราจะมีปัญหานิดหน่อยว่า รถเรายาวถ้าเอาเข้าไปจอดมันจะเลยบ้านรั้วออกไปนิ๊ดเดียว แต่ยังไม่ถึงตรง Sensor กันหนีบ ดังนั้น ถ้าเราจอดรถอยู่ แล้วเผลอกดปิด บางที มันจะปิดแล้วครูดรถได้ โดนมาแล้วรอบนึง เป็นเศร้า ดีนะ แค่ขัดสีก็ออก เลยต้องทำกลไกสำหรับการป้องกันไว้นิดหน่อย โดยการเขียน Lock State ที่เป็น Template Switch เข้ามาช่วย และ เขียน Script สำหรับการสั่งเปิด โดยก่อนจะเปิดหรือปิด เราจะให้เช็คกับ Template Switch ถ้ามัน On อยู่ เราก็จะไม่ให้ทำอะไรเลย
จากนั้น เราก็ไปเขียน Interface ให้ ถ้าเรากดค้างที่ปุ่มเปิดรั้ว มันจะปลดล๊อค และพอเรากดเปิดอีกครั้งมันก็จะใช้งานได้ กลับกัน ถ้าเรากดค้างไว้ที่ปุ่มเปิด มันก็จะไปเปลี่ยน Lock State เป็น Lock ไป กับ เรารู้ว่า เมื่อเราชาร์จ มันมีรถอยู่แน่นอน ดังนั้น เมื่อมีการชาร์จ (กำลังไฟของ Wall Charger > 0) เราก็จะให้ Lock State เปลี่ยนเป็น Lock ทันที
สุดท้าย คือ เราจะต้องไล่เช็ค ว่า เราจะไม่ให้ใครก็ตามไปยุ่งกับ Switch ประตูรั้วโดยตรง ให้ทำงานผ่าน Script ที่เราทำขึ้นมาครอบไว้เท่านั้น ก็เป็นอันเรียบร้อยแล้ว
สรุป
และสุดท้าย เราก็สามารถเปิดปิดประตูจากโทรศัพท์ หรือจาก App ของเราได้ แบบง่าย ๆ ในราคาแค่ 200 กว่าบาทเท่านั้นเอง เรื่องนี้สอนให้รู้ว่า วันหลังนะ หนู Search ตรง ๆ เลยค่าาา มันต้องมีคนมีปัญหาแบบเราและทำ Solution บ้างแหละ แหม่ เรื่องบางเรื่องไม่ต้องหาทำอะไรแปลก ๆ เนอะ มันวนไปวนมา ซื้อเอาค่าาาาาา ฮ่า ๆ