硬件管理平台-搭建
简述
之前描述了硬件网关的公共部分的搭建方式,本次回归到硬件管理平台,进行下一步的开发工作。
在开始之前,想先描述下文章后续的思路,该平台涉及了多个项目,来回跳跃式的叙述估计到最后谁也无法看懂了,如果不跳跃,当作伏笔去写,最后伏笔就变成了坑,怕填不完。因此在这里先将大体思路写下来,自己在思维跳走的时候还能根据之前写下的再跳回来,再者如果发现可优化或者可修改的也能进行变更。
项目搭建思路
业务场景
需求
某某甲方需要安装一套系统,通过该系统对办公场所进行硬件物联,甲方的硬件有x,y,z三种硬件,三种硬件都已开发完毕。
实施流程
-
实施前,在公司的硬件产品库选择x,y,z三种硬件,然后进行导出,形成update.zip压缩包,将该压缩包放到空硬件网关程序中给去现场的小A。
-
小A到现场,先安装必要的依赖(例如.NET Framework等),将独立的硬件网关配置程序打开,网关配置程序提示未找到服务需要安装,点击确定进行安装,安装完成后发现了update.zip包并询问是否要更新硬件,选择更新进行解压,解压完毕启动网关服务。配置程序判断网关启动后正常显示,小A根据现场进行进行配置。
- 系统配置:上位机相关配置项
- 系统服务:对硬件网关进行操作
- 网关配置:硬件网关的相关配置项
-
配置完成后,点击下一步,添加现场的硬件设备信息。
该页面主要是利用了反射机制,将x,y,z三种硬件的信息进行展示,小A需要将现场这三种硬件的实际配置项进行填写。
-
页面左侧是硬件类型的树,树的最高级是硬件类型,展开后是同一硬件类型的不同设备,例如海康门禁,中控门禁等。选择特定型号的门禁
-
右侧有输入框表示需要输入的属性,例如门禁需要输入ip地址,用户名,密码等,而空调不需要用户名和密码,只需要设备地址,COM口(或IP地址)等,此区域需动态生成。
-
再向右为调度任务,该处的心跳也为默认定义好的,其中需要输入Cron。
-
非控制类设备添加:有一部分设备可能不需要控制,但也需要在上位机系统进行展示或列出,此时可使用该功能批量生成不需要控制,只需要显示的硬件,其中设备类型为硬件管理平台配置好的。
-
-
配置完成后,点击下一步,判断是否要上传给上位机,上传则是将所有配置的硬件信息上传,再往下为硬件测试页面
- 左侧为上一页添加的控制类信息的树,代表了某一个类型中添加了几个设备。
- 右侧上半部分对应的是该设备设置的相关信息
- 中间部分是可测试的功能,该功能为硬件注入时发现的功能,传入数值需根据实际进行判断,例如设置温度就需要输入温度值,而获取温湿度则不需要。
- 右侧下发为显示内容,发送的命令是否成功等信息在此显示。
-
当小A完成测试,一切都没问题,则实施完成。
在本场景中,涉及到了三个系统,分别为硬件产品库,硬件网关,网关配置程序。
- 硬件产品库:硬件集合,可通过有选择性的导出
- 硬件网关:上一篇文字中公共程序开发的
- 网关配置程序:现场配置信息,测试网关是否能控制硬件。
- 硬件项目:每个硬件都会有一个独立的项目,项目生成的解决方案都放到平台的特定文件就中供产品库拉取。
开发流程
按照场景所描述的,有如下开发流程
- 硬件项目和硬件产品库先行,平台中最核心的就是如何将硬件动态的注入并使用xml和zip进行导出操作。因此最先开发的是硬件产品库,在编写期间会穿插着硬件项目来实现注入,然后再就是完善硬件产品库,最终能导出update.zip包。
- 将导出的update.zip包解压缩,放到公共项目特定的文件夹中,公共项目能进行注入并且根据配置项分解出功能项,功能项应该被分为初始化、调用功能,定时功能三种。
- 初始化为在硬件项目被调用后就触发的功能(这里没有使用构造函数而是将初始化也定义为了一个功能,因为实际情况可能需要调用硬件的实际上信息来操作)
- 调用功能为上位机调用硬件时触发的,例如空调开关,设定温湿度等。
- 定时功能是不定时的调用下位机获取数据,例如获取空调的温湿度;获取的数据再通过定时任务发送给上位机,例如心跳。
- 定时任务中需要引用调度控件,通过批量的调度任务进行下位机的数据获取。
- 网关配置程序最后完成,主要是通过对硬件进行配置和添加,然后通过http协议进行调用,依次来判断网关和硬件项目是否可行。