Skip to content

Odoo与ThingsBoard

TIP

Odoo与ThingsBoard(后文简称TB)都是不错的软件,不过各有所长。所以,在复杂的应用场景下需要强强联合。TB专心去做设备数据采集、存储与可视化。Odoo专心去做业务,例如租户、客户、资产、设备等的管理。

复杂的应用场景

  • 部署了多个TB服务。
  • 每个TB服务有多个租户,一个租户有多个客户、资产。

Odoo对接TB的功能清单

  • 可以配置多个TB服务。
  • 同步TB租户到Odoo的公司类型联系人。
  • 同步TB客户到Odoo的个人类型联系人,自动关联租户。
  • 同步TB资产到Odoo的项目,自动关联租户、客户。
  • 同步TB设备到Odoo的设备,自动关联资产、客户、租户。
  • 同步TB关联关系,将设备关联到项目。
  • 同步TB设备的遥测数据。
  • 同步TB警报。
  • 通过Odoo更新设备遥测数据。
  • 修改Odoo设备名称同步至TB。反之亦可。

使用TB接口的最佳实践

  • TB官方维护了一个Python包:Python REST Client,官网也有案例。案例只是几个例子,还是要下载一份源代码,调用的时候随时翻看源码。一个很典型的场景,我们从swagger-ui和编辑器提示上都不好看出来哪些字段是必填的!

功能截图

  • 该包的源码主要用于查询model,我们在向TB创建实体的时候,看一下相关model的setter修饰器,会避免出现值为空或不合法的情况!

  • 常用创建方法:save_tenant, save_customer, save_user, save_asset, save_device, save_relation

Odoo相关模块的结构

模块结构没有什么特别的,还是常规的三层结构。

  • 一级:就一个模块thingsboard,用于封装TB接口。

  • 二级:thingsboard_partner,用于管理Odoo的联系人同步到TB的租户、客户。类似的还有thingsboard_project,thingsboard_maintenance等。

  • 三级:tb_maint_proj,该模块用于解耦资产与设备。换句话说,有些业务场景用不到TB的资产,那么仅将设备关联到客户即可,就可以不安装thingsboard_project模块。如果需要资产与设备进行关联,那么可以安装该模块。

经过测试的相关版本

  • Odoo16企业版
  • TB 3.6.4

总起来讲,稍微复杂一点的物联网项目,考虑到方便管理、对外开放等因素,单纯使用哪一个软件都是不够的,需要根据团队的技术栈来定制开发。

团队对Java、Angular有一定的基础,可以直接定制TB。团队对Python、Odoo框架有一定的基础,可以参考本文通过定制Odoo来应用。

本文仅供参考,欢迎邮件交流。