我有下一个配置:
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>
答案 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