云网站服务器_国内数据云存储_移动云数据库服务器主机-搜集站云

金山云_华为云登陆_安全稳定

小七 141 0

SAP Leonardo IoT目前公开了几个功能和模块。其中之一是地理定位服务。

地理定位服务是一项新功能,允许SAP Leonardo IoT根据其地理坐标定位特定对象或设备。

使用地理定位服务,需要对一些概念和相关术语有信心。

第一个概念是几何类型。几何体是我们考虑的地理位置的物理实体类型。

目前支持两种几何体:

兴趣点,简称POI,是一个单点,它的经度和纬度感兴趣的区域,也称为AOI,即两个以上坐标的数组。基本上,它是一个多边形的物理表示,坐标数组是一个封闭的数组(列表中的第一个坐标正好等于最后一个)。

另一个重要的概念是地理位置空间。它代表了当前范围的概念。可以在每个空间中指定一组几何图形,地理位置,地理位置的层次结构。

最后但并非最不重要的是地理围栏的概念。

地理围栏是需要由业务逻辑监控的地理位置(一个点或一个感兴趣的区域),以便识别另一个POI是在它的内部还是外部。

此外,它允许轻松识别什么是地理围栏违反,手游返利,这意味着设备或对象正在进入或退出地理围栏。

SAP Leonardo IoT Geolocation Services提供了一组API来定义上面讨论的对象,并测试或计算地理围栏的接近度。

所有API都使用GeoJSON格式,即使用[经度,纬度]来识别坐标,如https://tools.ietf.org/html/rfc7946#部分-3

ACME是一家公司,其业务是送货。

他们将监控卡车,以便跟踪仓库装载的卡车,以及下一个到达的卡车。

目标是减少装载阶段的停机时间,优化装载过程,包裹的存储将根据卡车的计划到达时间及时准备。

公司决定使用SAP Leonardo IoT地理定位服务进行一些优化并实施监控系统,通过创建一些地理围栏和一个应用程序来监控它们。

故事的物理设备是一辆卡车;它的数字孪生表示是一个名为"ACMEtruck1"的东西,它实现了"truck"类型的东西。

这个设备目前正在发送测量卡车的位置(经纬度)和操作状态。

这个状态特别允许评估交货时间,卡车进入仓库的时间,包括损失的时间(等待下一次操作)和装载时间。

实现包括一个UI,允许在地图中实时查看卡车的位置(其中还绘制了地理围栏),南京大数据,以及GeoFence事件列表,允许预测卡车装载和卸载所需的初步操作。

UI正在使用Cloud Foundry上运行的服务提供的数据和服务,实现此用例所需的逻辑。

此示例中涉及的其他服务包括:SAP云平台物联网,用于数据接收和设备安装;SAP Leonardo IoT,用于地理定位服务、数字孪生定义和定制事件的创建;SAP Cloud Foundry应用程序将定制服务部署到Cloud Foundry所需的运行时。

这是实现的模式:

特别是在本文中,重点将放在服务的实现上。

创建数据结构

使用地理定位API结构相应地定义新的地理定位空间是一个很好的做法。

我们使用了Postman来创建它,但是您可以使用您喜爱的HTTP客户机(如curl)。

继续创建它,您需要发现您的端点(事件和地理位置)和oAuth2身份验证详细信息。

要发现它们,请转到SAP Cloud Platform Cockpit并打开Cloud Foundry子帐户,然后到空间并导航到在入职阶段创建SAP Leonardo IoT实例的空间。

单击服务实例,打开服务名称为"iotae"的实例,然后打开服务密钥。

从密钥的json中记下:

