1 điểm bởi GN⁺ 2 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Từ Firefox 151 trên desktop, API Web Serial được hỗ trợ, cho phép ứng dụng web giao tiếp với các thiết bị serial tương thích mà không cần phần mềm native
  • Web Serial là API cho phép đọc và ghi thiết bị serial bằng JavaScript, có thể kết nối trực tiếp với vi điều khiển, máy in 3D, đồng hồ đo điện năng và nhiều thiết bị khác
  • Trong quy trình của Adafruit, Web Serial được dùng để truyền firmware nhằm cài đặt CircuitPython và dễ dàng triển khai mã thiết bị bằng tệp code.py
  • Firefox giảm rủi ro về bảo mật và quyền riêng tư khi truy cập thiết bị bằng cơ chế cấp quyền rõ ràng từ người dùng, quyền theo từng trang web và từng cổng, cùng add-on gating
  • Mozilla đang thúc đẩy chuẩn hóa WHATWG cho Web Serial hiện còn ở giai đoạn WICG, đồng thời kêu gọi thử nghiệm các quy trình phần cứng thực tế và gửi phản hồi

Web Serial API và phạm vi hỗ trợ

  • Từ Firefox 151 for Desktop, API Web Serial được hỗ trợ để các ứng dụng web có thể giao tiếp với thiết bị tương thích mà không cần phần mềm native
  • Web Serial API là một web API cho phép website đọc và ghi các thiết bị serial bằng JavaScript
  • Các thiết bị mục tiêu gồm vi điều khiển, bo mạch phát triển, máy in 3D, đồng hồ đo điện năng và các phần cứng khác kết nối qua serial
  • Các thiết bị tương thích serial bao gồm bo mạch dựa trên Espressif ESP, Raspberry Pi Picos, máy in 3D và thiết bị LEGO
  • Máy tính hiện đại thường không có cổng serial, nhưng các thiết bị kết nối qua USB hoặc ghép nối bằng Bluetooth có thể tự nhận diện với hệ điều hành như một thiết bị có khả năng serial để xuất hiện như cổng serial
  • Các thiết bị tương thích Web Serial được những người làm dự án hobby, hardware hacker, nhà giáo dục, maker và lập trình viên sử dụng cho tự động hóa nhà ở, tạo mẫu phần cứng, in 3D và nhiều mục đích khác

Quy trình Adafruit và CircuitPython

  • Adafruit là một trong những tổ chức tiêu biểu cho việc ứng dụng Web Serial trong lĩnh vực phần cứng nguồn mở và giáo dục STEM
  • Adafruit sử dụng Web Serial để truyền firmware, giúp cài đặt nhanh CircuitPython lên thiết bị của hãng
  • Sau khi cài đặt, nếu đặt tên tệp là code.py thì trên hầu hết thiết bị, mã có thể được triển khai bằng cách kéo thả tệp vào thiết bị USB
  • Chương trình Python có thể tương tác với trang web qua Web Serial bằng cơ chế nhập/xuất dạng văn bản đơn giản
  • Có thể sử dụng Adafruit Web Serial Tool, và công cụ này khác với cách OPEN INSTALLER trên trang CircuitPython
  • example CircuitPython Web Serial project là một cấu trúc trong đó web page cục bộ dùng Web Serial để gửi thông điệp tới thiết bị đang chạy tệp CircuitPython
  • Mozilla đã hợp tác với Adafruit để kiểm thử triển khai trên Firefox theo các quy trình phần cứng thực tế thường dùng trong cộng đồng này
  • Kỹ sư Mozilla Alex Franchuk đã tạo Page Playground, kết hợp Web Serial với thiết bị điện tử

Đo điện năng và tự động hóa nhà ở

  • Florian Quèze của Mozilla đã thử nghiệm nhiều dự án để đo mức tiêu thụ điện năng, đồng thời tạo một bản demo đọc dữ liệu điện năng từ USB power meter bán trên thị trường qua Web Serial và hiển thị trong Firefox
  • Đoạn mã này có thể xuất dữ liệu sang Firefox Profiler, giúp trực quan hóa và chia sẻ dữ liệu điện năng dễ dàng hơn
  • Các tài nguyên liên quan gồm page, GitHub repodữ liệu Firefox Profiler ghi lại mức tiêu thụ điện của một bóng đèn với ba chế độ độ sáng
  • Các USB power meter đã được thử nghiệm gồm AVHzY C3 USB, Joy-IT TC66C và YZXStudio USB ZY1280
  • Home Assistant là một dự án nguồn mở phổ biến cho tự động hóa nhà ở, còn ESPHome cung cấp firmware tương thích Home Assistant cho ESP32 giá rẻ và các thiết bị tương tự
  • Firmware ESPHome có thể được cài đặt và cấu hình qua Web Serial chỉ với vài cú nhấp chuột

