"给 Odoo 装一个 RFID 模块"这句话背后藏着三种完全不同的工程决策。应用商店里确实有名为 RFID 的模块;企业版确实有一个 IoT Box;而大多数跑在生产里的 RFID 系统,最终用的是第三种东西——一个坐在 Odoo 之外、通过 XML-RPC 或 JSON-RPC 写入数据的中间件。三条路没有绝对优劣,但有清晰的适用边界。本文把三条路摊开比较。
路线一:Odoo 应用商店第三方模块
应用商店里与 RFID 相关的模块大致分两类:
- 标签映射类:以 "RFID/NFC Tags for Stock Barcode"(app_rfid_stock_barcode)为代表,做法是把每张标签的序列号映射成一个真实条码,员工在既有条码流程里直接扫 RFID 标签——库存操作员不需要学任何新界面。
- 硬件桥接类:如 yudha_rfid_base 这类模块,提供与读写器硬件通信的基础层,上层流程由开发者继续搭建。
这类模块的优势是便宜、安装快、当天可用;劣势同样明确:作用域限于单个模块的流程(多数只覆盖库存条码),版本锁定严重(为特定 Odoo 版本构建,升级时要等作者跟进),固定读写器、机器人与跨模块自动化基本不在范围内。
路线二:企业版 IoT Box
IoT Box 是 Odoo 官方的设备容器:一块树莓派底板,接入 Odoo 的 IoT 菜单后自动发现受支持的周边设备。它的好处是"官方"——驱动与 Odoo 版本由同一团队维护,配置体验顺滑。
它的边界也来自"官方":仅限企业版;支持的 RFID 外设清单有限;一个盒子对应一个站点的规模逻辑,多月口、多库区部署时盒子数量与运维成本线性增长。对已经在企业版、只需要一两台设备、且设备在支持清单里的项目,IoT Box 是合理的默认答案。
路线三:中间件
中间件不是模块,而是一个独立服务:一侧讲读写器的语言(LLRP、厂商 SDK、MQTT、HTTP),另一侧讲 Odoo 的语言(XML-RPC 或 JSON-RPC)。它的特征是:
- 版本无关。同一套中间件对接 Odoo 17、18、19、20,社区版与企业版行为一致——SpidersRFID 中间件即按 17–20 全版本、双版本设计,升级 Odoo 不需要重新购买集成。
- 事件驱动。固定读写器、月口通道、AGV、无人机产生的连续读取流,由中间件去重、聚合后再写入,而不是塞进一个为人工扫码设计的接口。
- 跨模块。同一条读取事件可以同时驱动库存数量、资产借还与制造领料,因为路由逻辑在中间件层,不在任何单一模块里。
代价是独立组件带来的部署与维护,以及比模块更高的前期投入。
三条路并排比较
| 维度 | Apps Store 模块 | IoT Box | 中间件 |
|---|---|---|---|
| Odoo 版本 | 锁定构建时版本,逐版跟进 | 企业版专属 | 17–20 社区版与企业版通用 |
| 硬件范围 | 单一手持,视模块而定 | 官方支持清单内的外设 | 手持 + 固定读写器 + 机器人/无人机 |
| 覆盖流程 | 单模块(多为库存条码) | 设备接入为主 | 跨模块事件自动化 |
| 升级风险 | 每次大版本都要验证 | 随企业版升级 | 低(API 层稳定) |
| 典型成本 | 数十至数百美元/模块 | 企业版订阅 + 盒子硬件 | 项目级投入,按站点规模 |
怎么选
- 一把手持、员工在库存条码流程里扫标签、预算有限:应用商店模块。app_rfid_stock_barcode 这类映射式模块是最短路径。
- 已是企业版、设备在官方清单内、只要一两台:IoT Box。
- 月口固定读写器、实时数量同步、机器人或无人机读点、资产与制造联动、或希望在 17–20 任意版本(含社区版)上用同一套集成:中间件。
最常见的成熟架构其实是组合:中间件承担固定读点与事件流,个别手持流程留在条码应用或轻量模块里。选型时先盘清读点类型与版本计划,再决定买什么——顺序反过来,成本通常翻倍。
常见问题
**Odoo 社区版能用 RFID 吗?** 能。社区版没有 IoT Box,但应用商店模块与中间件两条路都通:一个自建或第三方模块可以接手持,而中间件走公开的 XML-RPC/JSON-RPC API,对社区版 17–20 与企业版行为一致。
**IoT Box 和中间件可以并用吗?** 可以。IoT Box 管它支持清单内的外设,中间件管固定读写器与事件自动化,两者写入同一个 Odoo 实例并不冲突;建议在中间件层做事件去重,避免双写。
**应用商店的 RFID 模块能扛生产负载吗?** 对单手持、低频扫描的场景可以。它们的短板不在功能而在边界:版本锁定、单模块作用域、缺少固定读点与队列机制。读到吞吐量上升、读点变多时,通常要迁到中间件。









