【项目总结】玛嘉环境物联网平台(大三学生独立完成的真实企业外包项目)网脉通用物联网平台网脉铁塔监测系统
文章目录
- 前言
- 一、概述
-
- 1.背景
- 2.三者的关系
- 二、设计中遇到的问题与思考
-
- 背景
- 1.如何确定需求?
- 2.如何接手这个设计堪忧的项目?
- 3.如何进行数据建模?
-
- ①物联网情境下如何存储数据?
- ②如何根据自身需求在TDengine上进行数据建模?
- ③如何抽象出物联网设备的通用模型?
- ④如何进行数据库表设计?
- 4.如何与设备通讯?
-
- ①设备如何与系统连接
- ②如何判断设备状态
- ③如何解析完全不一致的设备数据
- ④如何做到反向控制
- 5.如何设计物联网领域的通用解决方案
-
- ①设备服务
- ②多种运营模式
- 三、工程实践中遇到的问题
-
- 1.团队问题
-
- ①技术水平技术不一
- ②沟通成本
- ③自身水平受限
- 2.部署问题小记
- 3.前端依赖导入问题
- 4.多数据源切换问题
- 5.redis缓存问题
- 6.mybatis拼接sql语句问题
- 7.redis使用map的问题
- 8.设备定位出错
- 9.vue异步数据props传值问题
- 10.前端服务器数据更新问题
- 11.vue数据延迟更新问题
- 12.vue使用echarts问题
- 13.前端异步加载顺序
- 14.vue封装echarts问题
- 15.byte和int转化问题
- 16.嵌入式设备单线程传输问题
- 17.前端图表展示的性能优化
- 总结
- 后记
前言
写这篇文章的目的主要是对过去做过的项目做一个整理,梳理项目中遇到问题和我当时的解决方案,回顾我做项目的过程,总结经验和教训,以便在来年找实习时有一个较好的思路去展示我做过的项目。
在本文只梳理设计和实践过程中遇到的问题和解决方案,就不具体介绍项目的功能了,如果对项目功能感兴趣的可以看我上传的视频【项目演示】网脉铁塔监测物联网平台。
一、概述
1.背景
玛嘉环境物联网平台,是一个当地一个做环保器材企业的真实外包项目,由学院的老师接手。最开始是一个研究生在做的,不过做了三个多月,企业不太满意,暑假时候研究生因为学制的原因到另外一个学校学习,简单来说就是“跑路”了,留下一个烂摊子。
在大二暑假,我和另外几个同学被叫到老师办公室,让我们接手这个项目,一开始以为还算简单,费费劲应该也能做,但是直到接手研究生的项目源码后我忽然觉得项目难度骤升,因为他使用了Jeecg低代码开发平台。对于低代码平台这种东西,大家可能会觉得匪夷所思,认为低代码平台就是给不会开发的人用的,这怎么会难度骤升呢?其实不然,现在的低代码平台很多都无法做到这种特殊需求的定制化开发,一般低代码平台解决的都是那种表单类型开发,直白点就是平常的crud。
可是我们并不是crud啊!
在克服了无数的困难后,我最终把项目完成并部署上线投入使用,现在进入维护阶段。
网脉通用物联网平台
受到低代码的启发,我针对玛嘉环境物联网平台进行通用化改造,试图从物联网领域的工作模式中抽象出一套模型,力求做到人人皆可通过该平台获取自己定制化的物联网服务。
经过探索和开发,最终也完成部分。当时以为做到了通用化,但是后来在一次和物电老师(负责玛嘉环境物联网平台的硬件开发和设计的老师,一个非常好的,也真正有实力的老师)的交谈中,我才发现,由于自身对于物联网认知的局限性,并没有真正达到当初的目标。当时我才意识到,设计一个通用化物联网平台,最大的难点在于没有一个确定的业界统一的标准,这之中有历史原因,也有利益关系。当各个嵌入式设备都有统一的协议,那么物联网设备便能像手机接入互联网这般容易。所谓物联网,无非就是再现一个互联网罢了。
网脉铁塔监测物联网平台
该平台是为了参加服创省赛而写的版本,不过基本上也就是网脉通用物联网的别称,因为之前设计通用物联网时本就是试图设计一个通用的物联网模型,让所有人,不限行业、不限规模地接入平台,获取定制化服务。或许对于真正的通用化还有些距离,不过对于这种赛题还是绰绰有余,我几乎不费吹灰之力就将原来的平台改造成赛题所要求的平台(几乎就是换了个名字),当然也根据赛题要求对通用化物联网平台做了一定的功能补充。
2.三者的关系
三者同出一脉,前者是企业要求的产物,后两者是根据我自己的想法对其的改造,想做出点不一样的东西,最后也确实做出了点东西。
二、设计中遇到的问题与思考
背景
在思考下述问题时,我们必须得结合当时的背景,否则所提的一切设计都是在耍流氓!
如果从当时的视角来看,我面临以下几个问题:
1.项目上手需要时间,就算我也要好久
- Jeecg的技术栈并未完全了解,难以上手。比如我没学过vue那套,redis平常也没用过;其他同学更不用说了,大抵要学上好久
- 配置项目环境都花了一个晚上(主要之前没学过前端,node.js这种环境都配了好久)
2.项目设计堪忧
- 整个UI设计堪忧,同时与业务相关的页面也就那么两三个
- 导入sql文件,好家伙,43个表,后来我细细梳理后发现,真正与业务相关的表只有2个!!!其他都是jeecg自带的…
- 项目规范方面有点随意,可能是因为以为只有自己看,没想到有人接手,好在他在关键步骤有注释
- 表设计(时序数据库)显然没有考虑到未来的变动,比如在设计数据存储时就直接固定六个字段表示(传感量1-6)(这个还是我看源码发现的,项目中还用了反射去写入实体数据类)
3.项目需求不明确
- 甲方无法专业表述需求,不过这也是外包的通病了
- 甲方需求时刻都在变,时不时加新的需求
- 我们只能从甲方天马行空的想象中,确定实际可行的方案,并给出原型以供其参考
4.留的文档很乱,没有真正意义上的设计文档
5.时间紧,任务重
甲方的客户也很急,因为之前开发已经耗费了三个月,甲方希望能先尽快上线系统,满足基本功能即可
1.如何确定需求?
在真实需求沟通中,我发现了两点:
永远不要低估甲方的想象力,他们提出的需求往往特别天马行空,两个字——离谱!
永远不要高估甲方能给的建议,他们对于原型的修改往往提不出有效的建议,一般都是“这里换个颜色,图标大一点”,对于项目本质的东西,他们连理解都理解不了,又如何提出有效的建议呢?
那么,如何去设计出他们想要的项目呢?
我一直在思考这个问题,从我这次的项目经历来看,我觉得可以分为以下几步:
1.假想你是甲方
永远不要站在设计者的角度去沟通项目需求,假想你就是这家企业的老板,我想开发一个项目让公司达到某方面的效果。
2.抓住甲方真正想要的东西
甲方在描述他的需求时,往往会给一个示例,或者其他网站,就比如我在沟通需求过程中他们就给了一个之前的老网站(也是一个外包项目,不过界面风格一看就是上个世纪的)。记住不要纠结于甲方描述出的图画,因为甲方很多时候也不知道自己想要什么。他们只会对做出来的东西说一句——“诶,这个好,我想要这个功能”。
这就好像我们去理发,其实我们往往不知道自己要理什么发型,然后我可能就随便说了一个我印象里的明星发型,因为我看他很帅,可我们真的是想要这个发型吗?我们只不过想变帅而已,那这个头型真的可以让自己变帅吗?不一定吧。所以真正作为设计师的我们就需要揣测他的意图,不要在意他所描述的东西,但要抓住他为什么要描述这种图画,揣测他的意图,理解他的重点。
要了解甲方真正在意哪个点,他想要这些功能的目的,抓住这些点,多去问一些问题确认。
3.根据这些点,以甲方的视角去设计项目,给甲方描述一下你的方案并解释为什么
根据之前得到的重点,揣测甲方的意图,然后从他的角度出发,凭借你的专业能力,给他描述一下你的设计。
如果你真正get到了甲方的意图和重点,那么你可以发挥你的专业知识,提出切实可行的设计方案,并向他解释你为什么这么设计。
4.转化为需求,和甲方确认
如果甲方觉得不可以,你要明白他不满意的地方在哪,针对其进行修改;如果方案得到甲方同意,那么将其转化为确定需求,和甲方确认。
一定要列出需求清单,不然甲方真的会反复变需求(别问我为什么,因为说多了都是泪啊)
<
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
