Fiware 如何向Orion发出命令
我有一个相机,我想给它发送一个拍摄快照的命令。我的设置是Orion Mosquito设备 但是,当我尝试发出命令时,IoAgent没有收到任何内容 我用于(向代理)配置设备的请求: 在代理上创建的设备:Fiware 如何向Orion发出命令,fiware,fiware-orion,Fiware,Fiware Orion,我有一个相机,我想给它发送一个拍摄快照的命令。我的设置是Orion Mosquito设备 但是,当我尝试发出命令时,IoAgent没有收到任何内容 我用于(向代理)配置设备的请求: 在代理上创建的设备: { "device_id":"actuatorCamera002", "service":"actuatoriot", "service_path":"/", "entity_name":"urn:ngsi-ld:ActuatorCamera:002", "en
{
"device_id":"actuatorCamera002",
"service":"actuatoriot",
"service_path":"/",
"entity_name":"urn:ngsi-ld:ActuatorCamera:002",
"entity_type":"Actuator",
"transport":"MQTT",
"attributes":[
],
"lazy":[
],
"commands":[
{
"object_id":"screen",
"name":"Screen",
"type":"command"
}
],
"static_attributes":[
],
"protocol":"PDI-IoTA-UltraLight"
}
在Orion上创建的实体:
{
"id": "urn:ngsi-ld:ActuatorCamera:002",
"type": "Actuator",
"Screen_info": {
"type": "commandResult",
"value": "aaa",
"metadata": {}
},
"Screen_status": {
"type": "commandStatus",
"value": "UNKNOWN",
"metadata": {}
},
"TimeInstant": {
"type": "ISO8601",
"value": " ",
"metadata": {}
}
}
我已经尝试发送关于实体值的补丁请求,但似乎没有任何东西被推送到IoAgent json
(我一直在使用IoAgent和Orion进行传感器测量,一切正常。)
编辑:
获取v2/注册
[
{
"id": "5d3af2188d657958a5cefec1",
"expires": "2019-08-25T12:29:12.00Z",
"dataProvided": {
"entities": [
{
"id": "urn:ngsi-ld:ActuatorCamera:002",
"type": "Actuator"
}
],
"attrs": [
"Screen"
]
},
"provider": {
"http": {
"url": "http://localhost:4041"
},
"supportedForwardingMode": "all",
"legacyForwarding": true
},
"status": "active"
}
]
多亏了,我发现我在发布补丁时使用了错误的命令名
发出命令的正确请求是:
curl -X PATCH \
http://<contextBrokerIp>:1026/v2/entities/urn:ngsi-ld:ActuatorCamera:002/attrs \
-H 'fiware-service: actuatoriot' \
-H 'fiware-servicepath: /' \
-d '{
"Screen": {
"type" : "command",
"value" : ""
}
}'
curl-X面片\
http://:1026/v2/entities/urn:ngsi-ld:ActuatorCamera:002/attrs\
-H'固件服务:actuatoriot'\
-H'固件服务路径:/'\
-d'{
“屏幕”:{
“类型”:“命令”,
“值”:”
}
}'
请编辑您的问题以添加此额外信息:1)与“屏幕”命令相关联的注册(它应该在Orion上的GET/v2/registrations
的结果中),2)您用于更新Orion中属性的确切补丁命令(url+标题+负载)。谢谢很高兴知道你解决了它!:)注意:建议在要转发的请求中使用?键入
(请参阅:“在转发时,NGSIv2更新/查询中的任何类型的实体都匹配没有实体类型的注册。但是,相反的情况不起作用,因此如果您有类型的注册,那么您必须在NGSIv2更新/查询中使用?type以获得匹配”)。但在您的情况下,您似乎不需要它(可能是因为注册没有使用type,GET/v2/registrations会显示它)。
curl -X PATCH \
http://<contextBrokerIp>:1026/v2/entities/urn:ngsi-ld:ActuatorCamera:002/attrs \
-H 'fiware-service: actuatoriot' \
-H 'fiware-servicepath: /' \
-d '{
"Screen": {
"type" : "command",
"value" : ""
}
}'