Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
0 Kudos
写这篇认证故事的初衷:

  1. 记录一下认证的过程(技术路线为主,在系统里填单子、审批、盖章的过程不在本文讨论);

  2. 知识分享,后续负责相关认证的同事可以更直观地了解SAP IoT相关的认证类型,认证执行及技术实现过程;

  3. 方便认证单位了解及记录自己获取SAP IoT认证的过程。


 

本文分几部分介绍,

  1. SAP IoT认证类型总览

  2. 探索过程 – 认证类型选型失败

  3. IoT Device Cloud认证过程


一.      SAP IoT认证类型总览


截止2018年10月,SAP在IoT认证方面已经发布的认证类型有两类三种,如下图所示。

  1. IoT网关、边缘设备认证(IoT Gateway Edge Sensor Certifications Option A & B)、


Option A验证边缘计算平台的能力,即平台从传感器获取数据并将其直接或通过IoT Gateway Edge发送到SAP Cloud Platform的能力。

Option B:测试传感器直接或通过IoT Gateway Edge将数据发送到SAP Cloud Platform IoT的能力。

 

  1. IoT云认证(IoT Device Cloud Certification)


此认证测试合作伙伴的设备云。 合作伙伴设备云将直接或通过IoT Gateway Edge将数据发送到SAP Cloud Platform IoT。

认证类型详细解释可参考由Brett Swinford写的另外一篇文章:SAP ICC IoT Certifications-Configure Edge and Cloud Processing to Meet Customer Needs

 

目前另外一种类型认证流程正在定义当中,在这种认证流程中,客户可以不必有自己的边缘计算设备(Gateway或者传感器),可以认证一个逻辑单元(比如软件+硬件的组合),证明这个逻辑单元可以从传感器获取数据并直接或通过IoT Gateway Edge发送到SAP Cloud Platform。

同时,认证流程将来可能会更新,要求既能从传感器端到SAP端,也可以从SAP发指令到传感器端,请持续关注SAP ICC官方认证流程的更新。

二.      探索过程 – 认证类型选型失败


合作伙伴TENLINK及其待认证的能力介绍


TENLINK是一家以提供物联网产品和服务为主的科技型企业。在泛工业领域中,TENLINK通过提供软件硬件产品,实现从现场设备端到企业应用端的数据服务,进而为客户提供系统整合方案及定制化解决服务,帮助客户实现智慧化管理和运维,提升管理和经济效益。

TENLINK在智能教育(科研、教培、实验室等),智慧农业(智能控制、科学种植等),智慧楼宇(数据采集、报警信息、科学管理),智能制造(科学管理、智能化生产等)等方面都有成熟的解决方案。

 

 

认证选型过程


起初,在我们搭建的TENLINK与SAP Cloud Platform IoT Service的通信模型中,我们将TENLINK边缘计算逻辑组件(来自Honeywell的组态软件niagara + TENLINK自主研发的Tennet 2.1驱动 +SAP Gateway Edge程序)作为此次IoT认证的目标,并对应到上述场景Option A。后来发现理解上是有偏差的,SAP的 IoT 认证Option  A场景要求厂商有自己自主知识产权的边缘计算平台(如Gateway),并且这个计算平台可以支持安全加密协议并将(从传感器过来的)信息直接或通过SAP Gateway Edge程序发送给SAP Cloud Platform里的IoT Service组件。我们所选取的逻辑组件并不符合要求。因此适合我们的认证场景只有:

  • 第三种Cloud to Cloud的通信,即通过TENLINK自己的IoT SaaS或其他联网应用于SAP Cloud Platform通信。(我们认证的场景是双向的,即可从TENLINK自己的云平台将收集的传感器数据发送至SAP Cloud Platform,同时SAP Cloud Platform可以通过TENLINK云反向控制传感器设备)


或者

  • SAP正在定义的(截止2018年12月还未正式发布)Integration Assessment认证流程,这个流程可以认证逻辑组件,而不必有专属硬件的要求


因此,我们最后选择了Cloud to Cloud的认证方式。

三.      IoT Device Cloud认证过程


3.1 场景总览


