1 คะแนน โดย GN⁺ 1 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เริ่มตั้งแต่ Firefox 151 เดสก์ท็อป รองรับ Web Serial API ทำให้เว็บแอปสื่อสารกับอุปกรณ์ซีเรียลที่เข้ากันได้โดยไม่ต้องใช้ซอฟต์แวร์เนทีฟ
  • Web Serial คือ API สำหรับอ่านและเขียนอุปกรณ์ซีเรียลด้วย JavaScript จึงเชื่อมต่อกับไมโครคอนโทรลเลอร์, เครื่องพิมพ์ 3D, มิเตอร์ไฟฟ้า และอุปกรณ์อื่น ๆ ได้โดยตรง
  • ในเวิร์กโฟลว์ของ Adafruit สามารถส่งเฟิร์มแวร์ผ่าน Web Serial เพื่อติดตั้ง CircuitPython และกระจายโค้ดลงอุปกรณ์ได้ง่ายด้วยไฟล์ code.py
  • Firefox ลดความเสี่ยงด้านความปลอดภัยและความเป็นส่วนตัวของการเข้าถึงอุปกรณ์ด้วยการอนุญาตจากผู้ใช้อย่างชัดเจน, สิทธิ์แยกตามเว็บไซต์และพอร์ต, และ add-on gating
  • Mozilla กำลังผลักดัน Web Serial ซึ่งยังอยู่ในขั้น WICG ไปสู่การทำมาตรฐานกับ WHATWG พร้อมขอให้ทดสอบเวิร์กโฟลว์ฮาร์ดแวร์จริงและส่งข้อเสนอแนะ

Web Serial API และขอบเขตการรองรับ

  • ตั้งแต่ Firefox 151 for Desktop เป็นต้นไป รองรับ Web Serial API ทำให้เว็บแอปพลิเคชันสื่อสารกับอุปกรณ์ที่เข้ากันได้โดยไม่ต้องพึ่งซอฟต์แวร์เนทีฟ
  • Web Serial API เป็นเว็บ API ที่ช่วยให้เว็บไซต์อ่านและเขียนอุปกรณ์ซีเรียลด้วย JavaScript ได้
  • อุปกรณ์เป้าหมายรวมถึงไมโครคอนโทรลเลอร์, บอร์ดพัฒนา, เครื่องพิมพ์ 3D, มิเตอร์ไฟฟ้า และฮาร์ดแวร์อื่น ๆ ที่เชื่อมต่อแบบซีเรียล
  • อุปกรณ์ที่รองรับซีเรียลครอบคลุม บอร์ดที่ใช้ Espressif ESP, Raspberry Pi Picos, เครื่องพิมพ์ 3D และอุปกรณ์ LEGO
  • แม้คอมพิวเตอร์สมัยใหม่มักไม่มีพอร์ตซีเรียล แต่อุปกรณ์ที่เชื่อมต่อผ่านพอร์ต USB หรือจับคู่ผ่าน Bluetooth สามารถประกาศตัวกับระบบปฏิบัติการให้มองเห็นเป็นอุปกรณ์ที่ใช้พอร์ตซีเรียลได้
  • อุปกรณ์ที่รองรับ Web Serial ถูกใช้โดยนักพัฒนางานอดิเรก, ฮาร์ดแวร์แฮ็กเกอร์, นักการศึกษา, เมกเกอร์ และนักพัฒนา ในงานอย่างโฮมอัตโนมัติ, การทำฮาร์ดแวร์ต้นแบบ และการพิมพ์ 3D

