IoT Broker似乎不同意物联网发现

时间:2016-05-25 18:57:39

标签: xml fiware fiware-orion

我有下一个配置:

IoTBroker(v.5.2.3)   <----->   IotDicovery(v.4.3)

当我发出

GET ***/ngsi10/contextEntities/EntityName***

消息 IoTBroker 会自动生成

***/ngsi9/discoverContext/Availability*** 

查询 IoTDiscovery IoTDiscovery 然后用

回答正面
 *200 OK* HTTP message

需要有关 EntityName 的信息。

问题是当 IoTBroker 做出最终响应时,它会以 404 NOT FOUND HTTP消息作出响应。

这是 IoTBroker 自动生成的POST HTTP消息 IoTDiscovery

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<discoverContextAvailabilityRequest>
   <entityIdList>
      <entityId isPattern="false">
         <id>Room</id>
      </entityId>
   </entityIdList>
   <attributeList/>
      <restriction>
         <attributeExpression>
         </attributeExpression>
         <scope>
             <operationScope>
             <scopeType>
                IncludeAssociations
             </scopeType>
             <scopeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xs="http://www.w3.org/2001/XMLSchema" 
             xsi:type="xs:string">
             SOURCES
             </scopeValue>
             </operationScope>
          </scope>
      </restriction>
</discoverContextAvailabilityRequest>

这是 IoTDiscovery IoTBroker 的响应,显然一切正常:

<?xml version="1.0" encoding="UTF-8"?><discoverContextAvailabilityResponse>
  <contextRegistrationResponseList>
    <contextRegistrationResponse>
      <contextRegistration>
        <entityIdList>
          <entityId type="Room" isPattern="false">
            <id>ConferenceRoom</id>
          </entityId>
        </entityIdList>
        <contextRegistrationAttributeList>
          <contextRegistrationAttribute>
            <name>temperature</name>
            <type>degree</type>
            <isDomain>false</isDomain>
            <metadata>
              <contextMetadata>
                <name>unit</name>
                <type>string</type>
                <value/>
              </contextMetadata>
            </metadata>
          </contextRegistrationAttribute>
        </contextRegistrationAttributeList>
        <providingApplication>http://192.168.100.1:70/tempApplication
...</providingApplication>
      </contextRegistration>
    </contextRegistrationResponse>
  </contextRegistrationResponseList>
  <errorCode>
    <code>200</code>
    <reasonPhrase>OK</reasonPhrase>
    <details xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Result</details>
  </errorCode>
</discoverContextAvailabilityResponse>

2 个答案:

答案 0 :(得分:1)

NGSI-10和NGSI-9分别涉及上下文信息和上下文可用性信息。更简单的措辞是,NGSI-10用于实际数据,而NGSI-9则提供有关数据提供者的信息。

根据此处的文档(https://forge.fiware.org/plugins/mediawiki/wiki/fiware/index.php/FI-WARE_NGSI-10_Open_RESTful_API_Specification),以下操作资源是&#34;便利操作资源&#34;:

/ngsi10/contextEntities/EntityName***

此资源相当于NGSI-10 queryContext。所以在这里看一下介绍性课程:https://edu.fiware.org/course/view.php?id=33(幻灯片10)当您向物联网经纪人发出NGSI-10请求时,后者正在通过请求物联网发现来寻找此类信息的可能提供者。如果物联网发现回复了提供者列表,则物联网经纪人继续查询数据提供者。然后,IoT Broker聚合来自数据提供者的所有回复,最后回答请求。 如果任何数据提供者没有此类上下文信息或无法访问,则IoT代理将回复未找到的404 ContextElement。

因此,您需要实施NGSI-10数据提供商,这些提供商需要通过NGSI-10公开上下文。

答案 1 :(得分:1)

您应该将 IoT Discovery 上下文实体与网址相关联。因此, IoT Broker 将开始向 IoT Discovery 宣布的 IoT Providers 发送请求。

有关此新指南中 IoT Discovery 的关联过程的更多信息: tailcall