我有 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 代理中?我该如何处理这个问题?