问题
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?
回答1:
I dont know if I understood correctly your problem. Your steps are ok, you need something to translate from Cayenne LPP to the JSON format expected by you selected agent. Of course, you first need to register your device through the agent, and in this step, you define the different parameters that would be provided by your device (this will configure how you will have to send your json message).
https://github.com/telefonicaid/iotagent-json/blob/master/docs/stepbystep.md#provisioning-the-device
This translation from Cayene to the "special-json-expected-by-the-agent" is a "non-desirable" step. Because you are doing cayene->json->NGSI (but I am not sure if there are other options). We are studying the possibility of creating a new agent capable of understanding Cayene format, but it is still very early, and I am not sure if MQTT will be the selected transport protocol. Also, the lora-networ-server would also related to the composed JSON based on Cayene, so... this would make the task more complicated... lets see...
来源:https://stackoverflow.com/questions/48638932/send-lora-measures-to-fiware-iot-agent-via-mqtt