如上所述这个认证场景主要检测认证对象的云平台和SAP Cloud Platform交互的能力。这里需要关注几个要素(或者认证关键点):

  • 这里提到的认证对象的云平台是指合作伙伴真实的用来连接和控制传感器的云平台(SaaS或者普通的网页等),终端传感器的数据最终传到这里进行分析报告,并通过这个平台对传感器进行反向控制;

  • 客户/合作伙伴的IoT云可以直接通过MQTT或者HTTP与SAP Cloud Platform通信,也可以通过SAP IoT Gateway Edge进行;

  • 目前(2018年12月)的认证流程是单向的,及传感器数据可以通过客户/合作伙伴的IoT云发送到SAP CP即可;但本文的认证过程是双向的,及包含从SAP CP发起的反向控制


3.2 整体架构


整体架构流程如下图描述:

正向过程(设备 -> 合作伙伴IoT云 -> SAP Cloud Platform IoT):

  • 设备数据(例如在本认证场景中指等的开关状态)通过无线AP进入无线接入控制器AC,AC将数据通过本地局域网转发至TenYun中间件

  • TenYun中间件将设备数据分别通过MQTT发至 TenYun和SAP CP


反向过程 (SAP Cloud Platform IoT -> 合作伙伴IoT云 -> 设备)

  • SAP CP发送MQTT指令到TenYun MQTT中间件

  • MQTT中间件同步将指令转发至TenYun和本地MQTT转发程序 -> AC -> AP -> 设备


当然,此过程为MQTT双向加密连接,确保数据传输安全性。

3.3 分步解析


由于涉及到合作伙伴自主研发细节,分步解析这里我们将忽略TENLINK端的准备:比如UDP本地MQTT转发程序,TenYun MQTT中间件,TenYun上的设备控制器界面开发等。这里我们着重介绍SAP端的工作(当然,在认证过程中,在SAP CP上的所有工作也是由Partner/客户来完成,SAP ICC团队主要负责功能验证)。

本文解析的所有步骤,均来自SAP官方帮助网站的指导,这里只是把实现步骤截图给大家看,方便理解。阅读如下链接了解更多细节:https://help.sap.com/viewer/p/SAP_CP_IOT_CF

3.3.1 SAP Cloud Platform IoT Service简单了解一下


首先SAP Leonardo IoT的服务是构建在SAP Cloud Platform Cloud Foundry架构上的,它支持将Things(传感器设备)连到SAP CP,进而为上层应用(分析报表、业务应用等)提供数据。

首先是联通:传感器终端一般没有能力直接连接到SAP CP(具体原因这里不作赘述),需要通过类似于网关设备的东西例如边缘计算平台帮助进而与CP联通;CP 为了接收来自Things的数据需要针对Things的能力进行“建模”:比如这是个什么设备(走廊里的灯),用什么类型传感器(灯泡传感器),传感器所收集数据的类型(开|关,温度),这些都需要在CP里建好,才能对应接收设备传来的信息或者进行反向控制;

然后是将这些数据提供给上层应用:SAP CP做好了这样的封装,通过IoT Application Enablement将接口开放给上层(SAP应用或间接提供给非SAP的互联网应用),这点不在本文讨论范围。

下图简单反映了上面的描述。

如何起步SAP CP IoT,方法这里就不赘述了,参看:Enable SAP Cloud Platform Internet of Things Service for Cloud Foundry

3.3.2 创建Capability,Sensor Type, Device, Sensor


具体步骤可以参考https://help.sap.com/viewer/565d09b96468492aacee0f3f37282053/Cloud/en-US ,可以使用API创建,也可以直接在CP上简单点击完成。

首先你要有CP的试用帐号,在申请了认证之后SAP ICC认证团队会提供账号。https://trial.canary.cp.iot.sap/iot/cockpit/#/capabilities

创建Capabilities,e.g. RunningStatus,代表灯的运行状态,是开还是关。

 

创建SensorType, e.g. LightSensorType,代表传感器类型,是负责收集灯状态的。

 

创建Device,如Light2,代表你要连接、控制的那个设备。

这里需要注意的是,你所建的设备是一个使用MQTT协议进行通信的网络设备,因此在网关的选择上要注意选择 IoT Gateway MQTT。

 

