如何在 ORION 中创建一个实体?

how to make an entity in ORION?

我对如何在 ORION 中定义实体有一些疑问。

此实体将用于包含来自特定用户的智能手机的 GPS、加速器、指南针和陀螺仪传感器数据。整个概念定义为一个用户session。我也想在 session "starts" 和 "ends".

时发布

考虑到加速度计、罗盘和陀螺仪传感器的大量预期,我不希望每次发生时都发送此传感器信息,但是说,可能一旦 session 完成并且所有数据已收集到智能手机中。因此,我将属性更多地视为值列表而不是离散值。因此,放这样的东西:

{
"contextElements": [
 {
  "type": "UserSession",
  "isPattern": "false",
  "id": "",
  "attributes": [
      {
      "name": "user_id",
      "type": "string",
      "value": "none"
      },
      {
      "name": "app_id",
      "type": "string",
      "value": "none"
      },
      {
      "name": "status",
      "type": "string",
      "value": "none"
      },
      {
      "name": "x_accelerometer",
      "type": "float",
      "value": "0.0"
      },

      {
      "name": "y_accelerometer",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "z_accelerometer",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "gps_latitude",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "gps_longitude",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "gps_altitude",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "gps_accuracy",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "gps_heading",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "gps_speed",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "compass",
      "type": "float",
      "value": "0.0"
      },
      {
      "name": "gyroscope",
      "type": "float",
      "value": "0.0"
      }
  ]
  }
  ],
  "updateAction": "APPEND"
}

不确定这样做是否正确。我不想耗尽智能手机的电池,每秒或更短时间发送数据,所以我可能每分钟左右都这样做,因此我需要一个代表传感器数据的每个属性的值列表。我是对的还是我以错误的方式接近这个?

最后,我想在另一个应用程序中订阅这些属性,并根据这些值进行一些推理来创建警报,所以我可能还需要一个警报实体。

谢谢!

Orion API 非常灵活,可以为您提供多种可能性:

  • 在单个请求中create/update给定实体的所有属性
  • 到 create/update 单个请求中给定实体的属性子集。例如,如果您的实体有 100 个属性,但您只想更新其中的 2 个(其余 98 个保持不变),您可以这样做。
  • 到同一请求中多个实体中的 create/update 个属性(所有属性或子集)。例如,您可以在同一请求中更新属于实体 E1 的属性 A 和 B 以及属于实体 E2 的属性 C 和 D。

如果您想节省客户端的电池电量,那么最后一个选项可能是最合适的。例如,您可以在客户端中保存一个缓冲区,其中包含实体更改的累积,并每分钟刷新一次缓冲区,发送一个包含所有累积更改的 updateContext 请求。