Bảo mật và quyền riêng tư

  • Khi nền tảng web có thể đọc và ghi lên thiết bị phần cứng, các lo ngại về bảo mật và quyền riêng tư sẽ gia tăng
  • Trong Web Serial, website không thể xem hay truy cập cổng serial cho đến khi người dùng cho phép một cách rõ ràng
  • Quyền truy cập cổng được cấp theo từng website và từng cổng
  • Web Serial API yêu cầu website gọi navigator.serial.requestPort(), và người dùng có thể chọn cổng để cấp quyền truy cập hoặc từ chối toàn bộ
  • Website không nhận được danh sách các thiết bị đang kết nối, và ngoài cổng do người dùng chọn thì không có thông tin fingerprinting hữu ích nào được cung cấp
  • Firefox sử dụng add-on gating được giới thiệu trong quá trình triển khai Web MIDI API, để người dùng hiểu thời điểm và lý do một website yêu cầu truy cập cổng serial
  • Cơ chế add-on gating cho người dùng biết chi tiết hơn về những gì họ đang cấp phép so với các lời nhắc quyền web khác
  • Lời nhắc add-on gating được hiển thị trước lời nhắc chọn cổng khi trang web lần đầu yêu cầu quyền truy cập cổng
  • Với các tổ chức sử dụng Firefox Enterprise Policies, Web Serial bị tắt theo mặc định
  • Quản trị viên có thể dùng thiết lập chính sách DefaultSerialGuardSetting để cho phép hoặc chặn rõ ràng tính năng Web Serial trên toàn tổ chức

Chuẩn hóa và phản hồi

  • Web Serial hiện vẫn ở giai đoạn Web Incubator Community Group (WICG), nhưng Mozilla cho rằng với phạm vi và thời gian ươm tạo kéo dài của nó, vẫn có một lộ trình chuẩn hóa phù hợp
  • Mozilla hiện đang thúc đẩy việc chuẩn hóa Web Serial API tại WHATWG thông qua đề xuất Workstream mới
  • Mozilla có kế hoạch hợp tác với các đối tác trong hệ sinh thái và các tổ chức tiêu chuẩn hóa để định hình cách web truy cập các thiết bị ngoại vi
  • Nếu bạn có một quy trình Web Serial dựa trên thiết bị, bạn có thể thử nghiệm nó trên Firefox
  • Bạn có thể chia sẻ dự án, đặt câu hỏi hoặc gửi phản hồi trên Mozilla Connect
  • Với các vấn đề kỹ thuật, hãy xem support.mozilla.org hoặc gửi bug trên Bugzilla

1 bình luận

 
Ý kiến trên Lobste.rs
  • Sẽ rất tốt nếu họ cũng triển khai WebUSB

    • Nếu điều này cho phép flash vi điều khiển như ESP, thì 95~100% các trường hợp tôi dùng WebUSB sẽ được giải quyết
    • Có người đã triển khai bằng tiện ích mở rộng Firefox: https://github.com/ArcaneNibble/awawausb
  • Tôi tò mò không biết họ định bảo vệ những người cả tin, đặc biệt là những người không biết cổng nối tiếp là gì, như thế nào. Trong lập trường tiêu chuẩn của Mozilla cũng có đoạn này

    Các thiết bị cung cấp giao diện nối tiếp thường phơi bày những khả năng mức thấp rất mạnh trong trạng thái hầu như không có hoặc hoàn toàn không có xác thực. Việc phơi bày những khả năng đó lên web mà không có đủ biện pháp bảo vệ sẽ tạo ra mối đe dọa nghiêm trọng đối với thiết bị đó

    • Thiết bị có hỗ trợ nối tiếp mà người dùng mới có thể sở hữu thì tôi chỉ nghĩ ra chuột. Nếu cập nhật firmware không được ký thì malware có thể được cài lên, nhưng tôi không thấy đây là mục tiêu hữu ích với kẻ tấn công
      Bàn phím có chức năng macro thì đáng lo hơn một chút. Dù vậy, Chrome đã có tính năng này nhiều năm mà không có vấn đề lớn nào, nên tôi không xem đây là mối lo nghiêm trọng. Đặc biệt là khi các thiết bị ngoại vi ngày càng bắt đầu dùng nó cho mục đích cấu hình, mức độ hữu ích lớn hơn rủi ro rất nhiều
  • Cái này thật vô lý. Khó mà diễn tả hết việc thêm quyền truy cập cổng nối tiếp vào trình xem trang web điên rồ đến mức nào

    • Tôi không đồng ý. Đây là tính năng quá hữu ích, và tôi vui vì giờ không phải chuyển sang Chrome chỉ để dùng nó
    • Web đã tiến hóa thành một nền tảng ứng dụng từ khoảng 20 năm trước rồi
  • À đúng rồi. Đây chính xác là thứ website còn thiếu. Tôi đang chờ WebRawSockets. Nói đùa một nửa thôi, nhưng hồi trước khi tôi từng tham gia, nhóm làm việc SVG thực sự đã cố thêm raw socket vào SVG

    • Việc nhóm làm việc SVG định đưa raw socket vào SVG nghe thật khó tin. Bạn còn nhớ lý do khi đó là gì không?