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

What's the right way to create a mosquitto subscription with a device and IoTAgent-UL

我目前正在开发一个基于 Fiware 的网络,其中我的设备通过 HTTP 和 JSON 通过 MQTT 报告并且工作正常。网络增加了,现在我需要附加一些使用 UltraLight 协议的设备。这样做,我遇到了一些麻烦。

我(据我所知)遵循了 FIWARE 基金会在不同站点提供的官方文档(官方 github 存储库、readthedocs 等)。我尝试在与 JSON 代理相同的机器上安装新代理,但它没有工作 - 稍后会详细介绍 -。为了消除任何冲突,我使用了另一个虚拟机,这次在 Docker 上部署了一个新的 Orion CB 实例、Mosquitto CB、mongo 和代理;一个新的完整的 Fiware 堆栈,基本上。

一切都部署好后,我通过rest API(POST /iot/devices)在代理上创建了一个新的服务组,给了它一个api键和CB 地址。在这一步中我将资源字段留空,因为我真的不知道它在整个系统中扮演什么角色。正如预期的那样,响应是 201。 下一步是配置设备,我通过 POSTing 代理 /iot/devices 使用我想要的属性和上一段中提到的 api 键来完成。再一次,响应是 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.

每次尝试发布新测量值后。

如有任何帮助,我们将不胜感激

In this step I left the resource field empty, because I don´t really know what role does it play in the whole system

查看日志:

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

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