使用设备和IoTAgent-UL创建mosquitto订阅的正确方法是什么

时间:2019-05-29 19:40:38

标签: mqtt fiware

我目前正在开发一个基于Fiware的网络,其中的设备可以通过MQTT通过HTTP和JSON进行报告,并且运行良好。网络已经增加,现在我需要连接一些使用UltraLight协议的设备。这样做,我遇到了一些麻烦。

(据我所知)我遵循了FIWARE Foundation在不同站点中提供的官方文档(官方github repo,readthedocs等)。我尝试将新代理与JSON代理安装在同一台机器上,但无法正常工作-稍后再进行介绍-。为了消除任何冲突,我使用了另一个VM,在该VM中-这次是Docker-我部署了Orion CB,Mosquitto CB,mongo和代理的新实例;基本上是全新的Fiware堆栈。

部署完所有内容后,我通过其余的API(POST / iot / devices)在代理上创建了一个新的服务组,并为其提供了api密钥和CB地址。在这一步中,我将资源字段留空,因为我真的不知道它在整个系统中扮演什么角色。预期的是201。 下一步是配置设备,我通过将其发布到具有所需属性以及上一段中提到的api密钥的agent / iot / devices来完成。再次是201。

当我尝试使用mosquitto_pub发布新度量时,就会出现问题。该命令运行平稳,但是Orion中的实体未更新。访问Orions DB(mongo),我可以检查是否已成功创建实体,但该实体具有空值。此外,检查日志会得到以下结果:

mosquitto    | 1559157902: New connection from 10.150.150.173 on port 1883.
mosquitto    | 1559157902: New client connected from 10.150.150.173 as mosqpub|28750-mqtt (p1, c1, k60).
fiware-iot-agent | time=2019-05-29T19:25:02.374Z | lvl=DEBUG | corr=2c8aa6e3-faab-4166-9e20-0b362c165939 | trans=2c8aa6e3-faab-4166-9e20-0b362c165939 | op=IoTAgentNGSI.MongoDBGroupRegister arams ["resource","apikey"] with queryObj {"resource":"/iot/d","apikey":"apikeymia"} | comp=IoTAgent
fiware-iot-agent | time=2019-05-29T19:25:02.381Z | lvl=DEBUG | corr=2c8aa6e3-faab-4166-9e20-0b362c165939 | trans=2c8aa6e3-faab-4166-9e20-0b362c165939 | op=IoTAgentNGSI.MongoDBGroupRegister elds [["resource","apikey"]] not found: [{"resource":"/iot/d","apikey":"apikeymia"}] | comp=IoTAgent
fiware-iot-agent | time=2019-05-29T19:25:02.382Z | lvl=ERROR | corr=2c8aa6e3-faab-4166-9e20-0b362c165939 | trans=2c8aa6e3-faab-4166-9e20-0b362c165939 | op=IOTAUL.Common.Binding | srv=n/a | essing device measures [/apikeymia/motion003/attrs] | comp=IoTAgent
mosquitto    | 1559157902: Client mosqpub|28750-mqtt disconnected.

每次尝试发布新的测量结果之后。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

  

在这一步中,我将资源字段留空,因为我真的不知道它在整个系统中起什么作用

查看日志:

[...] queryObj {"resource":"/iot/d","apikey":"apikeymia"} | comp=IoTAgent
[...] not found: [{"resource":"/iot/d","apikey":"apikeymia"}] | comp=IoTAgent

我建议在"/iot/d"字段中使用resource而不是空。也许可以解决问题。