MQTT.fx adalah klien MQTT berbasis Java yang dibangun di atas Eclipse Paho dan mendukung Windows, Mac, serta Linux. Gunakan MQTT.fx untuk memverifikasi konektivitas perangkat dengan IoT Platform, berlangganan topik, dan memublikasikan pesan. Topik ini menggunakan MQTT.fx pada Windows untuk mensimulasikan koneksi perangkat MQTT ke IoT Platform.
Prasyarat
- Buat produk dan perangkat, lalu peroleh parameter koneksi MQTT. Buat produk dan perangkat, Peroleh nilai parameter penandatanganan MQTT.
Contoh ini menggunakan sertifikat perangkat dan parameter koneksi MQTT dalam tabel berikut, sebagaimana dijelaskan dalam Koneksi MQTT-TLS.
Parameter Nilai ProductKey a1***DeviceName device1DeviceSecret f35***d9eclientId a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|username device1&a1***passwd 86761***21dmqttHostUrl a1***.iot-as-mqtt.cn-shanghai.aliyuncs.comport 1883 - Definisikan properti model TSL untuk menguji komunikasi uplink dan downlink. Definisikan model TSL untuk produk.Contoh ini mendefinisikan model TSL seperti pada gambar berikut:

Konfigurasi koneksi MQTT.fx
- Unduh dan instal MQTT.fx.
Topik ini menggunakan mqttfx-5.2.0-windows-x64 sebagai contoh. Antarmuka pengguna aktual mungkin berbeda dari tangkapan layar.Catatan Minta lisensi untuk tool MQTT.fx sesuai kebutuhan.
- Buka MQTT.fx. Di bilah menu, klik Extras lalu pilih Edit Connection Profiles.
- Pada halaman Edit Connection Profiles, konfigurasikan parameter berikut.
- Konfigurasikan informasi dasar.
Parameter Deskripsi Profile Name Masukkan nama kustom, misalnya iot connection. Profile Type Untuk koneksi klien ApsaraMQ for MQTT, pilih MQTT Broker. Broker Address Domain koneksi MQTT. Gunakan nilai dari bagian Prasyarat: a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com. - a1*** adalah ProductKey produk dalam contoh ini.
- cn-shanghai adalah wilayah dalam contoh ini.
Jangan sertakan nomor port.
Broker Port Atur ke 1883. Client ID Bidang protokol MQTT. Format tetap:
${ClientId}|securemode=${Mode},signmethod=${SignMethod}|timestamp=${timestamp}|.Masukkan nilai clientId yang Anda peroleh di bagian Prasyarat: a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|.
Penjelasan parameter:
- ${ClientId}: ID klien perangkat, aplikasi, atau klien web.Penting Nilai ini harus kustom dan panjangnya maksimal 64 karakter. Untuk perangkat, gunakan alamat MAC atau nomor seri (SN). Hal ini membantu Anda mengidentifikasi perangkat yang berbeda.
- ${Mode}: Mode keamanan. Nilai yang valid adalah 2 (mode koneksi langsung TLS, yang mengharuskan Anda mengonfigurasi pengaturan SSL/TLS) dan 3 (mode koneksi langsung TCP, yang tidak memerlukan pengaturan SSL/TLS).
- ${SignMethod}: Jenis algoritma. Nilai yang didukung adalah hmacsha256, hmacmd5, dan hmacsha1.
- ${timestamp}: Waktu saat ini dalam milidetik. Anda dapat mengosongkan timestamp.
Pada parameter koneksi yang disediakan oleh IoT Platform, ${ClientId} secara default berupa string yang terdiri dari
${ProductKey} + '.' + ${DeviceName}, ${Mode} secara default bernilai 2, dan ${SignMethod} secara default bernilai hmacsha256. Anda dapat memodifikasinya sesuai kebutuhan.Penting- Jangan tertukar antara Client ID di MQTT.fx dengan ${ClientId} perangkat.
- Jangan menghilangkan tanda vertikal (|) di antara parameter atau di akhir string.
- Saat mengatur parameter, pastikan tidak ada spasi di dalam atau di sekitar nilai parameter.
- Setelah memasukkan Client ID, jangan klik Generate.
General Gunakan nilai default. Sesuaikan berdasarkan kebutuhan Anda. - Klik User Credentials, centang kotak Use Username/Password, lalu atur User Name dan Password.
Parameter Deskripsi User Name Format: ${DeviceName}&${ProductKey}.Masukkan nilai username yang Anda peroleh di bagian Prasyarat: device1&a1***.
device1adalah DeviceName perangkat.a1***adalah ProductKey perangkat.
Password Dihasilkan dengan mengenkripsi parameter yang digabung menggunakan DeviceSecret dan metode penandatanganan yang dipilih. Masukkan nilai passwd yang Anda peroleh di bagian Prasyarat: 86761***21d.
Penting- Pada beberapa versi MQTT.fx, string password tidak ditampilkan setelah Anda menempelkannya. Jika kursor berpindah ke akhir kotak teks, berarti penempelan berhasil. Jangan tempel password lagi.
- Parameter dan nilainya bersifat case-sensitive.
- Client IDJika Anda mengubah ${ClientId} atau ${SignMethod}Client ID pada pengaturan Client ID, Anda harus menghitung ulang password. Pastikan password baru menggunakan nilai yang sesuai dengan parameter yang diperbarui. Untuk informasi tentang pengaturan parameter dan metode perhitungan, lihat Hitung password menggunakan skrip Node.js.
- Untuk mode koneksi langsung TLS (securemode=2), klik SSL/TLS, centang kotak Enable SSL/TLS, lalu atur Protocol ke TLSv1.2.
Penting Untuk mode koneksi langsung TCP (
securemode=3), Anda tidak perlu mengonfigurasi pengaturan SSL/TLS. Lanjutkan ke langkah berikutnya.
- Konfigurasikan informasi dasar.
- Setelah selesai mengonfigurasi, klik OK di pojok kanan bawah.
- Klik Connect.
Lampu hijau di sebelah kanan menunjukkan koneksi berhasil.
Di Konsol IoT Platform, di bawah instans yang sesuai, pilih . Pilih produk untuk melihat status perangkat. Status perangkat harus Online.
Bagian berikut menjelaskan cara menguji komunikasi uplink dan downlink menggunakan topik kustom dan topik model TSL. Jika hasil Anda berbeda dari contoh ini, koneksi telah gagal. Perbaiki konfigurasi berdasarkan informasi log.
Berkomunikasi menggunakan topik kustom
| Topik | Izin | Deskripsi |
/a1***/device1/user/update/error |
Publish | Uplink: Perangkat memublikasikan pesan ke IoT Platform. |
/a1***/device1/user/get |
Subscribe | Downlink: Perangkat berlangganan untuk menerima pesan dari IoT Platform. |
Komunikasi uplink
- Di MQTT.fx, klik Publish. Di kotak teks Publish, masukkan topik yang memiliki izin Publish:
/a1***/device1/user/update/error. - Di panel editor teks, masukkan konten pesan, lalu klik Publish.
Di kotak teks Topic, masukkan path topik kustom, misalnya
/${productKey}/${deviceName}/user/update/error. Atur QoS ke QoS 0. Di panel editor pesan, masukkan konten uji, misalnya This is a publish test.. - Masuk ke Konsol IoT Platform. Di halaman Simple Log Service instans, lihat log Device-to-Cloud Messages. Kueri log IoT Platform.
Di daftar log, klik View Details pada entri log target untuk melihat Topic pesan (misalnya
/productKey/deviceName/user/update/error) dan Content (misalnyaThis is a publish test.). Status log 200 menunjukkan bahwa pesan berhasil dikirim.
Komunikasi downlink
- Di MQTT.fx, klik Subscribe. Di kotak teks Subscribe, masukkan topik yang memiliki izin Subscribe:
/a1***/device1/user/get. - Klik Subscribe.
Setelah langganan berhasil, topik akan muncul dalam daftar.
- Masuk ke Konsol IoT Platform. Di bawah instans, pilih .
- Di kolom Actions perangkat, klik View untuk membuka halaman Device Details.
- Klik tab Topic List. Di kolom Actions topik yang dilanggan, klik Publish Message.
- Masukkan konten pesan, misalnya This is a test., lalu klik OK.
- Kembali ke MQTT.fx untuk melihat pesan yang diterima.
Di tab Subscribe, topik kustom yang dilanggan
/${productKey}/device1/user/gettelah menerima 1 pesan. Konten pesan adalahThis is a test, QoS-nya 0, dan Content Type-nyatext/plain, yang menunjukkan bahwa pesan perangkat berhasil dikirimkan melalui topik kustom dan diterima oleh klien.
Berkomunikasi menggunakan topik model TSL
| Topik | Izin | Deskripsi |
/sys/a1****/device1/thing/event/property/post |
Publish | Uplink: Perangkat melaporkan data properti ke IoT Platform. |
/sys/a1****/device1/thing/event/property/post_reply |
Subscribe | Downlink: Perangkat berlangganan untuk menerima respons laporan properti dari IoT Platform. |
/sys/a1****/device1/thing/service/property/set |
Subscribe | Downlink: Perangkat berlangganan untuk menerima perintah pengaturan properti dari IoT Platform. |
Perangkat melaporkan properti
- Di MQTT.fx, klik Subscribe. Di kotak teks Subscribe, masukkan topik yang memiliki izin Subscribe:
/sys/a1****/device1/thing/event/property/post_reply. - Di MQTT.fx, klik Publish. Di kotak teks Publish, masukkan topik yang memiliki izin Publish:
/sys/a1****/device1/thing/event/property/post. - Di panel editor teks, masukkan data properti yang ingin dilaporkan, lalu klik Publish.
Data properti yang dilaporkan harus menggunakan format JSON Alink standar, sebagaimana dijelaskan dalam Perangkat melaporkan properti. Contoh ini melaporkan data untuk properti LightCurrent dan LightSwitch.
Badan pesan JSON Alink mencakup
method(diatur kething.event.property.post),id,params(berisi nilai properti LightSwitch dan LightCurrent), danversion. - Masuk ke Konsol IoT Platform. Di bawah instans, pilih .
- Di kolom Actions perangkat, klik View. Di halaman Device Details, klik TSL Model Data untuk melihat data perangkat.
Atur properti perangkat
- Di MQTT.fx, klik Subscribe. Di kotak teks Subscribe, masukkan topik yang memiliki izin Subscribe:
/sys/a1****/device1/thing/service/property/set. - Masuk ke Konsol IoT Platform. Di bawah instans, pilih .
- Pilih perangkat yang akan di-debug. Di tab Property Debugging, atur Main Light Switch ke Off-0.
- Klik Set untuk mengirim instruksi.
- Di MQTT.fx, di tab Subscribe, lihat pesan yang diterima perangkat.
Berikut contoh pesan yang diterima:
/sys/axxxxx/device1/thing/service/property/set {"method":"thing.service.property.set","id":"2016306076","params":{"LightSwitch":0},"version":"1.0.0"}
Lihat log
- Masuk ke Konsol IoT Platform. Di halaman Simple Log Service instans, lihat log operasi termasuk waktu, TraceID, dan jenis bisnis. Kueri log IoT Platform.
- Di MQTT.fx, klik Log untuk melihat log operasi dan log error. Berikut contoh output log:
INFO --- MqttFX ClientModel : messageArrived() with topic: /ext/error/axxx0/device1 INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /a1xxx/device1/user/get INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- BrokerConnectorController : onDisconnect INFO --- ScriptsController : Clear console. INFO --- MqttFX ClientModel : Cancel script excution. INFO --- ScriptsController : Clear console. INFO --- MqttFX ClientModel : Cancel script excution. INFO --- ScriptsController : Clear console. INFO --- ScriptsController : Clear console. INFO --- BrokerConnectorController : onConnect INFO --- ScriptsController : Clear console. INFO --- MqttFX ClientModel : MqttClient with ID a1xxx0.device1|securemode=2,signmethod=hmacsha INFO --- MqttFX ClientModel : session present: false INFO --- SubscribeController : onSubscribe INFO --- MqttFX ClientModel : rebuildMessagesList() INFO --- MqttFX ClientModel : attempt to addRecentSubscriptionTopic INFO --- MqttFX ClientModel : addRecentSubscriptionTopic : de.jensd.mqttfx.entities.Topixxx1 INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /axxx/device1/user/get INFO --- MqttFX ClientModel : sucessfully subscribed to topic /a1xxxSp0/device1/user/get (QoS 0) INFO --- MqttFX ClientModel : messageArrived() with topic: /a1Kucxxx/device1/user/get INFO --- MqttFX ClientModel : messageArrived() added: message #1 to topic '/axxx/device1/user/ INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /a1xxx/device1/user/update/error INFO --- MqttFX ClientModel : sucessfully published message This is a publish test. to topic /a1Kuc5