Кодек полезной нагрузки Base64 (конечный узел B-L072Z-LRWAN1)
- Я использую узел B-L072Z-LRWAN1 с программным обеспечением " I-CUBE-LRWAN".
Я создал свою собственную сеть lorawan благодаря проекту loraserver.io, все серверы lora и сервер приложений lora написаны на языке go, поэтому Go по умолчанию кодирует байтовый массив в base64 при кодировании объекта в JSON.
когда я использую "пример ведомого AT", я могу получить правильные данные из моего узла на мою страницу php, которые декодируют массив JSON, а затем я использую эту функцию для декодирования base64:
$payload = file_get_contents('php://input'); $var = json_decode($payload,true); . . . $data64 = $var['data']; $data = base64_decode($data64); // decode function
Но когда я использую "Пример End_Node", я не могу декодировать данные с помощью моей функции php, которую я представил, у меня есть такой результат:
Я заметил, что в "программе конечного узла" есть функция, которая делает это перед отправкой данных:
#define LORAWAN_APP_DATA_BUFF_SIZE 64
static uint8_t AppDataBuff[LORAWAN_APP_DATA_BUFF_SIZE];
lora_AppData_t AppData={ AppDataBuff, 0 ,0 };
temperature = 20; /* in °C * 100 */
pressure = 30; /* in hPa / 10 */
humidity = 40; /* in %*10 */
uint32_t i = 0;
AppData.Buff[i++] = AppLedStateOn;
AppData.Buff[i++] = ( pressure >> 8 ) & 0xFF;
AppData.Buff[i++] = pressure & 0xFF;
AppData.Buff[i++] = ( temperature >> 8 ) & 0xFF;
AppData.Buff[i++] = temperature & 0xFF;
AppData.Buff[i++] = ( humidity >> 8 ) & 0xFF;
AppData.Buff[i++] = humidity & 0xFF;
AppData.BuffSize = i;
LORA_send( &AppData, LORAWAN_DEFAULT_CONFIRM_MSG_STATE);
эта тема для тех, кто знает, как данные кодируются в обеих версиях " I-CUBE-LRWAN"
Спасибо за вашу помощь:).