เวิร์กโฟลว์ของ Adafruit และ CircuitPython

  • Adafruit เป็นหนึ่งในองค์กรตัวอย่างเด่นที่แสดงการใช้ Web Serial ในด้านฮาร์ดแวร์โอเพนซอร์สและการศึกษา STEM
  • Adafruit ใช้ Web Serial ส่งเฟิร์มแวร์เพื่อติดตั้ง CircuitPython ลงบนอุปกรณ์ของบริษัทได้อย่างรวดเร็ว
  • หลังติดตั้งแล้ว หากตั้งชื่อไฟล์เป็น code.py ก็สามารถกระจายโค้ดไปยังอุปกรณ์ส่วนใหญ่ได้ด้วยการลากไฟล์ไปวางบนอุปกรณ์ USB
  • โปรแกรม Python สามารถทำงานร่วมกับหน้าเว็บผ่าน Web Serial ได้ด้วยอินพุต/เอาต์พุตแบบข้อความอย่างง่าย
  • สามารถใช้ Adafruit Web Serial Tool ได้ และวิธีนี้แยกจากรูปแบบ OPEN INSTALLER บนเว็บไซต์ CircuitPython
  • example CircuitPython Web Serial project เป็นโครงสร้างที่ใช้ Web Serial จาก web page ภายในเครื่องเพื่อส่งข้อความไปยังอุปกรณ์ที่กำลังรันไฟล์ CircuitPython
  • Mozilla ร่วมมือกับ Adafruit เพื่อทดสอบการพัฒนาใน Firefox ให้สอดคล้องกับเวิร์กโฟลว์ฮาร์ดแวร์จริงที่ชุมชนนี้ใช้งานกันทั่วไป
  • วิศวกร Mozilla ชื่อ Alex Franchuk ได้สร้าง Page Playground ที่ผสาน Web Serial เข้ากับอุปกรณ์อิเล็กทรอนิกส์

การวัดพลังงานและโฮมอัตโนมัติ

  • Florian Quèze จาก Mozilla ได้ทดลอง หลายโปรเจ็กต์สำหรับการวัดการใช้พลังงาน และสร้าง เดโม ที่อ่านข้อมูลพลังงานจาก USB power meter ที่มีขายทั่วไปผ่าน Web Serial แล้วแสดงผลใน Firefox
  • โค้ดดังกล่าวสามารถส่งออกข้อมูลไปยัง Firefox Profiler ได้ ทำให้การแสดงภาพและการแชร์ข้อมูลพลังงานทำได้ง่าย
  • ทรัพยากรที่เกี่ยวข้องได้แก่ page, GitHub repo และ ข้อมูล Firefox Profiler ที่บันทึกการใช้พลังงานของโคมไฟซึ่งมีโหมดความสว่าง 3 ระดับ
  • USB power meter ที่ทดสอบแล้วมี AVHzY C3 USB, Joy-IT TC66C และ YZXStudio USB ZY1280
  • Home Assistant เป็นโครงการโอเพนซอร์สยอดนิยมสำหรับโฮมอัตโนมัติ และ ESPHome มอบเฟิร์มแวร์ที่เข้ากันได้กับ Home Assistant สำหรับ ESP32 ราคาประหยัดและอุปกรณ์ลักษณะคล้ายกัน
  • สามารถติดตั้งและตั้งค่าเฟิร์มแวร์ ESPHome ผ่าน Web Serial ได้ด้วยการคลิกเพียงไม่กี่ครั้ง

ความปลอดภัยและความเป็นส่วนตัว

  • เมื่อเว็บแพลตฟอร์มสามารถอ่านและเขียนอุปกรณ์ฮาร์ดแวร์ได้ ความกังวลด้านความปลอดภัยและความเป็นส่วนตัวก็เพิ่มขึ้น
  • ใน Web Serial เว็บไซต์จะไม่สามารถมองเห็นหรือเข้าถึงพอร์ตซีเรียลได้จนกว่าผู้ใช้จะอนุญาตอย่างชัดเจน
  • การอนุญาตพอร์ตทำแยกตามเว็บไซต์และตามพอร์ต
  • Web Serial API กำหนดให้เว็บไซต์เรียก navigator.serial.requestPort() และผู้ใช้สามารถเลือกพอร์ตที่จะอนุญาตให้เข้าถึงหรือปฏิเสธการเข้าถึงทั้งหมดได้
  • เว็บไซต์จะไม่ได้รับรายชื่ออุปกรณ์ที่เชื่อมต่ออยู่ และจะไม่ได้ข้อมูลสำหรับการทำ fingerprinting ที่มีประโยชน์ นอกเหนือจากพอร์ตที่ผู้ใช้เลือก
  • Firefox ใช้ add-on gating ที่นำมาใช้ในงานพัฒนา Web MIDI API เพื่อช่วยให้ผู้ใช้เข้าใจว่าเว็บไซต์ร้องขอการเข้าถึงพอร์ตซีเรียลเมื่อใดและเพราะเหตุใด
  • add-on gating ให้รายละเอียดแก่ผู้ใช้มากกว่าพรอมป์ต์สิทธิ์เว็บรูปแบบอื่น ๆ ว่ากำลังอนุญาตอะไรอยู่
  • พรอมป์ต์ add-on gating จะแสดงก่อนพรอมป์ต์เลือกพอร์ต เมื่อเว็บไซต์ร้องขอการเข้าถึงพอร์ตเป็นครั้งแรก
  • สำหรับองค์กรที่ใช้ Firefox Enterprise Policies นั้น Web Serial จะถูกปิดใช้งานเป็นค่าเริ่มต้น
  • ผู้ดูแลระบบสามารถอนุญาตหรือบล็อกความสามารถของ Web Serial ทั้งองค์กรได้อย่างชัดเจนผ่านนโยบาย DefaultSerialGuardSetting

