如何解决Orion-QL 订阅配置 NGSI-v2NGSI-LD
我有配备许多物联网传感器的设备。我想从这些设备批量读取并将这些数据批量写入 CrateDB。每 1 秒从传感器获取 100 个数据。
例如,我如何使用 Quantum Leap 代理一次性获取 5 秒的批处理数据(500 个数据)并将其写入 CrateDB?我应该在 Orion 中进行此配置吗? -QL 订阅(节流等)?
解决方法
NGSI-v2 批量更新是使用 /v2/op/update
端点实现的,例如:
curl -L -X POST 'http://localhost:1026/v2/op/update' \
-H 'Content-Type: application/json' \
--data-raw '{
"actionType":"update","entities":[
{
"id":"urn:ngsi-ld:Product:001","type":"Product","price":{"type":"Integer","value": 1199}
},{
"id":"urn:ngsi-ld:Product:002","value": 1199},"size": {"type":"Text","value": "L"}
}
]
}'
通过 NGSI-LD,您可以使用 /ngsi-ld/v1/entityOperations/upsert
:
curl -L -X POST 'http://localhost:1026/ngsi-ld/v1/entityOperations/upsert' \
-H 'Content-Type: application/json' \
-H 'Link: <http://path-to-context/ngsi-context.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"' \
-H 'Accept: application/ld+json' \
--data-raw '[
{
"id": "urn:ngsi-ld:TemperatureSensor:002","type": "TemperatureSensor","category": {
"type": "Property","value": "sensor"
},"temperature": {
"type": "Property","value": 21,"unitCode": "CEL"
}
},{
"id": "urn:ngsi-ld:TemperatureSensor:003","value": 27,"unitCode": "CEL"
}
}
]'
您没有说明您的多传感器是否能够发送 NGSI 调用 - 如果它不能发送 NGSI,但能够以其他格式发送批量读数,那么您只需要一个微服务来为您进行转换 -可以在 GitHub 上找到示例 - 可以在 FIWARE Foundation 的 Video Tutorials 中找到对代码的评论。
以 NGSI 格式安全地发送设备数据后,您可以解决问题的后半部分。 NGSI-v2 和 NGSI-LD 都有 QuantumLeap 教程,它们的关键是创建订阅以通知任何更改。
NGSI-v2
curl -iX POST \
'http://localhost:1026/v2/subscriptions/' \
-H 'Content-Type: application/json' \
-H 'fiware-service: openiot' \
-H 'fiware-servicepath: /' \
-d '{
"description": "Notify QuantumLeap of count changes of any Motion Sensor","subject": {
"entities": [
{
"idPattern": "Motion.*"
}
],"condition": {
"attrs": [
"count"
]
}
},"notification": {
"http": {
"url": "http://quantumleap:8668/v2/notify"
},"attrs": [
"count"
],"metadata": ["dateCreated","dateModified"]
}
}'
NGSI-LD
curl -L -X POST 'http://localhost:1026/ngsi-ld/v1/subscriptions/' \
-H 'Content-Type: application/ld+json' \
-H 'NGSILD-Tenant: openiot' \
--data-raw '{
"description": "Notify me of all feedstock changes","type": "Subscription","entities": [{"type": "FillingLevelSensor"}],"watchedAttributes": ["filling"],"notification": {
"attributes": ["filling","location"],"format": "normalized","endpoint": {
"uri": "http://quantumleap:8668/v2/notify","accept": "application/json"
}
},"@context": "http://path-to-context/ngsi-context.jsonld"
}'
除非您只想对传入的数据进行采样,否则不需要 throttling
参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。