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