首页 文章

如何在ORION中创建实体?

提问于
浏览
2

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

该实体将用于包含来自智能手机的GPS,加速度计,罗盘和陀螺仪传感器数据,以供特定用户使用 . 整个概念被定义为用户会话 . 我还想在会话“开始”和“结束”时发布 .

考虑到专门针对加速度计,罗盘和陀螺仪传感器的高容量,我不希望每次发生时都发送此传感器信息,但是说,可能一旦会话结束并且所有数据都已在智能手机中收集 . 因此,我将属性更多地视为值列表而不是离散值 . 因此,把这样的东西:

{
"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"
}

不确定这是否是正确的方法 . 我不想每秒钟甚至更少地杀死智能手机发送数据的电池,所以我可能每分钟都这样做,所以我需要一个代表传感器数据的每个属性的值列表 . 我是对的还是我以错误的方式接近这个?

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

谢谢!

1 回答

  • 1

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

    • 在单个请求中创建/更新给定实体的所有属性

    • 在单个请求中创建/更新给定实体的attributres的子集 . 例如,如果您的实体有100个属性,但您只想更新其中的2个(保持其他98个未触及),您可以这样做 .

    • 在同一请求中的多个实体中创建/更新atributtes(全部或子集) . 例如,您可以在同一请求中更新属于实体E1的属性A和B以及属于实体E2的属性C和D.

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

相关问题