首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于 Kubernetes 集群的 Serverless 在 IoT 中的应用(9)

基于 Kubernetes 集群的 Serverless 在 IoT 中的应用(9)

创建并验证第三个 Action:geofence地理围栏是地理区域的虚拟边界。地理围栏可用于许多物联网用例,包括资产跟踪、安全、监控和零售等。
geofence.js 是 geofence Action 的源码:
清单 3. geofence                源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  // Execute logic to enforce geofence if required parameters are present
    if(params.latitude && params.longitude && params.center_latitude && params.center_longitude && params.geofence_radius) {


      var R = 6371e3; // metres
      var φ1 = degrees_to_radians(params.center_latitude);
      var φ2 = degrees_to_radians(params.latitude);
      var Δφ = degrees_to_radians(params.latitude-params.center_latitude);
      var Δλ = degrees_to_radians(params.longitude-params.center_longitude);

      var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
              Math.cos(φ1) * Math.cos(φ2) *
              Math.sin(Δλ/2) * Math.sin(Δλ/2);
      var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

      var d = R * c;

      if(d > params.geofence_radius) {
        params.alert = 1;
      }
      else {
        params.alert = 0;
      }
    }
    else {
      console.log("Required Parameters for Geofence Calculation Not Provided");
      return {error: "Required Parameters for Geofence Calculation Not Provided"}
    }

    return params;
  }

function degrees_to_radians(degrees)
{
  var pi = Math.PI;
  return degrees * (pi/180);
}




从源码我们可以大致看出,geofence Action 的作用是确认资产是否在其地理围栏之内。
图 35. 查询执行结果
截止到目前,我们已经为 Package iot-serverless 创建完成三个 Action:
图 36. 查看                    Action
最后,我们更新 iotServerlessSequence 序列,以便将刚创建的 Action 加入到序列:
图 37. 查看序列
接下来,我们通过直接调用的方式,验证刚刚创建的 Action.
工厂有一个资产,该资产预计位于(37.784393,-122.401399),并且只能在指定区域(3m)内移动。此半径位于仓库的备用库存部分中。如果此资产移出此指定区域(地理围栏),则会触发警报。假设资产现在将其当前位置报告为(37.784420,-122.401399),这超出了其地理位置,我们看通过调用                geofence Action 是否会产生告警。
图 38. 查看结果
在上面的结果中,"alert":1 这表明资产在地理围栏允许区域之外。 如果资产位于地理围栏区域内,则返回"alert":0 值。
返回列表