背景
MindSphere是西门子基于云的物联网操作系统。它连接产品,工厂,系统和机器,企业通过MindSphere强大的连接能力收集来自车间、边缘设备及其他相关系统的数据,并利用这些数据进行展示、分析、预测及开发工业应用程序以提升智能化水平。如果说MindSphere帮助企业架起了工业物联网平台,打通了从底层设备到上层应用的桥梁,那么Mendix则为企业串联业务价值、拓展业务系统及打造更多的工业解决方案提供了更多的可能性。两者相辅相成,是西门子为企业数字化转型提供的最好的战略选项。
MindSphere资产管理用例(Pump Asset Example App)简介
本文的例子PumpAssetExample 是Mendix Marketplace官方提供的MindSphere应用案例,这里例子里使用了 MindSphere Asset Management Connector 并通过Mendix native REST功能调用MindSphere APIs来创建和展示OT设备的时序数据。为了将开发的应用发布到MindSphere,这里还用了以下几个模块:
- MindSphere SSO
- MindSphere Theme Pack
- MindSphere OS Bar Connector
APP上线之后的效果预览:
前提条件及环境准备
- 首先你需要在MindSphere developer tenant 上有账号;
- 确保账号有如下权限:
mdsp:core:Developer
mdsp:core:StandardUser
mdsp:core:TenantUser
MindSphere中建立设备管理模型
我们要做的这个示例应用需要显示泵(Pump)的信息,因此需要在MindSphere资产管理(Asset Manager)中事先建好设备模型。Pump的aspect需要包含如下属性:
me | Data type | Unit |
Motor_Current | DOUBLE | amps |
Pressure_In | DOUBLE | psi |
Pressure_Out | DOUBLE | psi |
可按照如下步骤建设备模型。
1. Aspect
登录MindSphere 进入Asset Manager。
选择Aspect->Create Aspect.
2. Types
选择Types->Create Type. 创建一个BasicAsset,可命名为“Pump” (可忽略截图中的命名)。
3. Assets
Assets->Create Asset.
关于创建Asset的更详细介绍,可以参考官方文档 Asset Manager – System Manual.
在Studio Pro中加载示例应用
在Mendix Studio Pro 打开APP Store.
搜索框中输入关键字MindSphere ,找到名称为:Siemens MindSphere Pump Asset Example的组件。
点击下载。
可以通过这个Sample应用新建一个应用,或者在自己已经建好的空应用中加载。
应用设计
虽说是只是复用Mendix官方提供的应用示例,还是有必要了解一下关键的应用设计步骤,因此下面我们来一起学习一下。
6.1 SSO/单点登录
单点登录的设置要在应用的Settings->Runtime的页签下面配置,应用启动的时候可以进行调用执行。
Single Sign On通过微流MindSphereSingleSignOn.RegisterSingleSignOn实现。
关于Mendix的用户角色与MindSphere用户角色及Scope对应的问题,我们会在部署部分讨论,更多详细信息可参照 User Scopes 。
6.2 Access Token
为了避免Token过期带来连接问题,在所有访问MindSphere的微流的起始位置都会调用“AccessToken”的Action对token进行更新,比如OpenAsset时:
这通过Java Action “MindSphereAccessTokenConnector”来实现。
6.3 Asset Management
MindSphere Asset Management Connector 默认提供了Asset Management功能,如获取Assets和Asset Types。
6.4 Native REST
Mendix提供了REST能力以便开发者可以调用任何REST API。在这个例子中,我们通过REST call 访问MindSphere的时序数据。比如微流DS_GetTimeSeriesDataFromMindSphere中访问时序数据:
6.5 PUT Time Series
在更新时序数据的时候,由于MindSphere本身通过队列机制来处理request,因此在应用中通过微流ACT_PutTimeSeriesData的REST Call去PUT 时序数据的时候通常不会一次成功(返回204)。所以在微流设计中,采用了Retry机制(子微流DS_GetTimeSeriesDataWithRetry 实现),例如每隔50毫秒GET一次,指导PUT成功为止。
应用部署至MindSphere
部署应用至MindSphere需要完成的步骤包括,参数配置,Push到Cloud Foundry和在MindSphere Launchpad里进行设置。详细的信息官方文档 Siemens MindSphere – deployment有描述,重点参照第四章Configuring the Modules和第五章Deploying Your App,这里会把必要步骤截图讲解。
7.1 应用参数配置
- CockpitApplicationName (app的名字)
- MindSphereGatewayURL
- PublicKeyURL
RegisterSingleSignOn
7.2 部署到Cloud Foundry
选择生成本地版本(Versioned选择No)。
Login到Cloud Foundry
cf login -a https://api.cf.cn1.mindsphere-in.cn –sso
按照提示访问连接生成临时授权码并输入。
Org建好后Target到ORG | cf target -o svcdev | |||
建Space | cf create-space CXLSpace | |||
查看 | cf a | |||
查看服务 | cf s |
准备manifest.yml文件, 主要设置disk_quota_size 和 memory_size (>512M)来确保Mendix应用的运行时环境。如:
详细信息参照Configuring the manifest file.
Push应用的Cloud Foundry:
cf push -p "MSPumpAsset_1.0.0.2.mda" -s cflinuxfs3
[Tips] 我遇到了Staging Fail的问题,Bind Service而后restage.
cf bind-service CXPMCockpit dbcxl
cf restage CXPMCockpit
查看APP信息:
7.3 MindSphere Launchpad 配置
注册应用及调整相关用户权限,使得应用可以在MindSphere Launchpad访问。
设置Scope:
注册完成并设置好权限后,可以通过MindSphere Dashboard访问应用了。
7.4 本地运行并调试应用
本地运行需要额外配置一下参数。
- CockpitApplicationVersion
- CredentialsType
- HostTenant
- UserTenant
本地运行(Run Locally)还需要生成ClientID和Secret,可以到MindSPhere DeveloperCockpit中生成Credentials。
点击Issue Access生成 Client ID和Secret。
Mendix Studio Pro “Run Locally” 并将相应的Client ID和Secret填入。
提交后APP即可本地运行,可以在Mendix Studio Pro中设置断点进行调试。
参考文档
- Use the Siemens MindSphere Pump Asset Example App - Strategic Partners Guide | Mendix Documentation
- Siemens MindSphere Pump Asset Example
- Siemens MindSphere
- MindSphere Development Considerations
更多信息,请访问以下链接:
Mendix官网:https://www.mendix.com/zh/
Mendix中国论坛:https://forum.mendix.tencent-cloud.com/
Mendix行业解决方案:https://solutions.mendix.com/
Mendix平台指南:https://www.mendix.com/evaluation-guide/
Mendix动画展示:https://www.mendix.com/demos/
谢谢阅读!