• [技术干货] 【LinkSoft】【LinkFlow】FAQ
    【上传mp3格式文件失败】1、问题描述上传mp3格式文件失败2、问题分析linkflow当前版本只支持以下格式的文件入参:.keytab,.csv,.zip,.txt,.json,.zip,.yaml,.csv,.xlsx,.xls,.req,.png,.jpg,.bmp,.jpeg【敢为IOT同步物模型第一属性发生变化】1、问题描述物模型同步到敢为IOT第一个属性会发生变化  设备BO中的所有物模型同步到敢为IoT后,第一个属性都会被修改为originalData,如下图所示。经敢为iot研发排查,appcube向敢为同步时接口中的消息里带的就是这个参数。请协助检查基线中物模型相关代码是否存在问题。 解决方案版本为ecampuscore22.22、问题分析跟IO研发确认这里的逻辑应该是新增一个字段,而不是覆盖第一个字段,这是一个bug3、解决方案规避方法:修改io中的代码,修改逻辑为增加一个originalData字段(而非覆盖第一个属性) 具体修改位置:敢为IOT-服务连接-API开发-修改物模型;【外部工具调用API】1、问题描述外部工具(postman)无法调用linksoft接口 使用linksoft地址+API路径无法调用2、问题分析外部工具调用linksoft接口的方式:https://ip+端口+API路径3、解决方案1、确保外部网路与ulab开发环境网络打通; 2、登录eCampusCore平台,进入API网关-API测试中获取接口调用路径; 3、然后采用https://ip+端口+API路径的方式调用;【调用第三方服务报错 The service access whitelist control has been enabled】1、问题描述在linksoft定制开发接口调用第三方服务报错: errMsg": "The service access whitelist control has been enabled. The service you want to access is not authorized. Contact the admin user to configure it2、问题分析没有配置服务方的白名单3、解决方案1、admin账号登录eCampusCore平台,进入子系统接入 选择集成开发-集成资产开发; 2、选择对应的的应用,然后选择服务接入开发下面的服务访问白名单,点击新增将第三方服务的地址配置到白名单;4、总结ulab访问第三方需要将第三方的ip和端口添加至白名单【异常捕获】1、问题描述link代码里做代码运行异常处理失败 背景:调用错误的url造成代码异常报错。在link环境使用try catch捕捉异常,捕捉失败,看了基线link的代码也没有做校验,请问在这块有什么好的方法能捕捉到异常吗 报错信息:Authorization failed2、问题分析咨询类3、解决方案23.0版本只要接口调通,就算执行成功,并不会跳转到catch里,因此无法用catch捕获; 接口实际的401等错误,一起存放在返回的body中,建议在try中增加逻辑判断,判断返回码不等于200,自行进行异常处理;4、总结1、linksoft接口调用没有日志可以查看; 2、可以通过在try中增加逻辑判断,判断返回码不等于200,然后就跳到异常处理查看错误码;【Linkflow脚本消费topic时通时不通】1、问题描述伙伴定义的linkflow脚本消费topic失败(时好时坏)伙伴反馈一段时间正常,一段时间不通2、问题分析topic消费回调接口网关测报错406,网关被限流 3、解决方案需要伙伴根据自己的业务诉求重新调整api网关的流控配置【服务接入-API开发参数GET传递问题】1、问题描述在开发数据API时,需要使用in语句,API中应该如何传参,sql中直接使用in参数列表的形式会报错2、问题分析咨询类问题3、解决方案api传参时,对入参进行拼接,在sql语句中使用regexp_split_to_table对字符串进行分割,放到in语句中【服务接入-httpClient使用代理方式调用第三方api】1、问题描述httpClient有么有办法支持代理方式调用2、问题分析咨询类问题3、解决方案   ①、导入类"com.huawei.livedata.lambdaservice.config.ClientConfig"   ②、配置请求路径和代理:      config.setUrl(""https://10.10.10.10:1234/service/abc"");       config.setMethod(""POST"");       config.setHttpsProxy(""https://192.168.10.10:1234"");   ③、实例化HttpClient,并且传递代理配置   ④、发送接口请求:httpExecutor.callPostAPI(host,service,reqBody,JSON.stringify(headers),ContentType);"【服务接入-linkflow透传第三方文件下载接口,下载后的问文件无法打开】1、问题描述伙伴在开发时,使用linkflow透传第三方文件下载接口,下载后的问文件无法打开2、问题分析linkflow代码不支持返回流文件3、解决方案  ①、在linkflow中将文件流进行base64编码。  ②、第三方调用的时候在进行base64解码,获取文件流【库函数:com.huawei.livedata.lambdaservice.util.MD5Encoder如何使用】1、问题描述com.huawei.livedata.lambdaservice.util.MD5Encoder 这个类怎么在ecampuscore使用, 目前MD5Encoder.md5('')2、问题分析咨询类问题3、解决方案第一步:导入类。第二步:new一个实例。第三步:调用实例的md5方法加密字符串【服务接入-创建数据api使用like查询表数据时报错:Executor Exception: stmt is null】1、问题描述在创建数据api使用like查询表数据时报错:Executor Exception: stmt is null2、问题分析linkflow数据api开发like查询语法不支持3、解决方案api传参时,对入参进行拼接,在sql语句中使用concat对字符串进行拼接,放到like语句中【服务接入-数据api开发时如何根据是否传了入参来执行不同的sql语句】1、问题linkflow数据api开发时如何根据是否传了入参来执行不同的sql语句2、答案linkflow数据api开发时可以使用中括号[]标记可选参数,从而实现根据是否传了入参来执行不同的sql语句
  • [技术干货] 【LinkSoft】【DataLink】FAQ
    【fromTime和toTime字段如何传参】1、问题描述datalink任务,增量采集时,fromTime和toTime字段如何传参2、问题原因1、当接口为GET时,会自动将fromTime和toTime字段传递至parameter中; 2、当接口为POST时,会自动将fromTime和toTime字段传递至body;3、解决方案1、当接口为GET时,会自动将fromTime和toTime字段传递至parameter中; 2、当接口为POST时,会自动将fromTime和toTime字段传递至body;【datalink任务更新字段】1、问题描述datalink任务如何在数据库原数据基础上更新部分字段? 表同步到表,根据 modifyTime进行增量更新,现在源表的一条数据发生内容改变,期望任务同步后目标表那条数据同样变更,实际情况是日志显示操作了那条数据,但是目标表没有变化2、问题原因datalink任务支持数据同步时更新字段,首先需要保证在目标表中设置一个主键,然后再执行DataLink任务,就会先插入数据,如果有存在同样的主键就会根据主键执行数据更新3、解决方案在目标表中设置一个主键,然后再执行DataLink任务,就会先插入数据,如果有存在同样的主键就会根据主键执行数据更新;更新前的目标表修改原表数据,操作新增一条数据、修改一条数据执行同步任务,目标表中成功新增一条数据,并且根据主键将原有数据dr002更新成dr009【数据抽取错误】1、问题描述Ulab数字平台数据接入批量手动调度,数据抽取不正常  Ulab数字平台中(Hxxtech__会议室管理系统)下的4个数据接入任务进行批量手动调度,数据抽取不正常,显现如下: 1,sync_room_info 没有成功抽取数据到目标表, 源表 157条数据。 2,sync_report 同步抽取数据存在缺少。 成功同步 3425条数据, 源表5267条数据。 3,sync_room_device 同步抽取数据存在缺少。 成功同步 83条数据, 源表407条数据。 2、问题原因datalink任务数据源配置错了,配置的数据源表不是目标表3、解决方案重新配置数据源4、总结需要尽量避免因基础配置造成的错误【定时任务执行失败】1、问题描述Ulab环境园区数字平台很多Fdi数据同步任务会出现数据同步异常 【操作步骤】 1、在园区数字平台的设置FDI定时任务; 2、多等一段时间后查看任务的运动状态; 3、发现任务调度会频繁出现调度失败,影响数据抽取,影响页面数据展示,不仅仅是一两个任务会出现这种问题;2、问题原因定时任务失败有两种原因: 1、因数据库中没有数据,datalink任务直接停止,这种是正常的处理机制; 2、任务执行完成,实际已经将数据写入数据库,只是日志返回报错(这是一个日志bug,已经在23.1修复),但不影响业务开发;3、解决方案定时任务失败有两种原因: 1、因数据库中没有数据,datalink任务直接停止,这种是正常的处理机制; 2、任务执行完成,实际已经将数据写入数据库,只是日志返回报错(这是一个日志bug,已经在23.1修复),但不影响业务开发;【无法创建数据接入任务】1、问题描述Ulab环境数字平台不能正常创建数据接入任务  园区数字平台中数据联接下的数据接入,表单或编排模式都无法正常创建数据同步任务。2、问题原因无法以源表名为spms-cloud-appointment.meet_room创建数据接入任务,根据数据源数据库的命名规范要求数据库命名不能带有中划线3、解决方案按照数据源数据库的命名规范命名,去除中划线,然后创建数据接入任务成功4、总结数据接入任务的数据源数据库不能以中划线命名
  • [技术干货] 【LinkSoft】【Msglink】FAQ
    【订阅Topic报错】1、问题描述项目中订阅MsgLink的Topic报错2、问题原因1.伙伴的测试环境Linux机器没有路由到VPN所在的堡垒机 ;2.由于ulab开发环境断电重启后,MsgLink的安装节点漂移,但是前端显示的对外调用地址没变;3、解决方案1.配置Linux机器路由到VPN所在的堡垒机: route add -net 10.40.0.0(ip前两位) netmask 255.255.0.0 gw 10.40.xx.xx(vpn所在的堡垒机)--伙伴侧配置 2.登录linkSoft集群,查看MsgLink的link-umpconnector的pod所在的nodeIp,作为开放ip配置到Ulab环境的Iptables内--服务端配置4、总结该问题是因网路环境没有配置好和业务服务端变化引起 【MQS消息积压】1、问题描述【Ulab环境】Ulab环境ROMA MQS消息积压 T_IO_DEVICE_DATACHANGED topic消息积压2、问题原因AppCube中订阅topic的数据接入对象的状态是close,因此产生的消息没有被消费3、解决方案启动订阅T_IO_DEVICE_DATACHANGED__后缀的数据接入,积压的消息慢慢在减少,消费成功4、总结1、topic发布订阅成功后,可以在消息查询中查看消息的生产和消费情况,并判断消息停在哪一步; 2、订阅topic后需要配置并开启对应的Appcube数据接入和link作业任务; 3、开发环境中为了节省资源,如果24小时没有消费数据接入就会自动关闭,下次使用需要手动启动;
  • [技术干货] 【LinkSoft】【资产管理】FAQ
    【如何获取IOInstallTool】1、问题描述去除IO资产前缀工具无法从support获取23.1版本资料中写的联系运营人员2、问题原因咨询类3、解决方案有使能运营人员从版本包中下载对应版本工具包,使用公共邮箱传递给伙伴【使用IOInstallTool报错NoSuchFileException】1、问题描述IO资产使用工具去除前缀报错:NoSuchFileException2、问题原因版本bug,导出的资产中没有API,APIGW.json文件为空,工具未处理,直接报错3、解决方案将APIGW.json文件内容修改为[] 
  • [技术干货] 【LinkSoft】【GateWay】FAQ
    【获取网关地址】1、问题描述ulb环境 linksoft调用网关地址是多少2、问题原因咨询类3、解决方案获取网关地址参考文档:https://support.huawei.com/enterpriseics/hwics.do?nid=EDOC1100314018&pidid=pid_bookmap_0000001572030945&docnavid=DOCNAVE39DA7EC6BD74C66B10AA5D965064DD7&topicid=TOPIC_0000001562979190
  • [问题求助] 【Ulab23.2 LinkDeviceSDK对接】平台所有设备页面导出设备导出设备失败
    租户账号:Hizrtech环境信息:eCampusCore 23.2.0 LinkDevice Java SDK问题一句话总结:平台所有设备页面导出设备提示鉴权失败,导致无法导出设备相关截图:
  • [问题求助] abc文档事例出错,AES无法加密,请问怎么用这个
    如图 说是秘钥少,我用java生成的256位秘钥也不行
  • [问题求助] 【Ulab23.2 LinkDeviceSDK对接】业务侧重启扩展连接器时报SCException:initialize failed,Err=ERR_REPEAT_INIT result=1002
    租户账号:Hizrtech环境信息:eCampusCore 23.2.0 LinkDevice Java SDK问题一句话总结:因为clientInit方法是静态创建ClientConnect对象,这导致业务适配时无法二次启动,会报重复初始化;同理,一个程序进程里无法配置多个扩展连接器,也是报相同的错误。错误日志:com.huawei.seccomponent.common.SCException: initialize failed,Err=ERR_REPEAT_INIT result=1002     at com.huawei.seccomponent.crypt.CryptoAPI.validateInitStatus(CryptoAPI.java:163)     at com.huawei.seccomponent.crypt.CryptoAPI.initializeWithConfig(CryptoAPI.java:156)     at com.huawei.ecampus.linkdevice.sdk.utils.CryptUtil.initSCC(CryptUtil.java:61)     at com.huawei.ecampus.linkdevice.sdk.module.BaseClient.<init>(BaseClient.java:77)     at com.huawei.ecampus.linkdevice.sdk.module.ClientConnect.<init>(ClientConnect.java:89)     at com.huawei.ecampus.linkdevice.sdk.module.ClientConnect.clientInit(ClientConnect.java:108)
  • [问题求助] 【Ulab23.2 LinkDeviceSDK对接】扩展连接器数采配置详情页新增、修改、删除点位配置问题
    租户账号:Hizrtech环境信息:eCampusCore 23.2.0 LinkDevice Java SDK问题一句话总结:在数采配置界面新增、修改、删除点位配置时下发的全量配置都是走的add消息命令,而开发文档中描述是有add/delete/update三种消息命令,请问这delete/update命令是什么场景下适配。相关截图:
  • [问题求助] 调用esight查询网络服务器列表接口,报错
    esight接口文档:roma里面调用脚本:入参和接口的调用方式都检查了,没问题,但是接口一直报can not find api,请看到问题,联系我电话:15755136053,或者邮箱:gengxinyu@chinasoftinc.com
  • [问题求助] 【LinkDeviceSDK对接】Ulab23.2根据连接器模板注册设备连接器时需要手动输入协议类型
    租户账号:Hizrtech环境信息:eCampusCore 23.2.0 LinkDevice Java SDK问题一句话总结:自定义连接器模板时配置了协议类型字段protocol,在注册连接器关联自定义模板时并没有自动关联协议类型,而是需要手动输入;如果不输入协议类型,则下发的全量配置没有protocolType字段,而根据开发文档描述这个字段是必选的。
  • [问题求助] 【LinkDeviceSDK对接】Ulab23.2下发连接器全量配置时连接配置信息多了一层connectionInfo
    租户账号:Hizrtech环境信息:eCampusCore 23.2.0 LinkDevice Java SDK问题一句话总结:Ulab平台导入自定义扩展连接器模板,创建好物模型分类、物模型、设备、连接器、连接通道,并在连接通道配置一个点位信息,SDK客户端接收到下发的全量配置,检查下发的配置JSON字符串格式,发现多了一层connectionInfo。自定义扩展连接器模板:{  "tplId": "ModbusRtuTemplate",  "name": "ModbusRtuTemplate",  "description": "ModbusRtu连接器配置模板",  "protocol": "ModbusRtu",  "datasourceMeta": {    "configTabs": [      {        "key": "connectionInfo",        "name": "连接信息",        "description": "连接信息",        "configItems": [          {            "key": "host",            "name": "从站地址",            "description": "modbusRtu从站地址",            "required": true,            "crypted": false,            "dataType": "string",            "max": 15,            "example": "192.168.1.20"          },          {            "key": "port",            "name": "从站端口",            "description": "modbusRtu从站端口",            "required": true,            "crypted": false,            "dataType": "string",            "max": 5,            "example": "502"          },          {            "key": "connectionModel",            "name": "连接模式",            "description": "网络连接模式,分为长连接和短连接",            "required": true,            "crypted": false,            "dataType": "enum",            "max": 64,            "example": "长连接",            "enum": "长连接,短连接"          },          {            "key": "connectionType",            "name": "连接类型",            "description": "网络连接类型,分为服务端和客户端",            "required": true,            "crypted": false,            "dataType": "enum",            "max": 64,            "example": "服务端",            "enum": "服务端,客户端"          },          {            "key": "registerLargestNumber",            "name": "单次最大读取寄存器个数",            "description": "ModbusRtu单次最大读取寄存器个数",            "required": true,            "crypted": false,            "dataType": "integer"          },          {            "key": "samplingInterval",            "name": "采集间隔",            "description": "ModbusRtu采集间隔",            "required": true,            "crypted": false,            "dataType": "integer"          },          {            "key": "samplingIntervalUnit",            "name": "采集单位",            "description": "ModbusRtu采集间隔单位",            "required": true,            "crypted": false,            "dataType": "enum",            "max": 64,            "example": "毫秒",            "enum": "毫秒,秒,分,时"          }        ]      }    ]  },  "pointMeta": {    "configItems": [      {        "key": "siteNo",        "name": "站点号",        "description": "站点号",        "required": true,        "crypted": false,        "dataType": "integer",        "category": "device",        "min": 1,        "max": 255,        "example": "1"      },      {        "key": "functionCode",        "name": "功能码",        "description": "功能码",        "required": true,        "crypted": false,        "dataType": "enum",        "category": "product",        "max": 64,        "example": "线圈寄存器(01H)",        "enum": "线圈寄存器(01H), 离散输入寄存器(02H), 保持寄存器(03H), 输入寄存器(04H)"      },      {        "key": "registerAddress",        "name": "寄存器地址",        "description": "寄存器地址",        "required": true,        "crypted": false,        "dataType": "integer",        "category": "product",        "min": 0,        "max": 65535,        "example": "0"      },      {        "key": "registerNum",        "name": "寄存器个数",        "description": "寄存器个数",        "required": true,        "crypted": false,        "dataType": "integer",        "category": "product",        "min": 1,        "max": 255,        "example": "1"      },      {        "key": "jep",        "name": "公式转换",        "description": "公式转换",        "required": false,        "crypted": false,        "dataType": "string",        "category": "product",        "max": 256,        "example": "N * 10 + 1"      },      {        "key": "dataType",        "name": "数据类型",        "description": "数据类型",        "required": true,        "crypted": false,        "dataType": "enum",        "category": "product",        "max": 256,        "example": "bool",        "enum": "bool, int, unsigned-int, float, string"      },      {        "key": "byteOrder",        "name": "字节顺序",        "description": "字节顺序",        "required": false,        "crypted": false,        "dataType": "enum",        "category": "product",        "max": 256,        "example": "ABCD",        "enum": "ABCD, CDAB"      },      {        "key": "readWriteType",        "name": "读写类型",        "description": "读写类型",        "required": true,        "crypted": false,        "dataType": "enum",        "category": "product",        "max": 256,        "example": "只读",        "enum": "只读, 只写, 读写"      }    ]  }}SDK接收到的全量配置:{     "pointsInfo":     [         {             "connectionId": "ModbusRtu-Test-5D550945A4B7DFB7",             "connectionInfo":             {                 "connectionInfo":                 {                     "host": "172.16.150.59",                     "port": "502",                     "connectionModel": "长连接",                     "connectionType": "客户端",                     "registerLargestNumber": 10,                     "samplingInterval": 5,                     "samplingIntervalUnit": "分"                 }             },             "properties":             {                 "00000000":                 {                     "siteNo": 1,                     "functionCode": "保持寄存器(03H)",                     "registerAddress": 1,                     "registerNum": 1,                     "dataType": "int",                     "readWriteType": "读写"                 }             }         }     ] }开发文档全量配置样例:{     "mid": "test12345",     "msgType": "protocolConfig",     "cmd": "add",     "paras":     {         "pointsInfo":         [             {                 "protocolType": "opcua",                 "connectionId": "channel1",                 "connectionInfo":                 {                     "reportCycle": 2000,                     "dbaddress": "opc.tcp://121.xx.xx.61:14449/OpcUaServer"                 },                 "properties":                 {                     "0000AB11":                     {                         "name": "point1",                         "primaryType": "int",                         "propertyType": "readWrite",                         "equipid": "ns=2;s=Random.Int1"                     },                     "0000AB12":                     {                         "name": "point2",                         "primaryType": "string",                         "propertyType": "readOnly",                         "equipid": "ns=2;s=Random.Time"                     }                 }             }         ]     } }
  • [问题求助] Java版LinkDeviceSDK对接Ulab23.2的linkdevice平台初始化耗时过长的问题
    环境信息:eCampusCore 23.2.0 LinkDevice Java SDK问题一句话总结:调用clientInit方法耗时十几分钟,接收到connected回调方法后平台扩展连接器还是处于未激活状态问题日志:2024-06-11 21:24:35 [main] [com.example.linkdevice.LinkDeviceSDK] [INFO] - 调用clientInit方法 2024-06-11 21:24:35 [main] [com.huawei.ecampus.linkdevice.sdk.module.BaseClient] [INFO] - trust workdir /usr/local/edge-gateway/linkConf/connector1 2024-06-11 21:40:03 [main] [com.example.linkdevice.LinkDeviceSDK] [INFO] - 调用setCallbacks方法 2024-06-11 21:40:03 [main] [com.example.linkdevice.LinkDeviceSDK] [INFO] - 调用setGatewayCallback方法 2024-06-11 21:40:03 [main] [com.example.linkdevice.LinkDeviceSDK] [INFO] - 调用open方法 2024-06-11 21:40:03 [main] [com.huawei.ecampus.linkdevice.sdk.module.ClientConnect] [INFO] - Open mqtt connection begin 2024-06-11 21:40:03 [main] [com.huawei.ecampus.linkdevice.sdk.module.ClientConnect] [INFO] - Module client is opened. 2024-06-11 21:40:03 [main] [com.example.linkdevice.LinkDeviceSDK] [INFO] - 调用connected方法租户账号:Hizrtech
  • [问题求助] JavaSdk对接Ulab23.2的linkdevice平台遇到so动态库无法加载问题
    项目租户名: Hizrtech 问题描述:Java通过Sdk对接Ulab23.2的linkdevice平台,初始化连接时遇到so动态库无法加载问题。错误如下:com.huawei.seccomponent.common.SCException: Can't load library: /usr/local/seccomponent/lib/libsc-secrypto.soat com.huawei.seccomponent.crypt.CryptoAPI.<init>(CryptoAPI.java:44)at com.huawei.ecampus.linkdevice.sdk.utils.CryptUtil.initSCC(CryptUtil.java:51)at com.huawei.ecampus.linkdevice.sdk.module.BaseClient.<init>(BaseClient.java:77)at com.huawei.ecampus.linkdevice.sdk.module.ClientConnect.<init>(ClientConnect.java:89)at com.huawei.ecampus.linkdevice.sdk.module.ClientConnect.clientInit(ClientConnect.java:108)
  • [问题求助] appcube的开发环境连接不上
    环境信息:线上studio开发环境问题现象:appcube的开发环境连接不上租户账号:Hi-xajh项目名称:雄安金湖截图:
总条数:953 到第
上滑加载中