开源|ThingsBoard 项目实施及二次开发要点总结
最近在实施 ThingsBoard 项目中遇到一些问题总结,还有针对 Thingsboard 二次开发中的提示。

关注公众号

手动添加:thingsboard_cn

访问社区网站点击下方按钮

了解更多

如果你正准备使用 Thingsboard 开源框架作为你的物联网平台来使用,这个文章对你应该有一定帮助。关于 Thingsboard 平台的介绍和基础不是本文的重点,所以,你在阅读本文时,应该具备一些 Thingsboard、物联网平台、MQTT、HTTP、物模型,等基础能力。

Thingsboard 项目实施

实施准备

  • 统计你所在网络里面的设备、资产、测点、指标、通讯方式、状态等基础信息,可以统计一些信息形成 Excel 表格,越详细越好,多多益善;
  • 基于你对物联网的了解,要把业务结合进来,综合考虑物联网平台到底对你的业务有什么帮助,比如:信息及时性?数据总量?统计分析?降本增效?还是有其他非技术目的?
  • 要有相关的技术储备,人员储备,还有资金储备,毕竟还是需要不少时间、精力、金钱和欲望投入在里面;
  • 不管如何,你还是应该准备找一个合作伙伴,能够帮助你解决一些你无法预料到的问题,以解燃眉之急;
  • IoT、物联网、平台,这些都是基础设施,并不能完全解决你的所有问题,要摆正 Thingsboard 在你的业务中的正确位置
  • 至于 Thingsboard 能帮到你什么,能做什么,有什么效果,你可以在本技术博客寻找你的答案,或到互联网找到你所需要的内容;

实施要点

这里以一个工业物联网平台为例,简单介绍一些要点供你参考:

  • 目的:工业物联网平台,当然是为了工业生产服务,例如:这个指标采集上来,频率是多少,数据变化起到什么业务帮助。如果存粹为了做一个物联网平台而做一个,那就无所谓了,只要看上去像个平台,数据在变化,有图有真相,那也行;
  • 方法:典型的实施方法,无非就是采集、汇聚、存储、分析,方法在不同的客户有不同的操作方式,比如:改造老平台是一种有据可循的,推翻老平台又是另一个,还有新建平台也是一脸茫然,不知所措;要根据实际的需求,制定适合自己的实施方法
  • 过程:来举例说明一个客户的实施过程:在这个客户而已,开源是开放的,免费的,没什么难度的,所以把实施过程简单理解为:1、安装;2、配置;3、调整;4、交付。我把其过程形容为:陷入泥潭的人,越陷越深,最后有可能会失败;
  • 时间:有些客户觉得拿来即用,更何况 Thingsboard 是开源的,那就是多简单的事,其实,我们实施过的项目中,客户越是觉得简单的快速的,都会导致项目延迟,他们忽略了开源并不是你什么也不需要做就可以完成所有实施,赶工期不太适合用 Thingsboard 来做,假如你对开源真的有所了解的话;如果你觉得一个月能搞定,我建议你把时间放大到3个月,中间你会遇到太多的疑问和不知道,如果有合作伙伴能帮你,那你算是幸运儿,有些自己几个星期搞不定的问题,专业人士只需要十分钟;
  • 效果:不要对项目实施的结果报以太多的期望,毕竟 Thingsboard 还有 PE 专业版在那里,开源版本只是提供了基础功能,的确可以让你达到完成一个物联网平台的概念,但是,需要太多的工作量去完善你的业务需求了,效果因人而异,各说纷云。

总结经验

  • 开源贡献:如果你了解开源,你就知道开源不仅仅是索取,也需要贡献,如果你的实施过程中修复的问题并没有得到开源社区的合并,那么说明你以后需要一直去修改它,那是非常不利的局面,所以,建议你参与社区,参与贡献,对你长期使用 Thingsboard 是有帮助的而无害的;
  • 可移植脚本:大版本不变化的情况下,你要尽量综合项目实施过程中的可复用脚本,这样,你在其他项目中就是亮点也是赢利点,这一点是很多实施者所忽视的地方;
  • 形成标杆:一旦你发现客户的思路很有效果,你帮助客户实施完成,且具备一定的效益,你要知道这就是果实,要动得举一反三,运用到其他的客户那里,形成标杆项目,推广下去,毕竟复制/粘贴的成本是最低的

Thingsboard 二次开发提示

前提

技术栈

其实就下面俩,你要突破的地方,我觉得应该就是 Angular 框架。如果你研究过 Thingsboard 源码,我的意思是你熟读多次,编译N次,简单开发过几次,你就应该明白其实很简单,只是代码量有点大,几个月应该是搞不定了,你不能放弃,如果你决定要进行二次开发,可以参考本技术博客的其他文章。

  • Java/Spring Boot/Postgresql
  • Typescript/Angular/Javascript/HTML

尝试

作为一个开发者,我建议你最应该看的就是官方文档,不管你的英文能力怎么样,都应该找方法去尝试读他们的文档(虽然都是乌克兰写的)。

  • 编译通过,这是首要条件,否则你的二次开发就此打住;
  • 遵循其编码和框架规则,不要试图去改造它,你可能还不具备这个能力;
  • 后端代码我觉得是非常简单且方便改造的,但是,前段代码所使用的 Angular 在国内并不主流,这也是很多开发者宁愿用其他前端框架重写,也不愿意改官方代码的原因吧;
  • 一切二次开发都是需要基于业务需要而做的,那么就仔细分析一下业务,结合你现有的能力,首先尝试配置它而不是二次开发,以我们的经验,绝大部分需求都是可以通过配置(前端,也需要写一些 JS 代码,而且必须遵循其框架)来完成的。

运用技巧

  • 首先就是官方文档,有些内容都是以简单的表格列出,其实可以算是设计说明书,非常有帮助;
  • Github issue, 你要经常看,最好能翻边你所关注的所有,里面的答案比代码和文档更加清晰;
  • 关注本技术博客的内容,与笔者沟通,把你需要的疑问提出来,我们专门针对问题解答(技术交流不收费);
分享|五分钟快速学会 ThingsBoard 打包镜像和 Docker 部署
为了更方便地部署和运行 ThingsBoard,我们可以使用 Docker 技术将其打包成镜像,并通过 Docker 容器进行快速部署。