3.1 LoRaWAN – mensajes MQTT

Los datos son enviados como un tren de bits escritos en hexadecimal desde el dispositivo.

Por ejemplo, un mensaje a transmitir conformado por 4 datos numéricos en hexadecimal desde el dispositivo son:

static void prepareTxFrame( uint8_t port ){
    appDataSize = 4;//AppDataSize max value is 64
    appData[0] = 0x00;
    appData[1] = 0x01;
    appData[2] = 0x02;
    appData[3] = 0x03;
}

Se leen en un mensaje mqtt como:

application/1/device/3532363324003700/event/up {
    "applicationID":"1",
    "applicationName":"GirniAppPrueba01",
    "deviceName":"GirniDispositivo01",
    "devEUI":"3532363324003700",
    "txInfo":{"frequency":902700000,"dr":0},
    "adr":true,
    "fCnt":0,
    "fPort":2,
    "data":"AAECAw=="
    }

por lo que el mensaje recibido por el gateway es:

"data":"AAECAw=="

que para leerlo nuevamente en hexadecimal requiere ser traducido desde «base64» por ejemplo en la consola de Rasberry OS como:

pi@GWHTM01:~ $ echo -n AAECAw== | base64 --decode | hexdump -C
00000000  00 01 02 03                                       |....|
00000004

que es el mensaje original enviado desde el dispositivo