项目背景:为史密斯开发一个iot管理平台, 可以查看设备告警,下发设备作业,统计设备信息等功能。
软件功能:首先,我们这边做的项目称为IOT平台,包含了支撑Web页面的几个服务外(device、iot、portal、auth、user、system),还有几十个Job(Job就是用于处理设备上报的数据,各种业务逻辑的服务)。这些服务都是部署在微软云上的
微软云除了作为部署服务的地方,也是IOT中心,我们和设备交互的平台
假设一个商用设备想上报数据给我们,那么这个设备要有一个终端(DTU或者WIFI,DTU还分为2g和4g),然后这个终端需要注册到微软云的IOT中心,这样设备就能通过终端上报数据到微软云,微软云存放设备上报数据的地方叫iothub,然后iothub可以转发到eventhub(这块可以先不理解)。反正对于我们来说,只需要通过微软SDK从iothub或者eventhub获取这些数据就好了,获取到了后就进行相应的业务处理,这样的程序就是Job。
商用的设备都是通过DTU上报,DTU有个id作为唯一标识,类似864240051071444(15位数字),在平台里称为dtuId或者imei。设备本身也有个唯一标识叫设备编号,类似K37A1922022091602
家用的设备都是通过WIFI上报的,WIFI有个wifiMac作为唯一标识,类似849DC263AEA6,设备本身也有个唯一标识叫设备编号,类似K37A1922022091602
商用和家用不对接,所以稍微了解即可。
全屋比较特殊,不再只是设备和终端,全屋还在设备和终端中间加了个中控,也就是设备-中控-终端。设备没有设备号,而是以蓝牙地址为标识,例如000000001202,蓝牙地址只在当前中控下唯一。中控有中控编码,类似U01D2108311069。终端就是DTU或WIFI,对于全屋来说,刚开始做的时候是只有DTU的,后续加入了WIFI,所以现在是有双终端(双通道)。
项目架构:采用前后端分离,前端分为web管理平台(vue,elementUI,echart)和微信服务号H5(html+jQuery)页面。后端使用JAVA、SpringBoot、MybatisPlus采用分布式架构,分别有device、iot、portal、auth、user、system这几个服务,服务部署到微软云上。
模块:设备管理、用户管理、 设备地图、仪表盘、DTU管理、数据分析、异常管理、系统管理
我负责的模块:前端大屏、H5开发、设备管理、Job处理。