给你所建设备添加传感器。

选择已经建好的Sensor Type。

建好之后,在有数据的情况下,就可以通过下图的方式在Data Visualization下面查看了。可以选择用图形或列表形式查看。

 

3.3.3 正向验证过程(从合作伙伴/客户云到CP)


正向过程主要在TENLINK方完成,需要注意的是要按照如下话题和消息格式进行MQTT订阅,发送及信息处理。

Service URI: ssl://trial.canary.cp.iot.sap:8883

Client ID (Alternate ID): 764021dead8976ac

 

Topic: measures/764021dead8976ac

{

"capabilityAlternateId": "984a989b04c67e0e",

"sensorTypeAlternateId":"2018050703",

"sensorAlternateId": "6b5817748e288d8c",

"measures":[ [1] ]

}

这里的xxxAlternateID等信息,对应到之前创建各步骤里Capabilities、设备等地方找。

【Optional这里作为可选,介绍一下SAP提供的正向测试方法,即通过一个叫MQTT Box的插件,模拟设备(边缘计算平台)给CP发送MQTT信息。具体步骤参考:https://help.sap.com/viewer/e765b2a5b99540ce84da397c20cc1993/Cloud/en-US

按照Help文档首先跳到5步Generate the Device Certificate,按要求下载安装Open SSL。我这里按顺序把步骤截图贴出来,仅供参考,时间关系我就不做细致讲解了,help链接里写的非常清楚。

生成证书:

 

Rename *-device_certificate.pem to certificate.pem.

  1. Publish Data Using the Paho Client


按照Guide下载安装Java SE Runtime Environment 8 ,和MQTT client (Paho)。

打开Paho client,这里需要用到上一步中弹出的Secret Key。






































































Light4Cloud:
Topic: measures/764021dead8976ac
{
capabilityAlternateId: "984a989b04c67e0e",
sensorTypeAlternateId:"2018050703",
sensorAlternateId: "6b5817748e288d8c",
measures:[ [1] ]
}
ssl://trial.canary.cp.iot.sap:8883


 

按照创建的设备、传感器类型等信息,在Paho client里创建新的连接,从这个Client连接到SAP CP对应的设备。

 

这样就可以模拟客户/合作伙伴的云平台,向SAP CP发送消息,例如按照上述MQTT 消息,将发送开关状态1至CP IoT Service,可在设备中查看:

 

3.3.4 反向验证过程(从SAP CP到合作伙伴/客户云)


所谓的反向过程即是说从SAP Cloud Platform发布MQTT指令进行反向控制, 控制设备(这里是灯的开关)。      同样的,SAP Help中有详细的参考步骤:

https://help.sap.com/viewer/59a0d95c692d42f2bd149711ed22a547/Cloud/en-US

启动paho:

测试与CP的连接性:






























































































a. Choose  +  in the Subscription section and enter the topic.
Topic: commands/<DEVICE_ALTERNATE_ID>
Enter the recorded <DEVICE_ALTERNATE_ID> as a string: commands/cb1bc8935375529e.
b. Choose Subscribe.
The Paho client is now connected to the device. Incoming commands will appear in the History tab.


 

commands/764021dead8976ac

进入发送命令的页面 https://trial.canary.cp.iot.sap/iot/core/api/v1/doc/ ,找到Devices -> POST -> /devices/{deviceId}/commands    Sends a command

点Try it out。这里需要输入deviceId,到创建Device的地方查看,对应下图左上角的红色方框位置。

【备注】因为要发送Command,所以要建一个command  类型的Capability。去到之前创建Capability的地方,再创建一个command类型的Capability然后关联到对应的Sensortype。。

Return code 200 表明发送成功。
































































































DeviceID 773
消息格式:
{
  "capabilityId": "ac164030-bf15-49d8-8d0a-f6787810d9b2",
  "command": {
    "LightStat": "1"
  },
  "sensorId": "1379"
}


 

在Paho检查测试结果,收到的信息展示:

 

至此,此次Cloud to Cloud的IoT认证过程完成。

 

关于SAP ICC认证的所有Solution,可以查阅 www.sap.com/icc