我正在使用带有MQTT绑定的IOT-agent JSON
。我有一个使用物联网代理在猎户座中注册的传感器执行器,并创建了订阅。
如果第三方应用程序修改传感器值,Orion 必须向设备发送 IoT 代理信息和 IoT 代理。
例如,如果我在传感器内部有 3 个属性,其中一个控制阀门。
在猎户座中,该属性是真或假。
如果在 Orion 中修改了属性,则必须发送到 IoT 代理,并将 IoT 代理发送到设备以关闭或打开阀门。
额外信息:
该软件是Fiware Generic Enable的两个组件。
物联网代理 JSON:https://github.com/telefonicaid/iotagent-json Fiware-OrionCB:https://github.com/telefonicaid/fiware-orion
可能吗?
没有官方教程通过 MQTT 将JSON 物联网代理连接到设备,但 Ultralight IoT Agent 存在非常相似的教程
物联网设备是:
- 传感器- 从现实世界中读取测量值
- 执行器- 改变世界的状态
- 或两者兼而有之
您的问题是您无法让 Orion 直接更新传感器的属性/状态。 上下文代理中实体的属性表示传感器的传入状态,即来自该传感器的测量值。
例如,对于读取阀门状态的传感器,它可以"open: "true"
为了更新执行器,您需要发送命令,而不是更改值。
应在预配设备时设置命令(假设你已有服务(:
curl -iX POST
'http://localhost:4041/iot/devices'
-H 'Content-Type: application/json'
-H 'fiware-service: openiot'
-H 'fiware-servicepath: /'
-d '{
"devices": [
{
"device_id": "bell001",
"entity_name": "urn:ngsi-ld:Bell:001",
"entity_type": "Bell",
"protocol": "PDI-IoTA-UltraLight",
"transport": "MQTT",
"commands": [
{ "name": "ring", "type": "command" }
],
"static_attributes": [
{"name":"refStore", "type": "Relationship","value": "urn:ngsi-ld:Store:001"}
]
}
]
}
'
然后,您可以通过更改命令属性的状态来发送命令以执行某些操作(例如按铃、打开阀门等(。
curl -iX PATCH
'http://localhost:1026/v2/entities/urn:ngsi-ld:Bell:001/attrs'
-H 'Content-Type: application/json'
-H 'fiware-service: openiot'
-H 'fiware-servicepath: /'
-d '{
"ring": {
"type" : "command",
"value" : ""
}
}'
根据预配设备的方式,可能还需要注册命令 - 尽管这可能不是必需的。