最全面的智能化系统(IBMS)集成平台技术要求,含27个弱电系统
大家好,我是薛哥。最近VIP会员群的读者咨询智能化系统集成管理平台方面的方案,今天分享一个非常全面的介绍方案,包含各个子系统的功能,可以参考一下。
此套完整的word素材,VIP会员下载!
智能化集成系统(IBmS)应根据本项目楼宇的性质、用途特点,采用先进、成熟的技术对整个大楼的弱电子系统,包括但不限于暖通设备管理系统(BAS)、消防自动报警系统(FAS)、公共安全系统(报警、监控系统、门禁系统、停车场管理系统)、智能卡应用系统(门禁系统、停车场管理系统)、信息引导及发布系统、会议系统、智能照明、泛光照明、新风系统智能控等27个子系统以及本业主内部SAP、OA、考勤、微信、一卡通消费进行统一集成,形成一个统一的、相互关联的、相互协调联动的、在同一平台上运行的综合管理系统,实现楼宇信息的高度共享和高效管理。具体项目范围包括如下表:
以计算机网络为基础、软件为核心,将本项目中各个具有完整功能的独立子系统组合成一个有机的整体,建立统一的综合集成管理平台,提高系统维护和管理的自动化水平、协调运行能力及详细的管理功能,能够对各个智能化子系统进行综合管理,满足整个智能化系统预期的使用功能和管理要求,彻底实现功能集成、网络集成和软件界面集成,为巨石科技总部大楼运营提供具有前瞻性和可扩展性的高度模块化、定制化的管理平台提升管理水平。
总体要求:一卡通办、一户通用、一键通达,实现“智慧巨石”。平台架构设计如下图:
系统界面设计标准如下:
大屏看板图 操作界面
子系统显示界面 子系统显示界面
IBmS楼宇集成管理系统包括集成管理控制模块、展示看板模块、报表查询模块,接口通讯模块及预警事件模块。
1)可通过互联网和企业局域网登入浏览器访问,系统集成采用目前先进的数字化/模拟仿真技术,建立可视化看板。
2)采用开放的网络传输协议TCP/IP和OPC控制网络协议,采用浏览器/服务器体系结构。
3)可实现远程的监控和管理操作及数据库访问。
4)实现与办公自动化系统、SAP系统之间信息与数据的交互、共享。
5)提供楼宇分布平面图。可以为用户提供按不同选择排列的区域图,浏览设备分布、设备属性信息、状态参数实时信息等。
6)可以浏览查看监控范围内部的设备的设备分布、维修信息、设备保养维护记录、故障信息、报警记录。
7)可浏览综合保安系统的各种设备、巡更站分布、人员派班、视图巡更路线、门禁记录、维修记录、报警记录以及重大事件处理记录等等。在点击某个摄像设备时,系统提供相应的录像实时和历史播放。
8)数据采集的设备,可快速、实时查询耗用信息,其中包括水、电、气用量等。
9)综合管理系统是各子系统的统一门户,统一授权、集中管理各子系统的管理操作和消费充值,具备各报表数据查询及导入导出功能。通过IBmS系统对各智能化子系统信息和数据的集中管理,可实现各智能化子系统之间信息的交互,并可通过信息引发相应子系统的联动响应程序。
10)IBmS数据库为各子系统的数据之间起到关联沟通的作用,所有跨系统的信息交互都经由IBmS数据库进行交互和沟通。同时消防系统、监控管理系统、门禁系统等相关报警及管理信息和数据通过IBmS数据库交互到指定数据库中,实施联动。
综合管理平台IBmS在员工企业微信端应具备:员工考勤、员工应用、应急物资、访客预约、会议管理、消费充值、员工信息、后勤报修、一键呼梯、消息推送、一键开门等功能。具体功能要求如下表:
微信APP设计
在物业管理中心监控大屏上实时展示关键系统的运行情况、运行数据、预警信息等可视化数据,具体展示信息如下表:
本项目涉及27个子系统及5个管理系统的集成和通讯,需要对相关系统进行统一管理、统一通讯和统一操作,具体集成和通讯系统如下表:
本项目综合管理平台集成各子系统以外,消防、门禁、监控等涉及人员安全及安保要求,建立子系统之间的联动机制,应对突发事件及安保使用。具体要求见下表:
imASTER-B集成平台与各个机电子系统之间,采用标准的通信接口,imASTER-B集成平台可以对接子系统提供的接口协议:
l基于TCP/IP的网络接口协议(OPC、BACnetIP、mODbusTCP);
l基于UDP/IP的网络接口协议(UDP);
lRS485、RS232串口通讯协议;
l厂家私有接口协议(SDK、API、ODBC)
系统由集成网络系统、应用系统(包括各种子系统)和集成管理系统三大部分组成。本系统的管理网是基于以太网,遵循标准的TCP/IP协议进行网络通讯。软件系统采用标准的、开放的编程语言开发,以便后续持续升级。具体工艺及规范要求如下:
Ø硬件设备配置在数据中心和物业管理中心内,包括主机服务器、网关设备、控制台柜等。
Ø对于管理数据的集成,要求控制系统在软件上使用标准的、开放的数据库进行数据交换,实现管理数据的系统集成。
Ø本系统提供浏览器访问模式,中央站同时设置有实时数据库和关系数据库,使智能办公楼智能化控制系统和办公自动化系统实现无缝透明地连接。
Ø本系统采用分布式服务器结构,提供分布式处理的能力,使系统中所有服务器均能分享点数据和报警信息等资源,实现异地操作。
Ø网络结构,楼宇集成管理网使用以太网,遵循标准的TCP/IP协议进行网络通讯。能够满足数据、图像的传输要求,并能够在安全级别的限制下,具备一定的远程诊断和维护能力。
Ø全面采用Internet/Intranet互联网络技术,软件采用.NET技术,以TCP/IP 协议为基础,以浏览和SQL数据库为核心应用,构成建筑及园区各智能化应用系统信息和数据统一的采集、综合、优化、存储、备份、 恢复、传输、浏览、查询、下载的集成平台。
Ø采用网络与自动化实时控制技术,实现络和控制网络信息的融合与互联互通,采用B/S与C/S相结合的计算机应用技术(本工程中采用C/S 方式)实现自动化控制信息的网络化浏览和自动化设备的实时控制操作。
Ø采用开放数据库(ODBC)技术,实现系统集成IBmS综合信息集成数据仓库与各智能化应用系统数据库互联,为各智能化应用系统提供综合信息与数据的共享、交互、备份、恢复。充分保证建筑内信息与数据的安全和可靠。
Ø采用网络安全和用户认证技术。对于局域网内的访问,用户采用通用的“密码+用户名+ID”认证方式,防止未授权的访问,以及非法入侵和破坏行为,确保建筑网络的安全。
最新精品资料介绍
这套弱电资料,汇总了大量的技术文档,313个PPT方案,279个标准规范,60个设计方案,119份图纸素材,8套施工图纸,20套工程量清单,20个施工组织设计,69份visio拓扑图及图块,54个excel表格,完整的施工过程文档及验收文档等等,非常的全面。
lodash那些功能强大的API「JS篇」
作者:JS强迫症患者
转发链接:https://juejin.im/post/5ed3cd366fb9a047f129c39a
本文初衷是想列举一些比较“多余”的API以及对应原生JS写法;后面发现API过多,精力有限,慢慢的变成记录那些有助于提高开发效率的API,希望对您有所帮助。对于那些,根据名字或者描述便能知道其实际用途的API,笔者未做Demo演示。各位看官可以查看对应官方文档便能快速应用于实际开发,Lodash中文API上有详细介绍。
官网:https://www.lodashjs.com/
- lodash那些功能强大的API
- lodash那些“多余”的API及原生JS对应写法
Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。采用函数类API,多数API都不修改传入的参数;
Lodash功能强大,涵盖了前端开发中能遇到的大部分逻辑功能点,使用Lodash能大大提高我们的开发效率。但这也有一个弊端:便利往往会使我们变\”懒\”。仁者见仁智者见智,Lodash带来便利同时,我们应该时刻记住:JavaScript才是我们的根本;
Lodash中“多余”的API并不多余,API内部处理了很多开发者常常忽略的异常情况,使代码更加安全;
对于大部分Lodash API对比手写JS对应逻辑功能点,并不会提高性能;
Lodash,gitHub star数为45K。同时是一个学习教材,通过阅读源码能帮助我们夯实JavaScript基础。函数式API让每个逻辑功能点代码量不大,比较容易理解。基础差的同学可以通过阅读源码,手写源码的方式来夯实JavaScript,比如手写:柯里化,防抖,节流,bind,字符串template等。
- compact(过滤假值)
- concat(数组拼接)
- fill(填充)
- head(获取第一个元素)
- flatten(降1个维度)
- flattenDeep | flattenDepth(降为一维数组)
- fromPairs(entries类型数组转换为对象)
- pull(移除指定元素)
- Array自带的reverse (数组翻转)、slice(切割)、join(字符串拼接)、indexOf | lastIndexOf(匹配索引)等
- difference
- tail(返回不包含第一个元素的数组)
- take (0 – n的元素),如果用于删除数组元素有点\”多余\”
- pullAt (根据下标选择元素,分到两个数组)
- takeRight ( 返回从结尾元素开始n个元素的数组切片 )
- zipObject
- zipObjectDeep
- xor( 创建一个给定数组唯一值的数组 )
- remove(元素筛选,分到两个数组)
- sortedUniq (去重,排序)
- takeRightWhile ( 从array数组的最后一个元素开始提取元素,直到 predicate 返回价值 )
- uniqBy (去重,排序)
Collection很多API都能让人眼前一亮,在实际开发中都能得到应用。
- forEach(遍历数组或对象) | forEachRight(反序遍历数组或对象)
- every(每个元素都符合条件)| some(某个元素符合条件)| filter(过滤)| find(查找第一个)| findLast(查找最后一个)| includes(包含某个元素)。亮点:可以传入一个对象进行匹配
- groupBy(分组)
- invokeMap (分解item:循环调用方法,方法返回值替换集合item)
- keyBy ( 生成对象:组成聚合的对象 ;key值来源于回调,回调参数为对应集合item;value为item)
- orderBy | sortBy(排序:可指定多个排序字段,有优先级;可控制升序和反序)
- partition (站队:根据回调返回值,返回 [ 返回值为true的item数组 , 返回值为false的item数组])
- reject (找茬:找出不符合条件的item集合,类似!filter)
- sample (抽签:集合中随机取一个)
- sampleSize (抽签:集合随机抽取n个)
- shuffle (打乱)
下面列举的是实际开发中应用场景较多的API,具体的用法就不做demo了,具体可参看官网API。
- after(n, func) :调用执行n次后才能执行func
- before(n, func):调用n次后不再执行func,n次后的返回值为第n次返回值
- curry | curryRight :柯里化
- debounce :防抖
- defer : 推迟调用func,直到当前堆栈清理完毕
- throttle :节流
- unary : 创建一个最多接受一个参数的函数,忽略多余的参数
Lang下多为判断类型的API,常规的isXxx判断类型API就不做过多的介绍。下面介绍一些好用的API。
- 克隆系列:clone、cloneDeep、cloneWith、cloneDeepWith
- eq :判断相等,能判断NaN
- isEqual :判断两个对象可枚举value相等,注意不能用于对比DOM对象
- isEqualWith:定制isEqual比较
- isMatch :判断两个对象部分可枚举value相等
- isMatchWith :定制isMatch比较
maxBy(最大值) | minBy(最小值)| meanBy (求平局值)| sumBy (求和)
- inRange:判断大于等于且小于等于。改进实现isInRange
下面只记录让人眼前一亮的API
- at | get :字符串key链路取值
- defaultsDeep :深层设置默认值
- has | hasIn : 判断是否有属性链。有时候为了避免代码报错,需要进行串联取值:const dValue = a&&a.b&&a.b.c&&a.b.c.d。ES2020已定稿增加了操作符:?.来解决上述问题。上面等价写法为:const dValue = a?.b?.c?.d
- invert : key-value反转,返回新对象,新对象为旧对象的value-key;
- invertBy :类似invert,能对新对象的key进行处理;
- mapKeys :处理对象的key,生成新对象;
- mapValues :处理对象value,生成新对象;
- merge | mergeWith :对象合并
- omit | omitBy :剔除对象属性。用在抽取保存到后端数据,后端校验严格,不能有多余字段等场景。
- pick | pickBy:摘选对象属性,功能和omit | omitBy 相反。当要剔除的属性比保留属性多的时候采用pick
- set:字符串key链路设置值,和get对应
API过多,下面只记录Seq让人眼前一亮的API
- chain :解决lodash不能链式调用
lodash的String API多为转换不同值的API,如:首字母大写、驼峰式、html属性式、下划线连接式、全小写、首字母小写、编码、填充,去空格等API。
唯一亮眼的API:template(字符串模板)。可应用于 动态国际化、拼接国际化较优实现
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
作者:JS强迫症患者转发链接:https://juejin.im/post/5ed3cd366fb9a047f129c39a
艺龙网张美蓉:Slarkjs框架-性能优化之离线模板
前言
离线模板目的是性能优化,webapp的性能优化主要是在网络请求和dom操作优化上面进行优化,slarkjs框架的开发理念是SPA(single page application),即单页webapp,单页webapp在性能上面首屏加载所有资源,请求量少,无白屏等,但是考虑实际情况,每个页面的dom结构不可能想似,所以基于单页应用模式的slarkjs是请求部分html,不是请求json,但是页面加载资源类似单页模式,页面切换转场无白屏,首屏加载所有资源。在单页载入下一个页面时,开始回流,渲染增加的dom结构,并运行该页面的js脚本。(对slark框架没有了解的同学可以在此了解一下)。
了解了slarkjs的页面模式以及性能后,说说今天的正题离线模板,离线模板通过缓存模板,则实现了slarkjs页面请求json实现加载另一页面,同时结合Application cahe,实现离线模式下的展示。虽然Application cache的好坏众说纷纭,但是结合一个好的设计方案,还是可以发挥很大的作用。总体的思路就是Slark框架的模式slark框架单页webapp通过Application cache缓存模板,请求json获取模板数据,将模板数据和模板渲染生成dom结构来优化性能。
离线模板原理:
模板:
模板使用采用预编译模式的javascript模板art-template,预编译后,通过增加一个js文件和HTML5的application cache,实现请求json,而不是请求html。虽然manifst的更新会消耗一定的流量,应用场景可以局限在不经常改动的站点。
对于页面异步请求json,避免白屏的问题,在ajax发出之前将模板和空数据结合,并展示不含数据的dom结构,当数据请求返回成功后,在和模板结合,展示带有真是数据的dom结构;
下面介绍一下art-template
其他的javascript模板引擎在对模板变量进行赋值时,渲染都需要动态编译 javascript 字符串完成变量赋值。而 artTemplate 的编译赋值过程却是在渲染之前完成的(这种方式称之为“预编译”)。
artTemplate 模板编译器根据一些简单的规则提取所有模板变量,并声明在渲染函数头部,这个过程就是预编译,预编译的产物就是将编译赋值的过程转为含参数的js函数执行过程。
什么是Cache Manifest?
首先manifest是一个后缀名为minifest的文件,在文件中定义那些需要缓存的文件,支持manifest的浏览器,会将按照manifest文件的规则,像文件保存在本地,从而在没有网络链接的情况下,也能访问页面。
当我们第一次正确配置app cache后,当我们再次访问该应用时,浏览器会首先检查manifest文件是否有变动,如果有变动就会把相应的变得跟新下来,同时改变浏览器里面的app cache,如果没有变动,就会直接把app cache的资源返回,基本流程是这样的。
Manifest的特点:
-
离线浏览: 用户可以在离线状态下浏览网站内容。
-
更快的速度: 因为数据被存储在本地,所以速度会更快.
-
减轻服务器的负载: 浏览器只会下载在服务器上发生改变的资源。
离线模板思路:
slark框架单页webapp通过Application cache缓存模板,请求json获取模板数据,将模板数据和模板渲染生成dom结构来优化性能。
如何实现:
Slark框架之前的单页模式,如下图所示:
Art-template支持node,web应用前现将要缓存模板的页面进行界面和数据的抽离,将分立后的界面预编译生成js文件,使用manifest缓存这个js文件。每次页面跳转只请求数据,传入js函数(art-temptale预编译生成),获取dom,渲染页面。
既然使用了Application cache,为了在Offline模式下可展示,通过localstorage缓存数据,使用以上设计方案后的请求模式:
可以看到离线模板这种方案,离线模式下展示页面前提是用户曾经在Online情况下访问过本页面,浏览器缓存过页面数据,这是离线模板v1.0(首页server端渲染,跳转页面前端渲染)
离线模板v1.0离线刷新回退问题和离线模板v2.0 hash url:
manifest的原理,当其他页面访问已经缓存的资源请求不会发出,只会使用本地的文件,所以离线刷新当前页面后回退,应该调到业务上的上一页面,但是jsonq请求的url和缓存页面的url相同,请求不会发出。
解决方案:json请求增加时间戳;
manifest文件需要写明每个页面的请求路径才可以做到一次在线浏览,offline展示并有动态效果,但是业务上面结合url不是不变的,传的参数不同,浏览器就被认为是不同的文件,所以不惜改slark框架,将原有的url,修改为hash路由(!#!/)。更改slark框架之后的离线模板就是v2.0 hash url。
大家都知道server端不能识别url的hash部分,
原来url:
http://m.elong.com/entry/flight/entry.html?param1=1&¶m2=2
Hash url:
http://m.elong.com/entry/flight/!#!/entry!¶m1=1&¶m2=2
成功解决跳转回退url变化问题,离线时跳转和回退时,浏览器认为url并没有发生变化。这样manifest文件就可以写一个路径http://m.elong.com/entry/flight/
离线模板v2.0 hash url离线刷新先显示首页的问题:
像上面展示的url例子,slark单页模式刷新回退,浏览器认为url就一直是http://m.elong.com/entry/flight/ 这个url服务器端默认entry.html页面,只要这个entry.html带有manifest标签,页面离线模式下list,html,detail.html等页面刷新回退都可以展示,但是问题来了:比如 在线浏览所有页面之后,进入离线模式,刷新list页面,浏览器会先展示entry页面,然后运行js脚本,将已经缓存list页面的json数据,和模板结合,展示list页面。
解决方案:
http://m.elong.com/entry/flight/ 这个url服务器端默认blank.html页面,这个页面是所有页面默认的部分,带有manifest标签,是一个空页面,离线页面刷新后即使加载blank.html,也是一个空页面,通过缓存的list页面数据和模板结合,可以展示list页面;
模板统一:
最后涉及一个问题,就是前后台模板统一,除了需要后台对于提供json以外,还需要前后台统一。这里以后台使用java freemark模板为例子,修改模板art-template的语法以支持freemark语法。
离线模板使用:
离线模板v1.0使用话,就在引用js之前引用预编译生成的js,如果要是用离线模板v2.0,需要在页面路由配置中增加is_frender :true的配置项。
前台项目使用:
-
gruntfile文件中tmod任务中配置项目中要离线的页面路径,生成预编译文件,不使用离线模板的页面不要编译
-
appcachejson文件中增加要缓存的文件路径,生成manifest文件
-
所有的html先引用预编译模板文件,再引用main.js
-
要离线的文件html中<html标签引用manifest文件<html manifest=‘xxx.manifest’
-
业务绑定事件onrender的callback中首先添加空渲染处理方法
-
合并main.js前的main.js,回调第一句core.init(),传入项目的名字,如core.init(‘offline’)
后台项目使用:
-
使用freemark模板,前后台使用模板一致;
-
同一请求路径,可以判断contentType,返回html和特定格式的json;
总结:
离线模板v1.0适合url不含参数的路径,比如http://m.elong.com/entry/flight/index
htttp://m.elong.com/entry/flight/index?index=1&&key=2 这样的就不适合,但是不会出现白屏,首页server端渲染,其他页面前端渲染。
离线模板v2.0hash url 其实适合所有的url,是所有页面前端渲染。但是,有两个缺点;
-
首次加载webapp的页面慢。因为要缓存manifest中的所有文件,所以在首次首屏可能会有些慢,但是之后就会很快。
-
当手机清缓存或者web服务器这边更新manifest文件后都会更新manifest,而且manifest更新时,第一次在线访问更新缓存,但是不会展示更新内容,这一点对于飞机票火车票等即时性的业务来说不适合。
参考文献:
https://github.com/yinyinfurong/art-template
http://www.cnblogs.com/yexiaochai/p/3759959.html
http://www.jq22.com/jquery-info1097
http://blog.csdn.net/fwwdn/article/details/8082433
作者简介
张美蓉,15年应届毕业生,之前实习微商开发,15年任职艺龙网前端框架组开发工程师。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。