我目前正在尝试使用Configuration Manager(NECongMan)和Fiware Orion作为上下文生成器来配置Fiware Iot Broker。我对NGSI10 subscribeContext操作有疑问。
这是发送给物联网经纪人的请求:
<?xml version="1.0"?>
<subscribeContextRequest>
<entityIdList>
<entityId type="Room" isPattern="false">
<id>Room1</id>
</entityId>
</entityIdList>
<attributeList>
<attribute>temperature</attribute>
</attributeList>
<reference>http://localhost:1028/accumulate</reference>
<duration>PT1H</duration>
<notifyConditions>
<notifyCondition>
<type>ONCHANGE</type>
<condValueList>
<condValue>pressure</condValue>
</condValueList>
</notifyCondition>
</notifyConditions>
<throttling>PT5S</throttling>
</subscribeContextRequest>
IoTBroker尝试联系Orion发出subscribeContextRequest但持续时间字符串已更改:
<subscribeContextRequest>
<entityIdList>
<entityId
type="Room"
isPattern="false">
<id>
Room1
</id>
</entityId>
</entityIdList>
<attributeList>
<attribute>
temperature
</attribute>
</attributeList>
<reference>
http://192.168.16.178:8080/ngsi10/notify
</reference>
<duration>
P0Y0M0DT0H59M58.157S
</duration>
<notifyConditions>
<notifyCondition>
<type>
ONCHANGE
</type>
<condValueList>
<condValue>
pressure
</condValue>
</condValueList>
</notifyCondition>
</notifyConditions>
<throttling>
PT5S
</throttling>
</subscribeContextRequest>
但是Orion会给出错误(无效的有效负载:持续时间字符串中的语法错误)。你知道如何解决这个问题吗?
答案 0 :(得分:0)
对于一小时,持续时间参数可以是P1H而不是PT1H,根据ISO 8601标准格式,似乎 PT仅用于避免P1M一个月与PT1M一分钟之间的歧义强>
希望有所帮助
答案 1 :(得分:0)
猎户座0.26.1(写入此时刻的最后一个版本)不支持持续时间字符串中秒的十进制值(如58.157)。我们创建了an issue about that,我们的计划是在下一个版本(0.27.0)解决它。
不确定修改IoTBroker行为的方式(为了将secons向上/向下舍入到它发送给Orion的请求中的整数)将是一个有效的解决方法......我不知道有关IoTBroker的详细信息。
编辑:在while字段中支持小数部分的修复程序刚刚在Orion的develop分支中实现,因此它将在下一个Orion版本(0.27.0)中提供。或者,您可以下载源代码并构建代码以立即获得修复。