【问题标题】:how to make an entity in ORION?如何在 ORION 中创建实体?
【发布时间】:2015-09-02 01:59:13
【问题描述】:

我对如何在 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"
}

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

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

谢谢!

【问题讨论】:

  • 我知道"id": "" 只是一个例子。请注意,NGSI 需要每个实体都有一个非空 ID。
  • 没错,只是为了澄清,之后会生成一个唯一的ID,和一些值一样...

标签: fiware-orion


【解决方案1】:

Orion API 非常灵活,允许您使用多种可能性:

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

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

【讨论】:

  • @fglana,如果给定上述实体(例如 gps_latitude),您将如何为属性定义值列表,或者上述内容是正确的?
  • 不确定是否完全理解问题...您的意思是定义 gps_latitude 的值是项目列表,例如lat1, lat2 和 lat3 ?
  • 不,该属性的值是一个值列表 [45.54, 45.51, 44. 33, ...] 所以在一次更新中我可以发送很多值,而不仅仅是一个
  • 您可以使用任意 JSON 作为属性值(查看此文档:fiware-orion.readthedocs.org/en/develop/user/…),所以我认为这可能就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
相关资源
最近更新 更多