การทำมาตรฐานและข้อเสนอแนะ

  • แม้ Web Serial จะยังอยู่ในขั้น Web Incubator Community Group (WICG) แต่ Mozilla มองว่าจากขอบเขตและช่วงเวลาการบ่มเพาะที่ยาวนาน ทำให้มีเส้นทางสู่การทำมาตรฐานได้
  • Mozilla กำลังผลักดันการทำมาตรฐาน Web Serial API ใน WHATWG ผ่าน ข้อเสนอ Workstream ใหม่
  • Mozilla มีแผนร่วมมือกับพันธมิตรในระบบนิเวศและองค์กรด้านมาตรฐาน เพื่อกำหนดแนวทางการเข้าถึงอุปกรณ์ต่อพ่วงจากเว็บ
  • หากมีเวิร์กโฟลว์ Web Serial ที่อิงกับอุปกรณ์ ก็สามารถทดสอบได้บน Firefox
  • สามารถแชร์โปรเจ็กต์, ตั้งคำถาม หรือส่งข้อเสนอแนะได้ที่ Mozilla Connect
  • หากพบปัญหาทางเทคนิค ให้ตรวจสอบ support.mozilla.org หรือส่งบั๊กผ่าน Bugzilla

1 ความคิดเห็น

 
GN⁺ 1 시간 전
ความเห็นจาก Lobste.rs
  • อยากให้ทำ WebUSB ด้วย

    • ถ้ามันทำให้ แฟลชไมโครคอนโทรลเลอร์ อย่าง ESP ได้ กรณีใช้งาน WebUSB ของผม 95~100% ก็น่าจะถูกครอบคลุม
    • มีคนทำเป็น ส่วนขยาย Firefox ไว้แล้ว: https://github.com/ArcaneNibble/awawausb
  • สงสัยว่าจะปกป้องคนที่ถูกหลอกได้ง่าย โดยเฉพาะคนที่ไม่รู้ด้วยซ้ำว่า พอร์ตอนุกรม คืออะไร ได้อย่างไร ใน จุดยืนด้านมาตรฐาน ของ Mozilla ก็มีเนื้อหาแบบนี้อยู่

    อุปกรณ์ที่มี serial interface มักเปิดเผยความสามารถระดับล่างที่ทรงพลัง โดยแทบไม่มีการยืนยันตัวตนหรือไม่มีเลย การเปิดความสามารถเช่นนั้นให้เว็บเข้าถึงโดยไม่มีมาตรการป้องกันที่เพียงพอ ถือเป็นภัยคุกคามร้ายแรงต่ออุปกรณ์นั้น

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

    • ไม่ค่อยเห็นด้วยนะ มันมีประโยชน์มาก และดีใจที่ตอนนี้ไม่ต้องสลับไปใช้ Chrome เพื่อใช้สิ่งนี้แล้ว
    • เว็บได้พัฒนาเป็น แพลตฟอร์มแอปพลิเคชัน ไปแล้วตั้งแต่ราว 20 ปีก่อน
  • อ้อ จริงสิ เว็บไซต์ยังขาดสิ่งนี้พอดีเลย ตอนนี้รอ WebRawSockets อยู่ ล้อเล่นครึ่งหนึ่งนะ แต่สมัยก่อนตอนผมมีส่วนร่วม คณะทำงาน SVG เคยพยายามเพิ่ม raw sockets เข้าไปใน SVG จริง ๆ

    • ได้ยินว่าคณะทำงาน SVG จะใส่ raw sockets ลงใน SVG แล้วก็อดสงสัยไม่ได้ว่าเกิดอะไรขึ้นกันแน่ จำได้ไหมว่าเหตุผลตอนนั้นคืออะไร?