企业 POS IoT

Odoo 企业版 POS IoT 为什么不是“发现设备就能直接收银”:box 关联、device 投影与 session 加载边界讲透

pos_iot 把 IoT 设备拆成 box 归属、device 归属和 session 前台投影三层;设备被发现不等于就进入当前 POS 的可用设备集合。

POS 企业
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 4 阅读

很多人把 IoT 接 POS 理解成“盒子发现设备 -> POS 直接可用”。企业版 pos_iot 故意把这件事拆开:box 先识别自己带了哪些 device,计算关联哪些 pos.config;session 再决定前台要加载哪些 box 和 device;自动配置 wizard 只是帮你填默认映射,不会跳过归属关系。

主要参考源码:

  • enterprise/pos_iot/models/iot_box.py
  • enterprise/pos_iot/models/iot_device.py
  • enterprise/pos_iot/models/pos_session.py
  • enterprise/pos_iot/wizard/auto_config_pos_iot.py

一、box 和 device 不是一回事

iot.boxiot.device 都各自计算 associated_pos_config_ids。这说明系统区分:

  • 一台盒子物理上挂了哪些设备;
  • 哪些 POS 配置逻辑上承认这些设备是自己的。

只有第二层成立,POS 才会把它们视为可用。

二、session 前台加载是第三层投影

pos.session._load_pos_data_models() 额外把 iot.deviceiot.box 纳入加载模型;iot.device._load_pos_data_domain() 又只取当前 config 关联的设备。也就是说,前台看到的设备集合不是全库扫描,而是配置裁剪后的投影。

三、自动配置只是加速,不是绕过

action_autoconfigure() 会根据盒子上的显示器、打印机、扫码枪给 POS 配置默认设备字段,但这只是“把映射写好”。如果设备类型不匹配、配置不在关联范围,session 侧仍不会把它们当成可用能力。

四、为什么要分三层

如果把设备发现直接等同于 POS 可用,会出现:

  • 多个 POS 抢同一设备;
  • 前台加载过多无关设备;
  • 自动配置后以为所有能力都已可用,实际上 session 还没正确投影。

五、结论

POS IoT 不是“发现设备就能直接收银”,而是物理发现 -> 配置归属 -> session 投影三层链路。只有理解这三层,才知道为什么有的设备在后台可见,却在前台不可用。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。