• [技术干货] 智慧园区脚本注释的原则和写法
    总体原则无用的代码不能以注释形式存在。能用代码说明的尽量不要添加注释,脚本注释尽可能简洁。建议注释统一用英文。出入参不必写注释说明。注释方式在函数方法和结构体的元数据描述上面添加注释。方法内关键业务语句前必须添加注释。方法内的单行注释以“//”开头,应放在相关代码的上方或右方,不可放于下方;若放于上方,注释需与前面的代码间用空行隔开。注释与代码的比例没有量化标准;在删掉所有的代码内容、仅保留代码层级结构和注释,如果通过注释,可以很容易理解方法内都做了哪些事情(类似于伪代码),则认为注释比例合理。
  • [技术干货] 智慧园区脚本开发命名规范
    本节包含脚本中函数、结构体、参数等的命名要求。所有的名称定义要能体现其作用,避免使用缩写(专有名词除外)。Script采用小驼峰命名,例如createDeviceInstance。结构体(struct)采用大驼峰命名,例如QueryPaymentResult。结构体内的字段采用小驼峰命名,例如customerName 。类、枚举值和接口采用大驼峰命名。函数采用小驼峰命名。属性或变量采用小驼峰命名。变量为单数时,命名包含对象名称,如:level1Catalog、level2Catalog。变量为复数时,命名包含集合名称,如:attributeRelationRuleList。
  • [技术干货] 智慧园区选项列表、系统参数、导航菜单的定义规范说明
    选项列表如果对象的字段允许在多个已定义的值中选择一个,使用选项列表Picklist。选项列表的定义示例如图1所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图1 选项列表定义示例显示名称:BO的选项列表需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+选项列表”的固定方式拼接而成。使用中文字符,最长不超过32个字符,选项列表定义:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如DeviceStatus。标签:最多输入255个字符;应该输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。描述:最多输入255个字符;介绍当前PickList的使用场景。选项列表的值定义:PickList取值选项不允许重复;每个取值最多输入64个字符;如果取值是字符类型,采用大驼峰形式命名,不要含有空格或者制表符等占位符,例如Active。系统参数对于业务逻辑中存在可变性的参数(例如对接第三方接口的IP地址),无论是在页面中还是服务编排、Script中,都建议使用系统参数,而不能声明为内部变量。系统参数的定义示例如图2所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图2 系统参数定义示例显示名称:BO的系统参数需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+系统参数”的固定方式拼接而成。使用中文字符,最长不超过32个字符。系统参数:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如ThirdPartyAddress。值:文本类型的参数,取值最多输入255个字符;对于敏感信息(例如第三方系统用户名、密码),需要加密保存;数字类型参数,取值允许输入数字、负号、小数点。描述:最多输入255个字符,介绍当前参数的用途。App导航菜单App菜单需要按照功能聚集,并按照功能关系形成菜单层级。App的菜单定义示例如图3所示,运行显示效果如图4所示。图3 App导航菜单定义示例图4 App导航菜单运行显示的示例每个App均需要设置默认主页;菜单层级最大支持三级,层次过深会导致菜单栏占用过多页面空间,且不利于菜单名称展示(英文菜单尤其明显)。菜单配置约束:标签:标签应直观体现菜单功能,起到功能导航作用;最多输入60个字符,采用中文菜单时,不超过10个汉字;不能包含空格、制表符以及特殊字符。图标:菜单图标不能重复。描述:最多输入255个字符,介绍当前菜单的具体功能。BO配置导航BO的配置导航菜单需要按照功能聚集,并按照功能关系形成菜单层级。BO的菜单定义示例如图5所示。图5 BO配置导航的定义示例BO配置导航的要求与App菜单一致。运营配置运营配置用于租户配置BO的可变项:显示名称:BO的运营配置定义显示名称,用于在“应用管理 > BO配置”菜单下显示的BO名称。应避免与其他可选配置项以及菜单名重复,建议此名称和工程名保持一致以提高区分度。使用中文字符,不要含有制表符或者特殊字符,最长不超过32个字符。布局:只有把配置项从“可选配置”中拖动到“已选配置”后,才可以在BO配置菜单中展现。
  • [技术干货] 智慧园区API和SDK的定义要求
    Rest APIREST中定义工程对外提供的服务。HTTP动词:常用的HTTP动词如下(括号里是对应的SQL命令):GET(SELECT):从服务器取出一项或多项资源。POST(CREATE):在服务器新建一个资源。PUT(UPDATE):客户端提供改变后的完整资源,在服务器更新资源。PATCH(UPDATE):客户端提供改变的属性,在服务器更新资源。DELETE(DELETE):从服务器删除资源。资源路径:URL中不能有动词在Restful架构中,每个网址代表的是一种资源,所以网址中不能有动词,只能有名词,动词由HTTP的动作来表示。URL结尾不应该包含斜杠“/”正斜杠(/)不会增加语义值,且可能导致混淆。正斜杠分隔符“/”必须用来指示层级关系路径中的正斜杠“/“字符用于指示资源之间的层次关系。应该使用连字符“-”来提高URL的可读性,而不是使用下划线“_”一些文本查看器为了区分强调URL,会在URL下加上下划线。这样下划线”_”字符可能被文本查看器中默认的下划线部分地遮蔽或完全隐藏。为避免这种混淆,请使用连字符而不是下划线。URL路径中首选小写字母URL是对大小写敏感的,所以为了避免歧义,尽量用小写字符。补充说明:主机名(Host)和scheme对大小写是不敏感的。应该将API的版本号放入URL另一种做法是,将版本号放在HTTPS头信息中,但不如放入URL方便和直观。URL路径名词均为复数为了保证URL格式的一致性,建议使用复数形式。响应状态码200 | OK :用于一般性的成功返回。201 | Created [POST/PUT/PATCH]:用户新建或修改数据成功。202 | Accepted:用于Controller控制类资源异步处理的返回,仅表示请求已经收到。对于耗时比较久的处理,一般用异步处理来完成。204 | No Content:此状态可能会出现在PUT、POST、DELETE的请求中,一般表示资源存在,但消息体中不会返回任何资源相关的状态或信息。301 | Moved Permanently:资源的URI被转移,需要使用新的URI访问。302 | Found:不推荐使用,此代码在HTTP1.1协议中被303/307替代。目前对302的使用和最初HTTP1.0定义的语意是有出入的,应该只有在GET/HEAD方法下,客户端才能根据Location执行自动跳转,而目前的客户端基本上是不会判断原请求方法的,无条件的执行临时重定向。303 | See Other: 返回一个资源地址URI的引用,但不强制要求客户端获取该地址的状态(访问该地址)。304 | Not Modified:有一些类似于204状态,服务器端的资源与客户端最近访问的资源版本一致,并无修改,不返回资源消息体。可以用来降低服务端的压力。307 | Temporary Redirect: 目前URI不能提供当前请求的服务,临时性重定向到另外一个URI。在HTTP1.1中307是用来替代早期HTTP1.0中使用不当的302。400 | Bad Request:用于客户端一般性错误返回,在其它4xx错误以外的错误,也可以使用400,具体错误信息可以放在body中。401 | Unauthorized: 在访问一个需要验证的资源时,验证错误。403 | Forbidden:一般用于非验证性资源访问被禁止,例如对于某些客户端只开放部分API的访问权限,而另外一些API可能无法访问时,可以给予403状态。404 | Not Found:找不到URI对应的资源。405 | Method Not Allowed:HTTP的方法不支持,例如某些只读资源,可能不支持POST/DELETE。但405的响应header中必须声明该URI所支持的方法。406 | Not Acceptable:客户端所请求的资源数据格式类型不被支持,例如客户端请求数据格式为application/xml,但服务器端只支持application/json。409 | Conflict: 资源状态冲突,例如客户端尝试删除一个非空的Store资源。412 | Precondition Failed:用于有条件的操作不被满足时。415 | Unsupported Media Type:客户所支持的数据类型,服务端无法满足。500 | Internal Server Error:服务器端的接口错误,此错误于客户端无关。SDKSDK表示工程对应用编排提供的API,SDK没有暴露REST接口。BO之间调用,只能使用SDK。
  • [技术干货] 智慧园区工程配置说明
    选项列表如果对象的字段允许在多个已定义的值中选择一个,使用选项列表Picklist。选项列表的定义示例如图1所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图1 选项列表定义示例显示名称:BO的选项列表需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+选项列表”的固定方式拼接而成。使用中文字符,最长不超过32个字符,选项列表定义:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如DeviceStatus。标签:最多输入255个字符;应该输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。描述:最多输入255个字符;介绍当前PickList的使用场景。选项列表的值定义:PickList取值选项不允许重复;每个取值最多输入64个字符;如果取值是字符类型,采用大驼峰形式命名,不要含有空格或者制表符等占位符,例如Active。系统参数对于业务逻辑中存在可变性的参数(例如对接第三方接口的IP地址),无论是在页面中还是服务编排、Script中,都建议使用系统参数,而不能声明为内部变量。系统参数的定义示例如图2所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图2 系统参数定义示例显示名称:BO的系统参数需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+系统参数”的固定方式拼接而成。使用中文字符,最长不超过32个字符。系统参数:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如ThirdPartyAddress。值:文本类型的参数,取值最多输入255个字符;对于敏感信息(例如第三方系统用户名、密码),需要加密保存;数字类型参数,取值允许输入数字、负号、小数点。描述:最多输入255个字符,介绍当前参数的用途。App导航菜单App菜单需要按照功能聚集,并按照功能关系形成菜单层级。App的菜单定义示例如图3所示,运行显示效果如图4所示。图3 App导航菜单定义示例图4 App导航菜单运行显示的示例每个App均需要设置默认主页;菜单层级最大支持三级,层次过深会导致菜单栏占用过多页面空间,且不利于菜单名称展示(英文菜单尤其明显)。菜单配置约束:标签:标签应直观体现菜单功能,起到功能导航作用;最多输入60个字符,采用中文菜单时,不超过10个汉字;不能包含空格、制表符以及特殊字符。图标:菜单图标不能重复。描述:最多输入255个字符,介绍当前菜单的具体功能。BO配置导航BO的配置导航菜单需要按照功能聚集,并按照功能关系形成菜单层级。BO的菜单定义示例如图5所示。图5 BO配置导航的定义示例BO配置导航的要求与App菜单一致。运营配置运营配置用于租户配置BO的可变项:显示名称:BO的运营配置定义显示名称,用于在“应用管理 > BO配置”菜单下显示的BO名称。应避免与其他可选配置项以及菜单名重复,建议此名称和工程名保持一致以提高区分度。使用中文字符,不要含有制表符或者特殊字符,最长不超过32个字符。布局:只有把配置项从“可选配置”中拖动到“已选配置”后,才可以在BO配置菜单中展现。
  • [技术干货] 智慧园区工程命名和目录结构说明
    工程命名规范APP和BO采用统一的命名规范,如表1所示。表1 命名规范参数命名要求标签最多输入80个字符。输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。相关联的工程可以采用相同的前缀进行标识。工程命名可以参考业务架构的2层视图。名称最多输入64个字符。必须以字母开头且只能包含字母、数字和下划线。平台会自动将租户的命名空间添加为应用的名称前缀。描述最多输入255个字符,介绍当前工程的主要功能。工程目录结构APP目录总体结构如图1所示。APP依赖核心BO资产进行逻辑编排。每个APP都是自治的,不能存在APP之间的依赖(Addon应用除外)或者相互间的服务调用。APP目录结构相比BO更简单,对外提供服务的服务编排放在Process目录,不对外的放在Internal目录。图1 APP工程目录示例BO目录总体结构如图2所示。图2 BO工程目录示例Model:存放数据模型,其下包含聚合根Aggregrator和对象Object两个子目录。Process:流程级API,可单向依赖其它资产。Operation:操作级API,提供完整的业务操作。Action:原子级的API,可重用逻辑块。Internal:内部实现。Page:页面,按照具体的业务功能分目录聚合。Event:BO对外抛出的事件。DataAccess:数据接入。目录树命名:APP\BO中目录树中的所有目录都采用全英文大驼峰命名,不要存在空格或者特殊字符。每个目录下的资产按照功能建立子目录以方便区分、管理、查找。对象脚本页面命名:Logic下的Script和服务编排命名:Script采用小驼峰命名,例如createDeviceInstance;服务编排采用驼峰命名,首字母小写,不要携带下划线。Model下的Object命名:采用全英文的大驼峰命名。Page下的页面文件命名:大驼峰英文字母组成,使用连字符“-”来提高可读性,而不是使用下划线“_”。调用约束:BO内:Process–》Operation–》Action–》Internal,下层不允许调用上层逻辑。BO间:只有Process API允许调用其他BO的API;BO间的调用关系,只允许单向调用,不允许循环调用。APP:只能调用其他APP或者BO提供的API。
  • [技术干货] 智慧园区基线BO API请求的组成方式
    资产API符合RESTful API的设计理论。请使用前仔细阅读以下API规格介绍,如无特殊说明,本文中所有资产中包含的API均遵守以下约定。由于AppCube平台的限制,单次查询传入的limit需要小于等于5000;当业务需要的查询数量大于5000时,请分批多次调用该接口。REST API介绍REST从资源的角度来观察整个网络,提供创建、查询、更新、删除等方法访问服务的资源。REST API请求/响应可以分为如下部分:请求URI请求消息头请求消息体响应消息头响应消息体请求URI请求URI由如下部分组成:{URI-scheme}://{Endpoint}/{resource-path}?{query-string}尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。表1 请求URI说明参数描述URI-scheme表示用于传输请求的协议。Endpoint指定承载REST服务端点的服务器域名。resource-path资源路径,也即API访问路径。从具体接口的URI模块获取,例如“/service/v1.0/buddleOfferings.get”。query-string可选参数,例如API版本或资源选择标准。请求方法HTTP方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。表2 请求方法说明方法说明GET请求服务器返回指定资源。PUT请求服务器更新指定资源。POST请求服务器新增资源或执行特殊操作。DELETE请求服务器删除指定资源,如删除对象等。请求消息头可选的附加请求头字段,如指定的URI和HTTP方法所要求的字段。详细的公共请求消息头字段请参见表3。表3 请求消息头说明名称描述是否必选示例Content-Type发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。是业务接口取值:application/json获取access-token接口取值:application/x-www-form-urlencodedContent-Length请求body长度,单位为Byte。否3495access-token当用户通过用户密码或者AK、SK在系统鉴权成功后,后台会生成一个token。下次接口请求时,在请求消息头中带上这个access-token,表示这个用户已经被鉴权过。获取token请参考获取access-token接口。否00000000***a8fcfd450请求消息体该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。响应消息头响应消息头包含如下两部分:一个HTTP状态代码,从2xx成功代码到4xx或5xx错误代码,或者可以返回服务定义的状态码。附加响应头字段,如Content-Type响应消息头。详细的公共响应消息头字段请参考表4 响应消息头。表4 响应消息头名称描述示例Content-Length响应消息体的字节长度,单位为Byte。--Date系统响应的GMT时间。Wed,27 Dec 2016 06:49:46 GMTContent-Type响应消息体的MIME类型。application/json响应消息体该部分可选。响应消息体通常以结构化格式(如JSON或XML)返回,与响应消息头中Content-Type对应,传递除响应消息头之外的内容。发送请求您可以使用多种方式进行资产接口调试:cURLcURL是一个命令行工具,用来执行各种URL操作和信息传输。cURL充当的是HTTP客户端,可以发送HTTP请求给服务端,并接收响应消息。编码通过编码调用接口,组装请求消息,并发送处理请求消息。REST客户端可以使用浏览器插件,发送处理请求消息。例如Postman。字符和字节的换算方法接口中参数的长度说明,一般都是以字节为单位。对于AppCube平台,字符与字节的换算关系如下:1个英文字符占1个字节1个中文字符占3个字节
  • [技术干货] 智慧园区BO简介、资产框架和清单
    一个BO相当于一个完整场景的服务,BO是对系统特性(只限后台逻辑,包括Object、Flow、Aggregator、Business Process、Script)的分类管理。用户可以通过订购和配置,使用BO资产特定的业务功能。BO资产框架图1 BO资产构成Data View:BO的数据视图。Interface:BO对外暴露的接口服务(API)。Event:BO对外暴露的事件。Configuration:BO提供给使用者的配置能力。BO资产清单园区BO资产由以下BO组成:表1 BO资产说明序号资产名称资产描述分类实现模式1设备BO为上层应用提供对设备的统一语义。对设备自身能力进行抽象封装,屏蔽设备对上层业务的差异性,屏蔽设备子系统的连接和集成,不包含对设备的运营运维管理能力。核心服务元数据2告警BO配合告警中心的基线应用,对园区的所有告警提供统一语义。从各个子系统和上层应用获取告警数据,统一模型统一展现,以保证使用告警的业务特性能保持稳定性,以及基于告警的统计分析应用的稳定性。核心服务元数据3空间BO为上层应用提供对空间的统一语义。针对各类园区场景提供空间位置的抽象,通过配置来定义空间层级,提供对空间结构的管理接口及空间位置的查询接口,以使能上层应用能灵活方便的使用空间资源。核心服务元数据4人员BO为上层应用提供对人员的统一语义。主要对自然人的匹配、位置、鉴权进行抽象封装,提供人员匹配、卡证匹配、黑白名单等能力,屏蔽对匹配算法及子系统的差异性。不包含对不同角色的人员的管理,如业主、员工、访客等。不包含对系统用户的管理。核心服务元数据5工单BO为上层应用提供对工单的统一语义。针对各类园区场景提供工单流转的能力,协同不同子系统、以及不同角色的用户一起来完成长流程任务,例如告警处理工单、设施维修工单、物业服务工单等。提供了配置工单模板、工单流程等能力,使能上层应用快速实现流程类特性。核心服务元数据6组织BO为上层应用提供对组织的统一语义。通过配置来定义组织层级,提供对组织机构的管理接口,以使能上层应用基于统一的组织数据来构建管理类特性。通常和员工服务资产配合一起使用。核心服务元数据7身份BO仅针对涉及业务终端用户的业务场景如客户、业主、访客、操作员等,提供身份安全能力上的抽象和封装。包括注册、登录、身份管理等接口服务能力以及角色和业务权限。目前AppCube平台提供的是系统用户(如开发者、运维人员)的统一管理,而身份BO资产提供的是终端用户的统一管理。核心服务元数据8日志BO为基线应用提供统一的审计日志的管理能力。仅针对配置修改类审计日志,不针对调试日志。从各个应用或服务资产中收集日志信息,配合日志管理的基线应用,来提供给运营人员统一的日志管理能力。是业务动作的记录,不是设备或IT系统的记录。核心服务JAVA微服务9模板BO提供统一的模板填充、渲染、下载、打印等能力,以使能上层应用快速构建起基于模板的特性,例如短信邮件通知模板、票据打印模板、告警事件的描述模板、设备画像的图形模板等。核心服务JAVA微服务10视频分析BO视频分析BO提供了视频分析业务逻辑的能力,通过调用接口,能够快速实现场景化定制。孪生服务元数据11视频代理BO对不同厂家的视频子系统的接口做标准化,对上层应用提供统一稳定的视频检测相关接口。孪生服务元数据12GIS服务BO提供对GIS子系统的租户管理、地图管理、位置服务接口的封装和标准化接口。孪生服务元数据13条码服务BO为上层应用提供统一的条码语义。主要是对条形码、二维码等码进行抽象封装,提供条码的新增/刷新/查询条码内容等能力,屏蔽不同码的差异性。核心服务元数据14AI服务BO为AI的应用提供统一的参数管理页面,同时提供应用参数,应用列表和版本信息获取等接口。核心服务元数据15权限BO提供了对园区权限的建模、管理等能力,业务应用调用权限BO提供的接口能力来操控所有权限。核心服务元数据16批量处理BO提供了通用批量文件导入、批量数据导出接口,各业务可以直接使用。核心服务元数据
  • [技术干货] 智慧园区通用APP资产说明以及如何查询通用APP版本
    APP资产清单园区通用APP资产由以下APP组成:表1 APP资产说明资产名称资产描述统一门户APP提供APP的统一入口,同时提供菜单编辑。针对展示内容,提供组件资产、菜单及信息等的增加、删除、更新及查询接口。系统管理APP提供用户管理,权限管理和大屏管理的能力。针对展示内容,提供操作员密码、操作员及相关权限等的增加、删除、更新及查询接口。APP版本查询订购园区解决方案后,登录智慧园区运营中心,单击右上角登录用户账号下的菜单项目“关于”,即可查看已安装应用的版本号,如图1所示。图1 APP版本查询页面
  • [技术干货] [智慧园区]项目中视频调阅调试FAQ汇总,持续跟新
    本贴是园区视频调阅调试FAQ总结帖,持续跟新 1,园区支持哪些视视频转码服务?答:目前支持奥看和登虹 2,园区目前对接哪些视频云?答:目前主要对接了华为的IVS3800, IVS1800。其他平台的暂时还没支持 3,如何调试园区的视频调阅功能?答: 针对不通的使用场景,调试视频调阅功能文档如下20.3 spc2 版本 综合安防 :https://support.huawei.com/bescloud/Smart%20Campus/20.3.0.SPC2/topic/view.do?projectid=623221184&lang=zh&pidid=pid_bookmap_0173399978&topicid=TOPIC_019409820121.2 版本 智慧安防场景:https://support.huawei.com/bescloud/Smart%20Campus/21.2/topic/view.do?projectid=328572906&lang=zh&pidid=pid_bookmap_0000001075549332&topicid=TOPIC_00000010747697634,目前视频码流播放样式有哪几种?画面播放时,有两种播放样式可选择(默认标准):填充:画面铺满播放窗口。该模式不会出现画面两边有黑框的现象。标准:根据获取到的视频流画面按比例播放。该模式不会出现画面压缩变形的情况。5,摄像头不支持云台控制,视频巡更过程通过云台操作上下旋转,无反应,也没有任何提示信息。原因分析只有“球机”类型的摄像头且“设施信息管理”中,摄像头的实例属性中的“摄像机类型”设置为“2”时,才支持云台控制功能。摄像头主要有如下类型:0:固定枪机1:云台枪机2:球机3:半球-固定摄像机4:筒机解决方法如果摄像头不是“球机”类型,界面给出提示信息“此设备为非球机,不支持云台控制”。如果想要云台控制功能,请更换“球机”类型的摄像头。如果是“球机”类型,但是摄像头的实例属性中的“摄像机类型”属性值设置不是“2”时,界面给出提示信息“此设备为非球机,不支持云台控制”。如果想要云台控制功能,请修改该属性值。6,摄像头不支持缩放功能,视频巡更过程通过云台操作放大或者缩小界面,无反应?原因分析目前“枪机”类型的摄像头不支持缩放功能。摄像头主要有如下类型:0:固定枪机1:云台枪机2:球机3:半球-固定摄像机4:筒机解决方法如果摄像头是“枪机”类型,想要缩放功能,请更换其他类型的摄像头。如果摄像头不是“枪机”类型,但是摄像头的实例属性中的“摄像机类型”属性值设置是“0”或“1”时,请修改该属性值为“2”或“3”或“4”。7,摄像头不能回放视频问题现象视频监控中摄像头不能回放视频(如下图)。错误提示信息:This is a modal window.The media could not be loaded, either because the server or network failed or because the format is not supported.图1 报错页面图2 页面请求请求:https://192.168.109.80:32000/service/VideoProxy/0.1.0/playback?async=true&cameraCode=05434850000000000101%23844a6a17272e423789d9d37bf7cb1749&mediaType=MP4&startTime=1602660120000&endTime=1602660180000参数:async=true&cameraCode=05434850000000000101%23844a6a17272e423789d9d37bf7cb1749&mediaType=MP4&startTime=1602660120000&endTime=1602660180000响应报文:{"resCode":"0","resMsg":"成功","result":[{"url":"http://192.168.109.48:8081/snap/054348500000000001012020101407220020201014072300060.mp4?vpath=rtsp%3A%2F%2F192.168.125.7%3A554%2F05434850000000000101%3FDstCode%3D01%26ServiceType%3D4%26ClientType%3D1%26StreamID%3D1%26SrcTP%3D2%26DstTP%3D2%26SrcPP%3D0%26DstPP%3D1%26MediaTransMode%3D0%26BroadcastType%3D0%26SV%3D1%26TimeSpan%3D20201014T072200Z-20201014T072300Z%26Token%3DV31YwEeQ-6XzziE8sAOaMJa-pUp-4Hqw%26Multiplex%3DARrkCJ8KNbGZBEOdmABlZ3gwqTc8HA3I%26DomainCode%3D4cab6ad0e3fc4de1a5bd20b70fcb2c0a%26UserId%3D6%26\u0026duration=60\u0026offset=0\u0026scale=255"}]}原因分析返回的url是http格式的地址,https的页面上播放http的url会出现播放异常问题,需要获取https的播放地址。解决方法调用“获取回放地址”接口时,“protocolType”参数的值需要设置为“2”,接口详情请参见《业务资产说明》或者参考https://support.huawei.com/bescloud/Smart%20Campus/21.2/topic/view.do?projectid=328572906&lang=zh&pidid=pid_bookmap_0172866781&topicid=TOPIC_02015550138,dmax上面预置视频播放组件不能显示视频问题现象1、dmax上面预置视频播放组件不能显示视频2、上面的prefix到底是配置什么?文档里没有写清楚。解决方法单独使用视频播放组件无法直接放视频。需要用其他组件将下图这个动作的变量传过来 事件与动作的配置可以参考以下文档:https://support.huawei.com/bescloud/BES%20Cloud%20Open%20Platform/1.2/topic/view.do?projectid=bes_cloud_platform_zh&lang=zh&pidid=pid_129668509270112493999&topicid=ZH-CN_TOPIC_01851519769,从roma获取摄像头视频流url,使用本地VLC能够播放,但IOC请求视频流url失败问题现象1、点击右侧摄像头列表: 2、查看network:* 视频代理BO的接口:/service/VideoProxy/0.1.0/liveservice/VideoProxy/0.1.0/live 返回一个视频流url (url正确,与roma侧调试的一致)* 请求这个视频流url 请求失败:  3、复制这段视频流url,在本地使用VLC工具,打开串行流,能够正常播放视频:  原因分析 IOC是https协议的,而视频地址是http的,所以无法正常请求解决方法将视频地址换成https协议即可
  • [技术干货] [智慧园区]项目中GIS地图调试FAQ汇总,持续跟新
    本贴是统一地理空间服务对接调试FAQ总结帖,持续跟新1,什么是统一地理空间服务?答:在IoT业务中,有许多场景需要业务应用和GIS系统产生交互,包括展示设备、展示告警、展示规划路径、展示人员热力、获取设备位置等。为了使业务应用的开发人员能    更方便高效地实现与GIS系统交互的功能,园区对GIS系统相关的交互进行业务抽象,封装为统一地理空间服务。它包括如下三个部分:GIS BO,用于管理GIS厂商的连接信息以及地图实例数据对应关系。GIS SDK(2D/3D),封装各个GIS厂商的SDK,对业务提供了归一化的SDK,供页面集成。伙伴可以基于GIS SDK开发项目特定的Widget。GIS Widget,基于AppCube提供的GIS组件,可以直接被AppCube开发的IOC或者高级页面集成。2 ,园区已经对接了哪些GIS厂商的地图?答: 对接了伟岸纵横2D、3D,超图2D、3D,中地数码,数字冰雹,51 VR,睿呈时代,或者其他的互联网地图,如高德,百度. 3,项目中该如何调试地图?答:项目中调试地图分为两部分:,AppCube与GIS对接https://support.huawei.com/bescloud/Smart%20Campus/21.2/topic/view.do?projectid=1150885542&lang=zh&pidid=pid_bookmap_0000001137862713&topicid=TOPIC_0000001132788016,GIS服务的配置https://support.huawei.com/bescloud/Smart%20Campus/20.3.0.SPC2/topic/view.do?projectid=623221184&lang=zh&pidid=pid_bookmap_0173399978&topicid=TOPIC_0000001184756498 4,项目中使用的地图,不在已经对接的地图范围内的地图,该如何对接?答:如果不在已经对接范围内,那么项目中需要伙伴或者GIS厂商按照标准说明自行对接,主要有以下两点,1,开发地图与园区GIS BO的适配器。2,在App Cube中配置地图服务的Nginx 代理。具体操作可以参考:https://support.huawei.com/bescloud/Smart%20Campus/21.2/topic/view.do?projectid=1150885542&lang=zh&pidid=pid_bookmap_0000001137862713&topicid=TOPIC_0000001132788054 5,GIS BO中上传数据包报错,导致地图数据包上传报错的原因是厂商地图服务器出现问题。问题现象在GIS BO的地图权限管理上传数据包,会看到如下图所示的报错信息原因分析地图厂商服务器出现问题,导致数据包上传失败。解决方法联系地图厂商解决服务器问题。查看运行态是否可以正常加载出地图,若能加载出地图则说明厂商服务器已经恢复正常。  6,运行态报地图实例找不到问题,导致地图加载不出来的原因是没有给使用项目的页面添加地图实例,导致页面无法显示地图?问题现象在运行态页面地图加载不出来,如下图1所示的报错,按下F12,会看到如下图2所示的报错信息。图1 报错信息1图2 报错信息2原因分析GIS BO的地图权限管理中没有配置地图实例或者地图实例被删除了,导致运行态加载地图找不到地图实例。解决方法登录AppCube平台。单击“管理>应用管理>BO配置”。单击“GIS”,进入GIS管理界面单击“地图权限管理”,进入地图权限管理界面。单击“动态地图属性”,进入动态地图属性配置界面。单击地图所在的项目名称操作列下的编辑图标,进入项目地图属性详情界面单击“地图类型”选择所需的地图,例如选择伟岸纵横地图,选择地图类型名称,例如伟岸纵横地图名称areaJwazh完成配置后,单击“保存”。进入运行态界面,可看到地图加载出来,按下F12,即可查看到之前的报错已经解决。   
  • [技术干货] 智慧园区开发租户升级前如何备份定制应用和定制IO资产
    在租户升级之前,需要备份在数字平台开发环境上定制的代码。例如:应用(含Addon应用),定制的IO资产。AppCube上的定制应用备份参考随基线版本发布的文档《华为智慧园区解决方案 XXX 二次开发指南》的“获取应用的zip包”和“归档应用的实例化数据”章节进行备份定制应用。ROMA上的定制IO资产备份支持直接从ROMA平台导出IO包到本地。登录ROMA平台。选择“管理控制台 > 模型管理 > 导入导出管理”,进入“导入导出管理”界面。对于多个IO的情况:导出后,如果后续需要通过ROMA前台再导入到目标环境,多个IO包请同时导出,即导出为一个zip包。导出后,如果后续需要通过工具从ROMA后台再导入到目标环境,多个IO包请分别导出,即每个IO导出一个zip包。图1 导出IO勾选需要导出的IO后,单击“导出”,可以将IO包保存到本地。
  • [技术干货] 智慧园区如何创建运营中心系统管理员账号
    创建系统管理员账号“系统管理员”是园区基线版本预置的一个角色,具有智慧园区运营中心(SmartCampus Operation Center,以下简称IOC)所有菜单的操作权限。属于“系统管理员”角色的用户账号,一经创建就不允许修改角色,也不能重置密码。登录AppCube平台。依次选择“管理>应用管理>应用导航”,搜索“System Management”。单击预览按钮,进入系统管理运行态。选择“用户管理”,单击“创建”,弹出“创建用户”对话框。输入用户账号等信息,选择“用户角色”为“系统管理员”,选择“添加组织”的组织为“集团有限公司”和组织岗位为“经理”,单击“确定”,创建完成。首次登录,系统会强制要求修改初始密码。切换“统一门户”应用页面,单击后,单击“单击进入智慧园区运营中心”。跳转到如下登录页面表示系统正常。图1 IOC页面输入管理员账号登录IOC,单击各个子菜单检查业务显示是否正常。
  • [技术干货] 智慧园区如何配置批量操作原生服务
    原生服务客户端配置在客户端需要创建并配置OAuth鉴权信息。创建子账号。因为沃土平台的要求,必须先完成租户实名认证,才能新增子账号。访问沃土数据平台官网。使用客户AppCube租户账号登录。鼠标放在界面右上角的租户名称上,单击“个人中心”。选择“我的账号 > 子账号管理”,进入子账号管理界面。单击“新增”。填写账号名、密码、邮箱、手机号。单击“提交”。账号名建议配置为租户名_Batch_API_USER。修改子账号的Profile。使用客户AppCube租户账号登录AppCube生产环境。选择“管理 > 用户管理 > 用户”。在用户列表中可以看到上一步在华为沃土数据平台上创建的子账号。该子账号的默认Profile是“Developer Profile”。单击用户名,打开用户编辑界面,将其Profile修改为“BatchServiceProfile”。选择“管理 > 系统管理 > OAuth”,单击“新建”创建一个OAuth。“用户”选择上一步创建的用户。创建成功后,在OAuth界面单击后面“操作”列中的下载文件,获取client_id和client_secret。选择“管理 > 应用管理 > BO配置”。单击“BatchFile”,进入批量操作BO配置页面。单击“租户鉴权配置”,单击“新建”配置。鉴权ID和鉴权密钥分别为3中获取的client_id和client_secret。每个租户只能配置一条记录,如果已存在可以直接修改。单击“批量参数配置”,单击“新建”配置相关参数。配置“BATCHFILE_STORAGE”为“SmartCampus__Object_Storage_Restricted”。批处理相关文件保存的文档使用的对象存储代理连接器。图1 模板参数配置
  • [技术干货] 智慧园区如何配置模板原生服务
    背景说明当某一个租户下安装的原生服务需要提供给其他租户服务时,安装了的原生服务的租户为服务端,需要使用原生服务的租户为客户端。在客户端还需要配置原生服务的相关参数和AppCube平台的URL地址。操作步骤以其他需要使用原生服务的租户用户登录AppCube平台。选择“管理 > 应用管理 > BO配置”。单击“Template”,进入模板BO配置页面。单击“模板功能配置”,若是参数不存在,则新增以下相关参数;若参数已存在,则修改其参数值。表1 新增模板参数参数名说明BUCKET桶名称。取值请在“应用管理 > 连接器 > 对象存储代理”中获取对应对象存储代理使用的桶名称。建议获取SmartCampus__FileOperator对象存储代理使用的桶名称。CONNECTOR_NAME连接器名称。取值请在“应用管理 > 连接器 > 对象存储代理”中获取对象存储代理的名称。建议值:SmartCampus__FileOperator。单击“系统参数配置”,配置TemplateBO_URL系统参数。TemplateBO_URL设置为提供原生服务的AppCube平台的URL,例如https://abc_dev.test.com。
总条数:784 到第
上滑加载中