上下文经纪人忽略了价值,fiware orion和iotagent。

问题描述 投票:0回答:1

orion版本:2.3.0iotagent-ul版本:1.12.0。

我在mqtt上使用fiware和iotagent。我想用不同的值向一些设备发送命令。我按照以下步骤进行了操作 https:/github.comFIWAREtutorials.IoT-over-MQTT。 在配置了一个服务组(apikey:123456)和一个执行器后,我可以通过以下iota URL发送带有数值的命令。

curl -iX POST \                       
  'http://localhost:4041/iot/devices' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /' \
  -d '{
  "devices": [
    {
      "device_id": "dev001",
      "entity_name": "urn:ngsi-ld:Device:001",
      "entity_type": "Device",
      "protocol": "PDI-IoTA-UltraLight",
      "transport": "MQTT",
      "commands": [
        {"name": "date","type": "command", "value": {"hour": 9, "minute": 31, "second": 0}}
       ]
    }
  ]
}
'

iota publish a mqtt message to : 123456dev001cmd,有效载荷为 dev001@date|hour=9|minute=31|second=0

但当使用上下文代理时,该值会被忽略。

curl -iX PATCH \                                 
  'http://localhost:1026/v2/entities/urn:ngsi-ld:Device:001/attrs' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /' \
  -d '{
  "date": {            
      "type" : "command",
      "value" : {"hour": 9, "minute": 31, "second": 0}     
  }                                                                            
}' 

在这里,iota发布一个mqtt消息到: 123456dev001cmd,有效载荷为 dev001@date|

为什么会被忽略?我是不是做错了什么?

对不起,我的英语不好。

fiware fiware-orion
1个回答
1
投票

我找到了一个解决方案......在url中添加类型,使上下文考虑到值......奇怪。

最后的url必须是:

curl -iX PATCH \                                 
  'http://localhost:1026/v2/entities/urn:ngsi-ld:Device:001/attrs?type=Device' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /' \
  -d '{
  "date": {            
      "type" : "command",
      "value" : {"hour": 9, "minute": 31, "second": 0}     
  }                                                                            
}' 

EDIT:

知道解决方案后,我试图了解这个问题,并发现这个问题。https:/github.comtelefonicaidfiware-orionissues3647。

根据常驻代表和要求转发文件

在转发时,NGSIv2 updatequery 中的任何实体类型都会匹配没有实体类型的注册。然而,反之则不行,所以如果你有带类型的注册,那么你必须在NGSIv2 updatequery中使用?type才能获得匹配。否则你可能会遇到问题,就像StackOverflow的这个帖子中描述的那样。

EDIT 2:

这是对.NET的重复。Orion CB不更新IoT代理上的懒惰属性

© www.soinside.com 2019 - 2024. All rights reserved.