"events SAP"的地址,稍后将用于调用事件类型创建(例如:"事件sap":https://events-sap.cfapps.eu10.hana.ondemand.com)"地理位置"地理位置API端点(例如:https://sap-iot-noah-live-geolocation-runtime.cfapps.eu10.hana.ondemand.com)

现在复制oAuth2详细信息;在uua部分复制以下字段:

"url"(例如:https://iotpdmosenv.authentication.eu10.hana.ondemand.com)"clientid"(它标识租户,例如:"sb-dba6b987-9dc2-4e92-983a-06c7bccd5fa1!b11300物联网服务!b5")"clientsecret"

创建空间是一个POST方法

在标题列表中添加一个新标题:

Key:"Content Type"Value:"application/json"

在授权页签中选择oAuth2编译表单以获取新的访问令牌。

访问令牌url是您之前从存储在云平台驾驶舱中的服务密钥复制的字段url。在url的末尾添加字符串:/oauth/token(例如:https://iotpdmosenv.authentication.eu10.hana.ondemand.com/oauth/token)

在标题列表中添加一个新标题:

键:"内容类型"Value:"application/json"

创建一个新的POST请求。

要使用的地址是/geolocation/v1/Spaces(例如https://sap-iot-noah-live-geolocation-runtime.cfapps.eu10.hana.ondemand.com/geolocation/v1/Spaces)

正文格式如下:

可以为字段定义描述所有所需的本地化描述。

调用后,201消息将标识操作已成功完成。

创建自定义事件是必要的,云上,以便将地理围栏冲突事件与标准SAP事件进行语义隔离。

对于身份验证和标头,使用相同的消息用于创建地理位置空间的详细信息。

现在让我们编译帖子的正文和地址:

地址:/ES/v1/eventpropertysetypes

(例如。https://events-sap.cfapps.eu10.hana.ondemand.com/ES/v1/eventpropertysetypes)

正文:

按Send创建。响应的HTTP状态201标识成功。

事件名称始终采用以下格式iot.IoPMDemosenv.卡车

使用与前面步骤相同的oAuth令牌和头,编译POST方法,详细信息如下:

Address:/ES/v1/EventTypes

(例如。https://events-sap.cfapps.eu10.hana.ondemand.com/ES/v1/EventTypes)

主体:

EventTypeState设置为可变。这意味着您将能够修改或删除事件。

如果此字段未在json中指定或指定为不可变,则无法修改或删除创建的事件。

按Send创建它。一个HTTP状态201的响应标识成功。

创建一个后台进程来监视geofiness

这是逻辑的核心。这个过程目前在Maven Java项目中实现,它负责获取设备的当前位置并监控地理围栏。

如果违反,一个新的事件也生成了

这个服务的核心基本上是一个调度的执行器池,负责获取地理位置的测量值,并调用地理位置API来识别地理围栏状态

在下面的代码中,有一个类实现了地理围栏检查;它使用开放源代码Java和下划线。在这个例子中,我们称之为geofenseEvaluation类:

我们还定义了一个类,以发现是否有新的东西被装载,并且需要从主服务中分析以识别任何违反geofense的情况,淘客源码,类名为DiscoveryThings:

在类LeonardoIoTAPIAuth中实现Scribejava实现以获取SAP Leonardo Iot的oAuth令牌:

类OAuth2也是Scribejava实现的一部分:

这些类实现Runnable并以固定速率作为服务启动,类TruckOrganizer:

在代码中,我们还使用了一些来自配置文件(作为Map导入)的详细信息;该文件如下,file设置.json:

现在我们可以在后台运行服务了。我们决定在Cloud Foundry上作为一个独立服务运行:

作为最终操作,Acme创建了一个简单的UI5应用程序来收集所有违反地理围栏的事件,并实时验证卡车的位置。

此应用程序有:

一个地图,其中所有地理围栏都被绘制出来一个允许实时跟踪卡车位置的列表收集所有违反地理围栏事件的列表

UI的前端还负责提交更改并创建(以图形方式)地理围栏。

您也可以通过调用以下API在Postman中直接提交它:

在这篇博文中,我们解释了如何使用SAP Leonardo IoT地理定位服务以及如何实现一个定制服务,大数据的数据库,用它的功能计算地理围栏冲突。