如何在 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 请求。
我对如何在 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 请求。