Chuyển đến nội dung

Tích hợp RFID vào phần mềm của bạn

Trang này dành cho đội đã quen xây ERP, WMS hoặc phần mềm bán hàng, và lần đầu làm việc với đầu đọc RFID. Cách tiếp cận ở đây: nối từng khái niệm RFID về một khái niệm bạn đã dùng hằng ngày, và vẽ rõ ranh giới phần nào SDK lo, phần nào phần mềm của bạn lo.

Đầu đọc là nguồn sự kiện, không phải một API

Mô hình quen thuộc nhất với dev phần mềm là request và response: gọi API, nhận kết quả, xong. Đầu đọc RFID không hoạt động như vậy. Bạn gửi một lệnh bắt đầu kiểm kê, rồi đầu đọc chủ động đẩy dữ liệu về liên tục cho tới khi bạn bảo dừng.

Nếu cần một hình dung quen thuộc:

  • Máy quét mã vạch giống bàn phím: người dùng bấm, phần mềm nhận đúng một sự kiện.
  • Đầu đọc RFID giống một message queue mà producer là phần cứng: message đến liên tục, cùng một mã lặp lại hàng trăm lần, và consumer là phần mềm của bạn phải tự gom chúng thành sự kiện có nghĩa.

Ai từng viết consumer cho Kafka hoặc RabbitMQ sẽ thấy mọi kỹ thuật quen thuộc đều dùng lại được ở đây: xử lý message trùng, khóa idempotent, gom theo cửa sổ thời gian.

SDK đứng ở đâu

SDK đóng vai trò giống driver database: bạn không cần biết hai bên nói chuyện với nhau bằng giao thức gì, chỉ gọi method và nhận dữ liệu đã parse sẵn.

Phân chia trách nhiệm:

ViệcAi lo
Mở serial port, nói chuyện với đầu đọc, parse dữ liệu thẻSDK
Cấu hình công suất, ăng-ten, vùng tần sốSDK, bạn chọn giá trị
Gom nhiều lần đọc thành một sự kiện (chống trùng)Phần mềm của bạn
Gán ý nghĩa nghiệp vụ cho sự kiện theo điểm đọcPhần mềm của bạn
Ghi vào ERP một cách idempotentPhần mềm của bạn

Kiến trúc thường gặp: một service nhỏ cạnh đầu đọc

Mô hình phổ biến nhất là một edge service: một chương trình nhỏ chạy trên máy tính đặt tại kho hoặc cửa hàng, nối với đầu đọc qua USB.

  1. Service (thường viết bằng Python với nrn-sdk) nhận thẻ qua callback của SDK.
  2. Chống trùng ngay tại chỗ, để không đẩy hàng trăm bản ghi lặp lên mạng.
  3. Đẩy sự kiện đã sạch về backend qua HTTP hoặc message queue, kèm điểm đọc và thời điểm.
  4. Backend ánh xạ EPC sang SKU rồi tạo chứng từ trong ERP như mọi giao dịch khác.

Với màn hình bán hàng hoặc kiosk chạy trong trình duyệt, có đường ngắn hơn: bản Web Serial (@nextwaves/nrn-sdk) cho trang web nối thẳng vào đầu đọc, không cần cài service.

Một điểm khác với service thông thường: đầu đọc nối qua serial nên chỉ một tiến trình giữ được kết nối. Đừng cho hai service cùng mở một đầu đọc; muốn nhiều nơi dùng dữ liệu thì để edge service phát lại qua queue.

Dữ liệu cần thêm vào hệ thống

Thường chỉ cần ba bảng, và cả ba đều giống thứ bạn từng làm:

BảngVai tròGiống với
Ánh xạ EPCEPC nào thuộc SKU nào, gắn cho lô nào, từ lúc nàoBảng serial number hoặc IMEI
Điểm đọcĐầu đọc và ăng-ten nào đứng ở vị trí nghiệp vụ nàoDanh mục quầy, cổng, kho
Sự kiện đọcSự kiện đã chống trùng, kèm khóa idempotentBảng log giao dịch

EPC là định danh từng cá thể, nên bảng ánh xạ EPC chính là bảng serial number với quy mô lớn hơn. Quy tắc sinh EPC nằm ở mã hóa EPC.

Chống ghi trùng: đúng bài chống double-submit

Ai làm web đều từng chặn người dùng bấm nút Lưu hai lần. RFID cần đúng kỹ thuật đó, vì cùng một thẻ chắc chắn được báo về nhiều lần, và service có thể khởi động lại giữa chừng:

  1. Đặt khóa tự nhiên cho sự kiện: (EPC, điểm đọc, cửa sổ nghiệp vụ).
  2. Ghi vào ERP bằng thao tác có điều kiện trên khóa đó, kiểu INSERT ... ON CONFLICT DO NOTHING.
  3. Lần ghi thứ hai của cùng sự kiện trở thành no-op, không thành biến động tồn kho thứ hai.

Chi tiết ba lớp chống trùng, từ đầu đọc tới database, nằm ở đọc thẻ và chống trùng.

Lộ trình thử trong một tuần

  1. Ngày đầu: cắm đầu đọc để bàn vào laptop, pip install nrn-sdk, chạy bắt đầu nhanh. Mục tiêu là thấy EPC hiện lên console.
  2. Trong tuần: nối callback vào pipeline sự kiện có sẵn của bạn ở môi trường test, dựng bảng ánh xạ EPC, thử khóa idempotent bằng cách cho một thẻ đi qua nhiều lần.
  3. Trước khi ra hiện trường: khảo sát vùng đọc thật theo hướng dẫn triển khai RFID, vì hiệu năng đọc phụ thuộc môi trường vật lý chứ không phụ thuộc code.

Đọc tiếp

Tài liệu vận hành Easy Inventory và tích hợp RFID