Search code examples
jsonmqttiotfiwarelora

Send LoRa measures to Fiware IOT agent via MQTT


I have LoRa sensors which send measures with Cayenne LPP format payload. My Gateway(LOrank8v1) catches these packets and converts them to UDP. In the gateway there is a service(lora-gateway-bridge) which converts the packets from UDP to TCP/MQTT.

Then the MQTT packets are published to the mosquitto MQTT broker in the cloud. Then i run lora-server and lora-app-server services in order to decrypt,decode and deduplicate the packets.

Then i publish the decrypted information to the MQTT broker again. Here is an example of a publication after all these operations: 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
    }
  }
}

Now i want to use Fiware's JSON/MQTT IOT agent to convert MQTT to NGSI in order to publish data to the Context Broker.

The data should be publised like this to be readable :

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

Has anyone the same problem? Should i make a JSON parser and republish the data to another format into the MQTT Broker? How could i deal with this problem?


Solution

  • You should use the IoT Agent for Lorwan it supports Cayenne LPP.

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