0

我有 LoRa 传感器,它使用 Cayenne LPP 格式有效载荷发送测量值。我的网关(LOrank8v1)捕获这些数据包并将它们转换为 UDP。在网关中有一个服务(lora-gateway-bridge),它将数据包从 UDP 转换为 TCP/MQTT。

然后将 MQTT 数据包发布到云中的 mosquitto MQTT 代理。然后我运行 lora-server 和 lora-app-server 服务来解密、解码和去重数据包。

然后我再次将解密的信息发布到 MQTT 代理。以下是所有这些操作后的发布示例:application/1/node/0000000000000000/rx

{
 "applicationID":"1",
  "applicationName":"Temperature-Humidity",
  "deviceName":"Temperature-Humidity",
  "devEUI":"0000000000000  000",
  "rxInfo":[
    {
      "mac":"1dee18c14948a955",
      "rssi":-27,
      "loRaSNR":9.5,
      "name":"1dee18  c14948a955",
      "latitude":0,
      "longitude":0,
      "altitude":0
    }
  ],
  "txInfo": {
    "frequency":8685  00000,
    "dataRate": {
      "modulation":"LORA",
      "bandwidth":125,
      "spreadFactor":9
    },
    "adr":false,
    "codeRate":"4/5"
  },
  "fCnt":2,
  "fPort":1,
  "data":"AGcAxQFojA==",
  "object": {
    "temperatureSensor": {
      "0":19.7
    },
    "humiditySensor": {
      "1":70
    }
  }
}

现在我想使用 Fiware 的 JSON/MQTT IOT 代理将 MQTT 转换为 NGSI,以便将数据发布到 Context Broker。

数据应该像这样发布以便可读:

$ mosquitto_pub -h $HOST_IOTAGENT_MQTT -u theUser -P thePassword -t /myapikey/mydevicemqtt/attrs -m '{ "t": 19,7, "h": 70}'

有没有人有同样的问题?我是否应该制作一个 JSON 解析器并将数据以另一种格式重新发布到 MQTT 代理中?我该如何处理这个问题?

4

2 回答 2

0

我不知道我是否正确理解了您的问题。您的步骤没问题,您需要将一些内容从 Cayenne LPP 转换为您选择的代理所期望的 JSON 格式。当然,您首先需要通过代理注册您的设备,在此步骤中,您定义设备将提供的不同参数(这将配置您必须如何发送 json 消息)。

https://github.com/telefonicaid/iotagent-json/blob/master/docs/stepbystep.md#provisioning-the-device

这种从 Cayene 到“special-json-expected-by-the-agent”的翻译是“不可取的”步骤。因为你正在做 cayene->json->NGSI (但我不确定是否还有其他选择)。我们正在研究创建能够理解 Cayene 格式的新代理的可能性,但现在还很早,我不确定 MQTT 是否会成为选定的传输协议。此外,lora-networ-server 还将与基于 Cayene 的组合 JSON 相关,所以......这会使任务更加复杂......让我们看看......

于 2018-02-06T13:21:42.277 回答
0

您应该使用支持 Cayenne LPP 的 IoT Agent for Lorwan。

https://fiware-lorawan.readthedocs.io/en/latest/

于 2021-02-05T20:23:54.303 回答