Topik ini menggunakan file demo ./demos/mqtt_upload_basic_demo.c dalam Link SDK untuk C sebagai contoh untuk menjelaskan cara memanggil API Link SDK guna mengunggah file ke Platform IoT melalui MQTT, sehingga mengurangi konsumsi sumber daya perangkat keras dan biaya pengembangan.
Latar Belakang
-
Untuk ikhtisar fitur unggah file, lihat Ikhtisar Unggah File.
-
Fitur unggah file didasarkan pada koneksi MQTT. Untuk contoh kode koneksi MQTT, lihat Hubungkan ke Platform IoT melalui MQTT.
Langkah 1: Inisialisasi unggah file
-
Tambahkan file header.
…… …… #include "aiot_mqtt_api.h" #include "aiot_mqtt_upload_api.h" #include "core_crc64.h" …… -
Konfigurasikan dependensi dasar dan output log.
/* Kumpulan fungsi adaptasi sistem yang terletak di direktori portfiles/aiot_port/. */ extern aiot_sysdep_portfile_t g_aiot_sysdep_portfile; /* Sertifikat server yang terletak di external/ali_ca_cert.c. */ extern const char *ali_ca_cert; /* Callback log, tempat log SDK dikeluarkan. */ static int32_t demo_state_logcb(int32_t code, char *message) { printf("%s", message); return 0; } -
Panggil aiot_mqtt_upload_init untuk membuat instans client unggah file dan menginisialisasi parameter default-nya.
mqtt_handle = aiot_mqtt_upload_init();
Langkah 2: Konfigurasi unggah file
Panggil aiot_mqtt_upload_setopt untuk mengonfigurasi opsi berikut.
-
Kaitkan handle koneksi MQTT.
PentingSebelum mengonfigurasi parameter untuk fitur unggah file, pastikan Anda telah mengonfigurasi kredensial otentikasi perangkat dan parameter terkait. Konfigurasi parameter koneksi MQTT.
Permintaan unggah file menggunakan koneksi MQTT. Kaitkan handle koneksi MQTT dengan opsi ini.
void *up_handle = aiot_mqtt_upload_init(); aiot_mqtt_upload_setopt(up_handle, AIOT_MQTT_UPLOADOPT_MQTT_HANDLE, mqtt_handle); -
(Opsional)
Konfigurasi parameter unggah file.
-
Contoh kode:
uint32_t rsp_timeout = 2000; aiot_mqtt_upload_setopt(up_handle, AIOT_MQTT_UPLOADOPT_RSP_TIMEOUT_MS, &rsp_timeout); uint32_t rety_count = 5; aiot_mqtt_upload_setopt(up_handle, AIOT_MQTT_UPLOADOPT_RETRY_COUNT, &rety_count); uint32_t block_size = 1024; aiot_mqtt_upload_setopt(up_handle, AIOT_MQTT_UPLOADOPT_DEFAULT_BLOCK_SIZE, &block_size); -
Parameter:
Parameter
Deskripsi
rsp_timeout
Timeout untuk retransmisi setiap chunk data, dalam milidetik.
Default: 5.000 ms (5 detik). Atur ke 0 untuk menggunakan nilai default.
Nilai contoh: 2.000 ms.
AIOT_MQTT_UPLOADOPT_RSP_TIMEOUT_MS
Mengatur timeout untuk retransmisi setiap chunk data selama unggah file.
rety_count
Jumlah upaya pengulangan saat terjadi timeout.
Default: 10.
Nilai contoh: 5.
AIOT_MQTT_UPLOADOPT_RETRY_COUNT
Mengatur jumlah upaya pengulangan saat terjadi timeout selama unggah file.
block_size
Ukuran maksimum setiap chunk data, dalam byte.
Rentang valid: 256–131.072. Default: 2.048 byte.
Nilai contoh: 1.024 byte.
AIOT_MQTT_UPLOADOPT_DEFAULT_BLOCK_SIZE
Mengatur ukuran maksimum setiap chunk data yang dikirim selama unggah file.
-
(Opsional) Langkah 3: Hitung checksum CRC64
Secara default, protokol melakukan perhitungan CRC16 pada setiap chunk data. Anda dapat secara opsional menggunakan CRC64 untuk validasi seluruh file. SDK menyertakan pustaka C untuk perhitungan CRC64.
Kode berikut menghitung checksum CRC64 untuk suatu file:
uint64_t crc = mqtt_upload_get_file_crc64(MQTT_UPLOAD_FILE_NAME);
Langkah 4: Kirim permintaan unggah file
-
Panggil aiot_mqtt_upload_open_stream untuk mengirim permintaan unggah file ke Platform IoT.
Penting-
Saat mengunggah file, jangan panggil aiot_mqtt_upload_open_stream beberapa kali untuk file yang sama. Jika unggah gagal, Anda dapat mengirim ulang permintaan untuk melanjutkannya.
-
Saat mengunggah file berbeda, Anda dapat memanggil aiot_mqtt_upload_open_stream beberapa kali. SDK mendukung unggah beberapa file secara konkuren.
-
Contoh kode:
-
Definisikan ukuran dan nama file:
#define MQTT_UPLOAD_FILE_SIZE (2 * 1024) #define MQTT_UPLOAD_FILE_NAME ("mqttuploadfile001.txt") #define MQTT_UPLOAD_FILE_SIZE2 (1 * 1024 + 127) #define MQTT_UPLOAD_FILE_NAME2 ("mqttuploadfile002.txt") -
Kirim permintaan untuk mengunggah file:
uint32_t test_userdata = 100; aiot_mqtt_upload_open_stream(up_handle, MQTT_UPLOAD_FILE_NAME, MQTT_UPLOAD_FILE_SIZE, AIOT_MQTT_UPLOAD_FILE_MODE_OVERWRITE, &crc, mqtt_upload_read_data_handler, &test_userdata); mqtt_upload_create_upload_file(MQTT_UPLOAD_FILE_NAME2, MQTT_UPLOAD_FILE_SIZE2); aiot_mqtt_upload_open_stream(up_handle, MQTT_UPLOAD_FILE_NAME2, MQTT_UPLOAD_FILE_SIZE2, AIOT_MQTT_UPLOAD_FILE_MODE_OVERWRITE, NULL, mqtt_upload_read_data_handler, NULL);
-
-
Penjelasan contoh kode:
-
Kode contoh memanggil API ini untuk mengunggah dua file secara konkuren:
mqttuploadfile001.txtdanmqttuploadfile002.txt.Penting-
Nama file memiliki batasan berikut:
-
Hanya boleh berisi angka, huruf, garis bawah (_), dan titik (.).
-
Harus dimulai dengan angka atau huruf.
-
Panjangnya tidak lebih dari 100 byte.
-
-
Ukuran file maksimum adalah 16 MB.
-
-
File
mqttuploadfile001.txtmenggunakan validasi CRC64 dan meneruskan parameteruserdata. -
File
mqttuploadfile002.txttidak menggunakan validasi CRC64, dan tidak meneruskan parameteruserdata. -
Kode contoh menggunakan kebijakan pemrosesan overwrite. Tabel berikut menjelaskan kebijakan pemrosesan yang tersedia.
Kebijakan
Deskripsi
overwrite
Kebijakan default. Platform IoT menghapus file yang sudah ada dengan nama yang sama dan hanya menyimpan file yang baru diunggah.
append
Saat perangkat mengirim permintaan unggah file, Platform IoT mengembalikan informasi tentang file yang sudah ada dengan nama yang sama. Perangkat kemudian dapat:
-
Jika file yang ada sebelumnya belum selesai diunggah, perangkat dapat melanjutkan unggahan tersebut.
CatatanPlatform IoT hanya menyimpan unggahan yang belum selesai selama 24 jam.
-
Jika file tersebut sudah diunggah sepenuhnya, perangkat harus menggunakan kebijakan overwrite atau mengganti nama file lokal sebelum mengunggah ulang.
reject
Platform IoT mengembalikan kode kesalahan yang menunjukkan bahwa file tersebut sudah ada dan menolak permintaan unggah.
-
-
-
-
Platform IoT merespons permintaan unggah file dan memicu callback pada perangkat.
Dalam callback tersebut, SDK membaca konten file atau data memori dalam bentuk chunk dan melakukan perhitungan CRC16 pada setiap chunk.
PentingSelama transfer chunk, setiap chunk data tidak boleh melebihi nilai
AIOT_MQTT_UPLOADOPT_DEFAULT_BLOCK_SIZE. Kecuali chunk terakhir, setiap chunk harus memiliki ukuran minimal 256 byte.Fungsi callback berikut
mqtt_upload_read_data_handlermembaca data file dalam bentuk chunk:int32_t mqtt_upload_read_data_handler(const aiot_mqtt_upload_recv_t *packet, uint8_t *data, uint32_t size, void *userdata) { int32_t read_len = 0; if (userdata != NULL) { uint32_t *test_userdata = (uint32_t *)userdata; printf("test_userdata:%d\r\n", *test_userdata); } if (packet == NULL) { return 0; } if (packet->desc.code == UPLOAD_FILE_OK) { if (data != NULL && size != 0) { uint32_t read_size = size; FILE *fp; char* file_name = packet->desc.file_name; fp = fopen(file_name, "r"); uint32_t offset = packet->desc.file_offset; fseek(fp, offset, SEEK_SET); printf("Open %s read at: %d\r\n", file_name, offset); read_len = fread(data, sizeof(uint8_t), read_size, fp); printf("Read_len: %d\r\n", read_len); fclose(fp); } } else { printf("Error code:%d, message:%s\r\n", packet->desc.code, packet->desc.message); } return read_len; } -
(Opsional)
Untuk membatalkan unggahan yang sedang berlangsung, panggil aiot_mqtt_upload_cancel_stream.
Referensi API: aiot_mqtt_upload_cancel_stream.
Langkah 5: Tangani status unggah
Selama unggah file, panggil aiot_mqtt_upload_process dalam loop untuk memeriksa status unggah:
while(1) {
aiot_mqtt_upload_result_t result = aiot_mqtt_upload_process(up_handle);
if (result.code == STATE_MQTT_UPLOAD_FINISHED) {
/* Unggah berhasil. */
printf("MQTT Upload file(%s) success\r\n", result.file_name);
uploaded_file++;
if (uploaded_file == 2) {
break;
}
} else if (result.code == STATE_MQTT_UPLOAD_FAILED ||
result.code == STATE_MQTT_UPLOAD_FAILED_TIMEOUT ||
result.code == STATE_MQTT_UPLOAD_CANCEL_FAILED ) {
/* Unggah gagal. */
printf("MQTT Upload file(%s) failed,res:-0x%.4X\r\n", result.file_name, -result.code);
/* Hapus instans MQTT UPLOAD. */
} else if (result.code == STATE_MQTT_UPLOAD_CANCEL_SUCCESS) {
printf("MQTT Upload file(%s) cancel success,res:-0x%.4X\r\n", result.file_name, -result.code);
} else if (result.code == STATE_MQTT_UPLOAD_FAILED_WHOLE_CHECK) {
printf("MQTT Upload file(%s) whole file md5 failed,res:-0x%.4X\r\n", result.file_name, -result.code);
}
sleep(1);
}
Langkah 6: Deinisialisasi unggah file
Panggil aiot_mqtt_upload_deinit untuk menghapus instans client unggah file dan melepaskan sumber daya:
aiot_mqtt_upload_deinit(&up_handle);
Log sisi perangkat
Lihat hasil waktu proses di sisi perangkat.
-
Log koneksi:
Koneksi perangkat yang berhasil ke Platform IoT menghasilkan log berikut:
[1637138922.457][LK-0313] MQTT user calls aiot_mqtt_connect api, connect [1637138922.457][LK-032A] mqtt host: iot-******.iot-as-mqtt.unify.aliyuncs.com [1637138922.457][LK-0317] user name: LightSwitch&a18wP****** [1637138922.457][LK-0318] password: 2AE57DEEAADE002064F87DEC55EE2EDD2A1996E44BA8F5622507D1EFD6****** success to establish tcp, fd=5 local port: 57139 [1637138922.488][LK-1000] establish mbedtls connection with server(host='iot-******.iot-as-mqtt.unify.aliyuncs.com', port=[1883]) [1637138922.507][LK-1000] success to establish mbedtls connection, (cost 45247 bytes in total, max used 47983 bytes) [1637138922.654][LK-0313] MQTT connect success in 197 ms AIOT_MQTTEVT_CONNECT -
Langganan topik unggah file:
[1637138922.654][LK-2013] aiot_mqtt_upload_init init [1637138922.654][LK-0309] sub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init_reply [1637138922.654][LK-0309] sub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send_reply [1637138922.654][LK-0309] sub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/cancel_reply -
Log permintaan unggah file:
Perangkat mengirim permintaan unggah untuk dua file:
Nama file
Ukuran (byte)
Validasi CRC64
mqttuploadfile001.txt
2048
Ya
mqttuploadfile002.txt
1151
Tidak
[1637138922.655][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init [LK-030A] > 7B 22 69 64 22 3A 22 31 22 2C 22 70 61 72 61 6D | {"id":"1","params" [LK-030A] > 73 22 3A 7B 22 66 69 6C 65 4E 61 6D 65 22 3A 22 | :{"fileName":" [LK-030A] > 6D 71 74 74 75 70 6C 6F 61 64 66 69 6C 65 30 30 | mqttuploadfile001.txt" [LK-030A] > 31 2E 74 78 74 22 2C 22 66 69 6C 65 53 69 7A 65 | ,"fileSize [LK-030A] > 22 3A 32 30 34 38 2C 22 63 6F 6E 66 6C 69 63 74 | ":2048,"conflictStrategy" [LK-030A] > 53 74 72 61 74 65 67 79 22 3A 22 6F 76 65 72 77 | :"overwrite" [LK-030A] > 72 69 74 65 22 2C 22 66 69 63 4D 6F 64 65 22 3A | ,"ficMode": [LK-030A] > 22 63 72 63 36 34 22 2C 22 66 69 63 56 61 6C 75 | "crc64","ficValue" [LK-030A] > 65 22 3A 22 66 34 38 66 34 33 37 64 35 35 64 34 | :"f48f437d55** [LK-030A] > 37 31 34 63 22 7D 7D | ****"}} [1637138922.655][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init [LK-030A] > 7B 22 69 64 22 3A 22 32 22 2C 22 70 61 72 61 6D | {"id":"2","params" [LK-030A] > 73 22 3A 7B 22 66 69 6C 65 4E 61 6D 65 22 3A 22 | :{"fileName":" [LK-030A] > 6D 71 74 74 75 70 6C 6F 61 64 66 69 6C 65 30 30 | mqttuploadfile002.txt" [LK-030A] > 32 2E 74 78 74 22 2C 22 66 69 6C 65 53 69 7A 65 | ,"fileSize [LK-030A] > 22 3A 31 31 35 31 2C 22 63 6F 6E 66 6C 69 63 74 | ":1151,"conflictStrategy" [LK-030A] > 53 74 72 61 74 65 67 79 22 3A 22 6F 76 65 72 77 | :"overwrite" [LK-030A] > 72 69 74 65 22 7D 7D | }} -
Log respons unggah file:
Log respons untuk kedua file:
-
mqttuploadfile001.txt
[1637138923.214][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init_reply [LK-030A] < 7B 22 63 6F 64 65 22 3A 32 30 30 2C 22 64 61 74 | {"code":200,"data" [LK-030A] < 61 22 3A 7B 22 66 69 6C 65 4E 61 6D 65 22 3A 22 | :{"fileName":" [LK-030A] < 6D 71 74 74 75 70 6C 6F 61 64 66 69 6C 65 30 30 | mqttuploadfile001.txt" [LK-030A] < 31 2E 74 78 74 22 2C 22 75 70 6C 6F 61 64 49 64 | ,"uploadId [LK-030A] < 22 3A 22 6B 54 48 76 63 47 45 31 78 58 56 48 33 | ":"kTHvcGE1xXVH3 [LK-030A] < 46 79 44 4C 34 4C 55 30 31 30 32 30 30 22 2C 22 | FyDL4LU******"," [LK-030A] < 6F 66 66 73 65 74 22 3A 30 2C 22 66 69 6C 65 53 | offset":0,"fileSize" [LK-030A] < 69 7A 65 22 3A 32 30 34 38 2C 22 63 6F 6E 66 6C | :2048,"conflictStrategy" [LK-030A] < 69 63 74 53 74 72 61 74 65 67 79 22 3A 22 6F 76 | :"overwrite"} [LK-030A] < 65 72 77 72 69 74 65 22 7D 2C 22 69 64 22 3A 22 | ,"id":"1" [LK-030A] < 31 22 2C 22 6D 65 73 73 61 67 65 22 3A 22 73 75 | ,"message": [LK-030A] < 63 63 65 73 73 22 7D | "success"} test_userdata:100 Open mqttuploadfile001.txt read at: 0 -
mqttuploadfile002.txt
[LK-030A] < 7B 22 63 6F 64 65 22 3A 32 30 30 2C 22 64 61 74 | {"code":200,"data" [LK-030A] < 61 22 3A 7B 22 66 69 6C 65 4E 61 6D 65 22 3A 22 | :{"fileName":" [LK-030A] < 6D 71 74 74 75 70 6C 6F 61 64 66 69 6C 65 30 30 | mqttuploadfile002.txt" [LK-030A] < 32 2E 74 78 74 22 2C 22 75 70 6C 6F 61 64 49 64 | ,"uploadId [LK-030A] < 22 3A 22 6B 6F 48 54 45 4B 46 34 59 58 31 6E 61 | ":"koHTEKF4YX1na [LK-030A] < 46 30 74 49 33 43 35 30 31 30 32 30 30 22 2C 22 | F0tI3C5******"," [LK-030A] < 6F 66 66 73 65 74 22 3A 30 2C 22 66 69 6C 65 53 | offset":0,"fileSize" [LK-030A] < 69 7A 65 22 3A 31 31 35 31 2C 22 63 6F 6E 66 6C | :1151, [LK-030A] < 69 63 74 53 74 72 61 74 65 67 79 22 3A 22 6F 76 | "conflictStrategy": [LK-030A] < 65 72 77 72 69 74 65 22 7D 2C 22 69 64 22 3A 22 | "overwrite"},"id":" [LK-030A] < 32 22 2C 22 6D 65 73 73 61 67 65 22 3A 22 73 75 | 2","message": [LK-030A] < 63 63 65 73 73 22 7D | "success"}
-
-
Log pembacaan file:
Setelah Platform IoT merespons dan memicu callback, log pembacaan file adalah:
-
mqttuploadfile001.txt
Open mqttuploadfile001.txt read at: 0 Read_len: 1024 [1637138923.215][LK-2014] Read data_len:1024[1637138923.215][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send [LK-030A] > 00 55 7B 22 69 64 22 3A 22 34 22 2C 22 70 61 72 | .U{"id":"4","params" [LK-030A] > 61 6D 73 22 3A 7B 22 75 70 6C 6F 61 64 49 64 22 | :{"uploadId" [LK-030A] > 3A 22 6B 54 48 76 63 47 45 31 78 58 56 48 33 46 | :"kTHvcGE1xXVH3F [LK-030A] > 79 44 4C 34 4C 55 30 31 30 32 30 30 22 2C 22 6F | yDL4LU******", [LK-030A] > 66 66 73 65 74 22 3A 30 2C 22 62 53 69 7A 65 22 | "offset":0,"bSize" [LK-030A] > 3A 31 30 32 34 7D 7D 55 4E 41 56 41 4F 4F 56 4C | :1024}}UNAVAOOVL [LK-030A] > 53 43 58 4C 57 59 43 54 5A 58 45 4C 47 43 4E 57 | SCXLWYCTZXELGCNW [LK-030A] > 58 55 55 41 46 54 47 46 46 42 4D 46 48 48 54 59 | XUUAFTGFFBMFHHTY [LK-030A] > 52 59 46 58 44 49 57 45 4A 4E 50 47 46 4A 49 45 | RYFXDIWEJNPGFJIE [LK-030A] > 4E 43 55 43 50 4B 54 57 54 50 4F 4F 49 45 4B 4C | NCUCPKTWTPOOIEKL [LK-030A] > 4F 5A 54 55 55 42 4C 4B 58 5A 48 59 4D 4A 49 43 | OZTUUBLKXZHYMJIC [LK-030A] > 46 41 4E 54 49 41 59 41 46 4E 4B 4D 52 4F 43 51 | FANTIAYAFNKMROCQ [LK-030A] > 48 4F 43 56 44 59 54 51 59 57 52 4D 48 4E 42 50 | HOCVDYTQY****** ...... ...... ...... -
mqttuploadfile002.txt
Open mqttuploadfile002.txt read at: 0 Read_len: 1024 [1637138923.216][LK-2014] Read data_len:1024[1637138923.216][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send [LK-030A] > 00 55 7B 22 69 64 22 3A 22 33 22 2C 22 70 61 72 | .U{"id":"3","params" [LK-030A] > 61 6D 73 22 3A 7B 22 75 70 6C 6F 61 64 49 64 22 | :{"uploadId" [LK-030A] > 3A 22 6B 6F 48 54 45 4B 46 34 59 58 31 6E 61 46 | :"koHTEKF4YX1naF [LK-030A] > 30 74 49 33 43 35 30 31 30 32 30 30 22 2C 22 6F | 0tI3C5******", [LK-030A] > 66 66 73 65 74 22 3A 30 2C 22 62 53 69 7A 65 22 | "offset":0,"bSize" [LK-030A] > 3A 31 30 32 34 7D 7D 55 4E 41 56 41 4F 4F 56 4C | :1024}}UNAVAOOVL [LK-030A] > 53 43 58 4C 57 59 43 54 5A 58 45 4C 47 43 4E 57 | SCXLWYCTZXELGCNW [LK-030A] > 58 55 55 41 46 54 47 46 46 42 4D 46 48 48 54 59 | XUUAFTGFFBMFHHTY [LK-030A] > 52 59 46 58 44 49 57 45 4A 4E 50 47 46 4A 49 45 | RYFXDIWEJNPGFJIE [LK-030A] > 4E 43 55 43 50 4B 54 57 54 50 4F 4F 49 45 4B 4C | NCUCPKTWTPOOIEKL [LK-030A] > 4F 5A 54 55 55 42 4C 4B 58 5A 48 59 4D 4A 49 43 | OZTUUBLKXZHYMJIC [LK-030A] > 46 41 4E 54 49 41 59 41 46 4E 4B 4D 52 4F 43 51 | FANTIAYAFNKMROCQ [LK-030A] > 48 4F 43 56 44 59 54 51 59 57 52 4D 48 4E 42 50 | HOCVDYTQYW****** ...... ...... ......
-
-
Log pemantauan status unggah:
Setelah unggah selesai, Platform IoT mengembalikan informasi status:
-
mqttuploadfile001.txt
CatatanFile ini menggunakan validasi integritas CRC64, sehingga log mencakup nilai CRC64 yang divalidasi.
[1637138924.099][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send_reply [LK-030A] < 7B 22 63 6F 64 65 22 3A 32 30 30 2C 22 64 61 74 | {"code":200,"data" [LK-030A] < 61 22 3A 7B 22 66 69 63 56 61 6C 75 65 43 6C 69 | :{"ficValueCli [LK-030A] < 65 6E 74 22 3A 22 66 34 38 66 34 33 37 64 35 35 | ent":"f48f437d55 [LK-030A] < 64 34 37 31 34 63 22 2C 22 66 69 63 4D 6F 64 65 | ******","ficMode [LK-030A] < 22 3A 22 63 72 63 36 34 22 2C 22 75 70 6C 6F 61 | ":"crc64","uploadId" [LK-030A] < 64 49 64 22 3A 22 6B 54 48 76 63 47 45 31 78 58 | :"kTHvcGE1xX [LK-030A] < 56 48 33 46 79 44 4C 34 4C 55 30 31 30 32 30 30 | VH3FyDL4LU****** [LK-030A] < 22 2C 22 6F 66 66 73 65 74 22 3A 31 30 32 34 2C | ","offset":1024, [LK-030A] < 22 63 6F 6D 70 6C 65 74 65 22 3A 74 72 75 65 2C | "complete":true, [LK-030A] < 22 66 69 63 56 61 6C 75 65 53 65 72 76 65 72 22 | "ficValueServer" [LK-030A] < 3A 22 66 34 38 66 34 33 37 64 35 35 64 34 37 31 | :"f48f437d55**** [LK-030A] < 34 63 22 2C 22 62 53 69 7A 65 22 3A 31 30 32 34 | **","bSize":1024 [LK-030A] < 7D 2C 22 69 64 22 3A 22 36 22 2C 22 6D 65 73 73 | },"id":"6","message" [LK-030A] < 61 67 65 22 3A 22 73 75 63 63 65 73 73 22 7D | :"success"} [1637138924.099][LK-2014] Upload total size:2048 -
mqttuploadfile002.txt
[1637138923.884][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send_reply [LK-030A] < 7B 22 63 6F 64 65 22 3A 32 30 30 2C 22 64 61 74 | {"code":200,"data" [LK-030A] < 61 22 3A 7B 22 75 70 6C 6F 61 64 49 64 22 3A 22 | :{"uploadId":" [LK-030A] < 6B 6F 48 54 45 4B 46 34 59 58 31 6E 61 46 30 74 | koHTEKF4YX1naF0t [LK-030A] < 49 33 43 35 30 31 30 32 30 30 22 2C 22 6F 66 66 | I3C5******","offset" [LK-030A] < 73 65 74 22 3A 31 30 32 34 2C 22 63 6F 6D 70 6C | :1024,"complete" [LK-030A] < 65 74 65 22 3A 74 72 75 65 2C 22 62 53 69 7A 65 | :true,"bSize [LK-030A] < 22 3A 31 32 37 7D 2C 22 69 64 22 3A 22 35 22 2C | ":127},"id":"5", [LK-030A] < 22 6D 65 73 73 61 67 65 22 3A 22 73 75 63 63 65 | "message":"success" [LK-030A] < 73 73 22 7D | } [1637138923.884][LK-2014] Upload total size:1151
-
-
Log keluar program:
Setelah unggah selesai, program berhenti berlangganan dari topik terkait dan keluar.
[1637648533.379][LK-2124] Complete upload total size:2048 MQTT Upload file(mqttuploadfile001.txt) success [1637648534.407][LK-2100] Finish upload,Deleted upload task. MQTT Upload file(mqttuploadfile002.txt) success [1637648534.407][LK-210F] aiot_mqtt_upload_deinit [1637648534.407][LK-0309] unsub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init_reply [1637648534.408][LK-0309] unsub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send_reply [1637648534.408][LK-0309] unsub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/cancel_reply [1637648534.513][LK-1000] adapter_network_deinit
Log Platform IoT
Kelola file yang diunggah dan lihat log waktu proses di Konsol Platform IoT.
-
Untuk melihat file yang diunggah, buka Devices > Devices. Klik View untuk perangkat target, lalu pilih tab File Management.
Daftar file menampilkan nama file, ukuran, waktu unggah, dan operasi. Anda dapat Download atau Delete file yang diunggah.
-
Di panel navigasi sebelah kiri, buka . Pilih produk terkait untuk melihat log unggah file perangkat.
Di tab Cloud-side Runtime Log, daftar log menampilkan Time, TraceID, Message Content, DeviceName, Business Type, Operation, Content, dan Status. Untuk unggah file perangkat, jenis bisnis adalah Device File Upload dan operasi adalah FileUploadFinished. Status 200 menunjukkan keberhasilan.
Langkah selanjutnya
-
Setelah mengonfigurasi file contoh, kompilasi file tersebut untuk membuat file yang dapat dieksekusi ./output/mqtt-upload-basic-demo. Kompilasi dan jalankan demo.
-
Untuk memecahkan masalah pesan kesalahan dalam log waktu proses, periksa deskripsi kode status di aiot_mqtt_upload_api.h.