- เมื่อ บริการเซลลูลาร์ของระบบอินเตอร์คอม Doorking เดิมถูกยกเลิก จนฟังก์ชันเปิด-ปิดประตูทางเข้าหยุดทำงาน จึงมีการทำฮาร์ดแวร์แฮ็กเพื่อกู้คืนการควบคุมระยะไกล
- ใช้ บอร์ดรีเลย์ Wi-Fi ESP32 ควบคุมสายโซลินอยด์โดยตรง และสร้างเป็น ไคลเอนต์โปรโตคอล Matter ที่เชื่อมกับ Apple Home
- ออกแบบด้วย เฟิร์มแวร์ที่พัฒนาด้วย Rust ให้เปิดประตูได้ตามช่วงเวลาที่กำหนดและล็อกกลับอัตโนมัติ เพื่อคงความปลอดภัย
- แก้ปัญหา หน่วยความจำชนกันระหว่าง Wi-Fi และ Bluetooth โดยให้ทั้งสองสแตกทำงานแบบแยกจากกัน และปรับให้ใช้เฉพาะ Wi-Fi หลังการ provision
- ผลลัพธ์คือการสร้าง กรณีศึกษาการขยาย IoT แบบแนบเนียนที่ควบคุมประตูด้วยสมาร์ตโฟนได้ โดยไม่ทำให้ระบบเดิมเสียหาย
โปรเจกต์กล่องลับที่เชื่อมอินเตอร์คอมอพาร์ตเมนต์เข้ากับ Apple Home
- โปรเจกต์นี้เริ่มต้นจากกรณีที่อินเตอร์คอมอพาร์ตเมนต์ของเพื่อนใช้ ระบบ Doorking 1834-080 และเพราะการดูแลจัดการที่หละหลวมทำให้บริการเซลลูลาร์ถูกตัด จนฟังก์ชันเปิด-ปิดประตูทางเข้าใช้งานไม่ได้
- เมื่อผู้มาเยือนไม่สามารถโทรขอเข้าได้อีกต่อไป จึงมีการใช้ การแฮ็กฮาร์ดแวร์บนพื้นฐาน ESP32 เพื่อทำให้สามารถเปิดประตูทางเข้าจากระยะไกลผ่าน Apple Home ได้
การสำรวจเบื้องต้นและความพยายามครั้งแรก
- จากการตรวจสอบหน้างาน พบว่ากล่องด้านบนของอินเตอร์คอมไม่ได้ล็อกไว้ จึงสามารถดูโครงสร้างภายในได้ และ เราเตอร์ Wi-Fi/เซลลูลาร์ ก็ยังตั้งค่าเป็นรหัสผ่านเริ่มต้นจากโรงงาน
- มีการดาวน์โหลดไฟล์ตั้งค่าของเราเตอร์และพบ ช่องโหว่ที่สามารถรีเซ็ตรหัสผ่าน root ได้ แต่สุดท้ายล้มเลิกแนวทางนี้เพราะต้องวิเคราะห์โปรโตคอล serial แบบคัสตอมของระบบซึ่งซับซ้อนเกินไป
- ในความพยายามครั้งที่สอง มีการลองใช้ขั้ว สายโทรศัพท์ ('PH LINE') เพื่อเลียนแบบสัญญาณ DTMF แต่หยุดการทดลองเพราะมีความเป็นไปได้สูงว่ากล่องควบคุมจะไม่รับคำสั่งเมื่อไม่ได้อยู่ในสถานะรอรับสาย
แนวทางที่สาม: ควบคุมจากกลางวงจร
- เมื่อเปิด กล่องต่อสาย (junction box) ระหว่างกล่องเสียงกับคอนโทรลเลอร์หลัก ก็พบว่ามี สายควบคุมโซลินอยด์ สำหรับสั่งกลอนไฟฟ้าของประตูทางเข้าพาดผ่านอยู่
- โซลินอยด์มีโครงสร้างเรียบง่าย คือเมื่อจ่ายไฟจะเปิด และเมื่อหยุดจ่ายไฟจะล็อก จึงเกิดแนวคิดที่จะ จ่ายไฟตรงเพื่อเปิดประตูทางเข้า
- มีการดึงไฟเสริม 12V DC จากกล่องเสียงมาใช้กับ บอร์ดรีเลย์ Wi-Fi ESP32 และวางแผนให้มันเชื่อมกับ Apple Home
- แยกสายควบคุมโซลินอยด์ไปต่อเข้ากับรีเลย์ของ ESP32
- เขียนเฟิร์มแวร์ด้วย Rust ให้ทำงานเป็น ไคลเอนต์โปรโตคอล Matter
- ออกแบบวงจรให้ควบคุมแบบขนานได้ โดยยังคงให้ระบบเดิมทำงานตามปกติ
การจัดวางซอฟต์แวร์
- ใช้ ไลบรารี Matter ที่พัฒนาด้วย Rust เพื่อเชื่อม ESP32 เข้ากับ Apple Home
- หลังเชื่อมต่อเครือข่ายแล้ว เมื่อได้รับคำสั่งก็จะเปิดประตูตามระยะเวลาที่กำหนดไว้ (ค่าเริ่มต้น 10 วินาที) แล้วล็อกกลับอัตโนมัติ
- ป้องกันไม่ให้ประตูอยู่ในสถานะเปิดค้างนานเกินไป เพื่อ รักษาความปลอดภัย
- โค้ดเปิดเผยที่: GitHub - ImTheSquid/doorbell2
ปัญหาหน่วยความจำและวิธีแก้
- เนื่องจาก RAM ของ ESP32 ไม่เพียงพอ เมื่อรันสแตก Wi-Fi และ Bluetooth พร้อมกันจึงเกิดความเสียหายของหน่วยความจำและรีเซ็ต
- Matter implementation ที่ใช้งานอยู่ใช้ สแตก Bluedroid ยิ่งทำให้ปัญหารุนแรงขึ้น
- วิธีแก้คือเปิดใช้งาน Wi-Fi และ Bluetooth แบบ สลับกันโดยไม่ให้ทำงานพร้อมกัน และตั้งค่าตัวเลือกประหยัดหน่วยความจำในไฟล์ (
sdkconfig.defaults)
- ปรับให้เปิด Bluetooth ชั่วคราวเฉพาะตอน provision และหลังจากนั้นใช้เพียง Wi-Fi เพื่อให้ระบบเสถียร
- ใน Apple Home อุปกรณ์ล็อกประตูทางเข้าปรากฏขึ้นอย่างถูกต้อง และยังสามารถกำหนดข้อมูลผู้ผลิตได้ตามต้องการ
การติดตั้งและการแก้ปัญหาเรื่องไฟเลี้ยง
- บอร์ด ESP32 ใส่เข้าไปในกล่องเดินสายได้พอดีจนมองไม่เห็นจากภายนอก
- ตอนแรกดึงสายไฟจากกล่องเสียงมาเชื่อมต่อแต่ใช้งานไม่ได้ จึงทดสอบสำเร็จชั่วคราวด้วย แบตเตอรี่สว่านไร้สาย 20V
- ต่อมาหลังจากตรวจคู่มือจึงพบว่าขั้ว 12V ของกล่องเสียงนั้นเป็น ขั้วรับไฟเข้า
- จึงเพิ่ม เรกูเลเตอร์พร้อมวงจรเรียงกระแส เพื่อแปลงอินพุต 18V AC เป็น 12V DC และแก้ปัญหาไฟเลี้ยงได้
- จากนั้นจัดเก็บอุปกรณ์ทั้งหมดไว้ภายในกล่องเดินสายจนเสร็จสมบูรณ์
ผลลัพธ์และความหมายของโปรเจกต์
- ทำให้สามารถ ควบคุมประตูทางเข้าจากระยะไกลด้วยสมาร์ตโฟน ผ่าน Apple Home ได้ และผู้มาเยือนก็สามารถเปิดทั้งประตูทางเข้าและประตูอพาร์ตเมนต์จากในแอปได้พร้อมกัน
- ชุดติดตั้งนี้เป็น โครงสร้างแบบแนบเนียนที่มีเพียงบอร์ด ESP32 และอุปกรณ์จ่ายไฟขนาดเล็ก โดยไม่รบกวนระบบเข้าออกเดิม
- ด้วยการแฮ็กวงจรง่าย ๆ และการเชื่อมรวมบนมาตรฐานเปิด จึงกลายเป็น ตัวอย่าง IoT เชิงปฏิบัติที่ขยายความสามารถของฮาร์ดแวร์เดิม
- โปรเจกต์นี้ยังช่วยสั่งสมประสบการณ์ด้านการแฮ็กวงจร และสามารถนำไปทำซ้ำได้ไม่ยากในสภาพแวดล้อมคล้ายกัน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
มีคนชี้ว่านี่เป็นการกระทำที่ คลุมเครืออย่างมากทั้งในแง่กฎหมายและจริยธรรม
การต่อเข้ากับกล่องภายในอพาร์ตเมนต์ของตัวเองยังพอเข้าใจได้ แต่การต่อเข้ากับตัวควบคุมประตูทางเข้ารวมแล้วแจกสิทธิ์เข้าถึงให้เพื่อนถือว่าเป็นปัญหา
การที่พยายาม หลบเลี่ยงไม่ให้ถูกจับได้ หลายครั้งก็ดูเหมือนเจ้าตัวเองก็รู้ว่ามันไม่ถูกต้อง
การกระทำแบบนี้อาจขยายพื้นผิวการโจมตีทางดิจิทัลและเปิดโอกาสให้เกิดอาชญากรรมได้
ดังนั้นอาจต้องรับผิดชอบในบางส่วน และอาจมีทั้งความรับผิดทางอาญาและทางแพ่งตามมา
อย่างไรก็ดี ถ้าเป็นทรัพย์สินของตัวเองและทุกฝ่ายที่เกี่ยวข้องยินยอม การดัดแปลงระบบโดยต่อสายโซลินอยด์ก็อาจถือว่าเหมาะสมได้
การจ่ายไฟให้สายโซลินอยด์ที่เปิดโล่งด้านนอกแบบที่ OP ทำจึงไม่น่าใช่ปัญหาใหญ่
ฉันก็ทำ การเชื่อมต่อกับ Apple HomeKit คล้ายกันแต่เรียบง่ายกว่า
อินเตอร์คอมต่อเข้ากับโทรศัพท์บ้านแบบมีสายของบ้าน แล้วโทรศัพท์นั้นจะถูกโอนไปยังวอยซ์เมลอัตโนมัติ โดยข้อความวอยซ์เมลจะเล่นโทนเสียงสำหรับเปิดประตู
ไฟเลี้ยงควบคุมด้วยปลั๊กอัจฉริยะ เปิดเมื่อไรก็เข้าได้ทันที ปิดเมื่อไรก็ตัดการเข้าถึง
เมื่ออินเตอร์คอมโทรเข้าเบอร์ VoIP ของฉัน ระบบจะให้ผู้มาติดต่อกรอกรหัส ถ้าถูกต้องก็ส่ง DTMF 9 เพื่อเปิดประตู
ยังมีการแจ้งเตือนทางอีเมลและ SMS และสามารถออก รหัสหลายชุด เพื่อดูได้ว่าใครเป็นคนเข้ามา
เพราะงั้นคงตั้งให้ปลั๊กปิดเองอัตโนมัติหลังเล่นข้อความเสียงเสร็จ
ฉันก็เจอปัญหาเดียวกัน และหลังจากหามานานกว่าหนึ่งปี ก็ไปเจอคนในโรมาเนียที่ทำและขาย บอร์ด reverse engineering อยู่
ติดตั้งได้ในราคาไม่ถึง 30 ยูโร เป็นวิธีที่หยาบ ๆ แต่มีเสน่ห์
ลิงก์
พอดึงไฟจากสาย 24V ก็อาจถูกมองว่าเป็น “การขโมยไฟฟ้า” เลยเลิกทำ
สุดท้ายเปลี่ยนไปใช้ Nuki Opener ซึ่งเสถียรกว่ามากและเหมาะให้ทั้งครอบครัวใช้
งานประกอบหยาบ ๆ สำหรับทดลองนั้นสนุกดี แต่ไม่เหมาะกับการใช้งานจริง
อ้างอิงไว้ว่าโค้ดอยู่ที่ ลิงก์ GitHub
หลายคนประหลาดใจที่ทุกวันนี้ ระบบนิเวศอินเตอร์คอมล้าหลังมาก
แค่ต้องการผลิตภัณฑ์ กึ่งอัจฉริยะ ที่บอกได้ประมาณว่า “อาหารเย็นพร้อมแล้ว” เท่านั้น แต่กลับไม่มี
พวกอุปกรณ์ไร้สายราคาถูกโนเนมก็สื่อสารกันระหว่างห้องไม่ได้เรื่อง สุดท้ายทางออกเดียวคือใช้ Asterisk กับโทรศัพท์ VoIP ราคาถูก
รับส่งเสียงหรือเล่นเสียงในเวลาที่ต้องการก็ได้
แม้จะลองผสมอุปกรณ์หลายแบบทั้ง Sonos, Wiim, Acrylic สุดท้ายก็ยังใช้งานต่อด้วยคุณภาพระดับกลาง ๆ ของ Sonos
อินเตอร์คอมบางรุ่นในยุโรปมีโซลูชันชื่อ Doorman
มีการ reverse engineering โปรโตคอล Koch แล้วทำงานด้วย ESP32 + Home Assistant และฟีเจอร์ party mode ก็มีประโยชน์มากเวลาใช้จัดงาน
เว็บไซต์ Doorman / คู่มือ Ring-to-open
ฉันทำแบบง่ายกว่านั้นโดยให้ หมายเลข Twilio กับผู้ดูแลอาคาร แล้วตั้งค่าในแอปให้ตอบสนองตามรหัส
ถ้าเป็นรหัสที่ถูกต้องก็ส่ง DTMF “9” เพื่อเปิดประตู ส่วน “1” จะโอนสายไปยังมือถือของฉัน
มีคนเล่าถึงปัญหาคล้ายกันในการควบคุมระบบทำความร้อนที่บ้านพักตากอากาศ
เทอร์โมสตัทติดผนังแบบใช้แบตเตอรี่ควบคุมระบบทำความร้อนใต้พื้นผ่านสัญญาณวิทยุ แต่ถ้าจะควบคุมระยะไกลต้องซื้ออุปกรณ์ใหม่ที่ราคา มากกว่า 2,000 ดอลลาร์
ทั้งที่จริง ๆ แค่น่าจะเลียนแบบสัญญาณเดิมได้ แต่เทคโนโลยีกลับ ปิดเกินความจำเป็น จนน่าอึดอัด
ถึงขั้นคิดว่าหมุนปุ่มด้วยไดรเวอร์ควบคุมระยะไกลยังจะดีกว่า
เคยใช้ Home Assistant อัดและเล่นสัญญาณเพื่อควบคุมพัดลมเพดานหรืออุปกรณ์อินฟราเรดมาแล้ว
หม้อไอน้ำส่วนใหญ่จริง ๆ ต้องการแค่สัญญาณสามแบบเท่านั้น คือพัดลม ทำความร้อน และทำความเย็น
มีทั้งอุปกรณ์กดปุ่มและแบบหมุนแกนมู่ลี่ ซึ่งอาจประยุกต์ใช้กับการหมุนปุ่มได้
ต่อสายควบคุมโซลินอยด์ 24V แบบขนานด้วย ESP32 ก็น่าจะแก้ได้
มีคนล้อว่าแขกของ Frank แค่มี กุญแจมาตรฐาน Doorking 16120 ก็พอแล้ว
ต่อด้วยการเล่าเรื่องสมัยเรียนมหาวิทยาลัย ตอนอยู่ชมรมอิเล็กทรอนิกส์และแก้ปัญหาเรื่องประตูเข้าออก
พวกเขาใช้ Raspberry Pi + รีเลย์ ต่อขนานเข้ากับวงจรปุ่มเปิดประตู เพื่อให้เปิดประตูได้เมื่อ SSH ผ่าน Wi‑Fi เข้ามา
สุดท้ายก็ไม่เคยถูกจับได้ และหลักฐานก็หายไปตอนอาคารปรับปรุงใหม่
มีการพูดถึงความเป็นไปได้ที่รีเลย์จะเสีย
ถ้ากระแสเกินพิกัด รีเลย์อาจค้างติดอยู่ ได้
ยังใช้ SPDT สองตัวต่อขนานแทน DPDT ซึ่งถ้ามีแค่ตัวเดียวทำงานก็เสี่ยงทำให้ประตูค้างล็อก
ไม่มีทั้งฟิวส์และ snubber
จึงแนะนำตระกูลผลิตภัณฑ์ Relay In A Box แทน — มีการรับรอง UL และ CE อายุการใช้งาน 10 ล้านครั้ง และมีโอกาสผ่านการตรวจสอบโค้ดได้
เอกสารข้อมูล / หน้าผลิตภัณฑ์
อีกคนบอกว่าตัวเองก็เคยทำของคล้ายกัน
ลิงก์โปรเจกต์
ซื้อ BTicino BT 344232 จาก eBay มาในราคา 32 ยูโร บัดกรีสาย 4 เส้นแล้วเพิ่มไมโครคอนโทรลเลอร์เข้าไป
ตอนนี้มันทำงานเป็นอินเตอร์คอมอัจฉริยะร่วมกับ Nuki Opener + MQTT Pub/Sub