如何嵌入AVEVA (OSI Soft) Pi Vision画面?API调用遇NTLM认证问题
解决Pi Vision集成API调用失败及替代嵌入方案
一、NTLM认证的正确配置步骤
不管用Postman还是curl,NTLM认证的核心是传递正确的域、用户名和密码,以下是具体操作:
Postman配置
- 打开请求的「Auth」选项卡,认证类型选择「NTLM」
- 填写Domain(Pi Vision服务器所在的Windows域,本地账户填服务器主机名)、Username、Password
- 确保请求的URL是Pi Vision的API地址(比如
https://pivision-server/PIVision/api/Folders),不要和PI Web API混淆
curl命令配置
必须添加--ntlm参数和域用户信息,示例命令:
curl --ntlm --user YOUR_DOMAIN\your_username:your_password https://pivision-server/PIVision/api/Folders
注意:如果是本地账户,域替换为Pi Vision服务器的主机名;密码含特殊字符时要转义(比如用双引号包裹"DOMAIN\user:pass@123")
二、权限排查要点
- 确认用户同时加入PI Vision Utility Users/Admins组和PI Data Archive的PI Vision Users组,API调用需要底层PI数据的访问权限
- 登录Pi Vision服务器,检查PI Web API的认证设置:打开PI Web API管理页面(
https://pivision-server/piwebapi/admin),在「Security」→「Authentication Methods」中确认NTLM已启用 - 直接在浏览器访问API URL(比如
https://pivision-server/PIVision/api/Folders),如果能正常返回数据,说明权限没问题,问题出在工具的认证配置
三、其他嵌入Pi Vision Displays的方法
如果API调用遇到瓶颈,这些方案更直接:
1. iframe直接嵌入
如果你的门户和Pi Vision在同一Windows域(或已配置跨域信任),可以直接用iframe加载Display页面,URL格式:
<iframe src="https://pivision-server/PIVision/#/Displays/你的DisplayID" width="100%" height="800px" frameborder="0"></iframe>
前提是用户已通过门户的Windows集成认证,身份会自动传递到Pi Vision
2. Pi Vision Embedding SDK
AVEVA官方提供的SDK支持更灵活的集成(比如控制Display加载、监听交互事件),步骤:
- 在Pi Vision管理页面(
https://pivision-server/PIVision/Administration)的「Embedding Settings」中添加你的门户域名到允许列表 - 在网站中引入Pi Vision的嵌入脚本,示例:
// 加载SDK脚本 const script = document.createElement('script'); script.src = 'https://pivision-server/PIVision/Scripts/embedding/pi-vision-embed.js'; script.onload = () => { // 初始化并加载Display const embed = new PiVisionEmbed('display-container', { displayId: '你的DisplayID', serverUrl: 'https://pivision-server/PIVision' }); embed.load(); }; document.body.appendChild(script);
3. 直接获取Display链接
如果只需要展示固定Display,可让管理员在Pi Vision中复制Display的共享链接,直接在网站中使用(需确保用户有访问权限)
内容的提问来源于stack exchange,提问作者HarisH Sharma
相关产品推荐
相关产品推荐

