3.9 KiB
Kendalikan lampu malam Anda melalui Internet - Wio Terminal
Dalam bagian pelajaran ini, Anda akan berlangganan perintah yang dikirim dari broker MQTT ke Wio Terminal Anda.
Berlangganan perintah
Langkah berikutnya adalah berlangganan perintah yang dikirim dari broker MQTT, dan meresponsnya.
Tugas
Berlangganan perintah.
-
Buka proyek lampu malam di VS Code.
-
Tambahkan kode berikut ke bagian bawah file
config.h
untuk mendefinisikan nama topik untuk perintah:const string SERVER_COMMAND_TOPIC = ID + "/commands";
SERVER_COMMAND_TOPIC
adalah topik yang akan dilanggan oleh perangkat untuk menerima perintah LED. -
Tambahkan baris berikut ke akhir fungsi
reconnectMQTTClient
untuk berlangganan topik perintah saat klien MQTT tersambung kembali:client.subscribe(SERVER_COMMAND_TOPIC.c_str());
-
Tambahkan kode berikut di bawah fungsi
reconnectMQTTClient
.void clientCallback(char *topic, uint8_t *payload, unsigned int length) { char buff[length + 1]; for (int i = 0; i < length; i++) { buff[i] = (char)payload[i]; } buff[length] = '\0'; Serial.print("Message received:"); Serial.println(buff); DynamicJsonDocument doc(1024); deserializeJson(doc, buff); JsonObject obj = doc.as<JsonObject>(); bool led_on = obj["led_on"]; if (led_on) digitalWrite(D0, HIGH); else digitalWrite(D0, LOW); }
Fungsi ini akan menjadi callback yang dipanggil oleh klien MQTT saat menerima pesan dari server.
Pesan diterima sebagai array bilangan bulat 8-bit tak bertanda, sehingga perlu dikonversi menjadi array karakter agar dapat diperlakukan sebagai teks.
Pesan berisi dokumen JSON, dan didekode menggunakan pustaka ArduinoJson. Properti
led_on
dari dokumen JSON dibaca, dan tergantung pada nilainya, LED akan dinyalakan atau dimatikan. -
Tambahkan kode berikut ke fungsi
createMQTTClient
:client.setCallback(clientCallback);
Kode ini menetapkan
clientCallback
sebagai callback yang akan dipanggil saat pesan diterima dari broker MQTT.💁 Handler
clientCallback
dipanggil untuk semua topik yang dilanggan. Jika Anda nantinya menulis kode yang mendengarkan beberapa topik, Anda dapat mendapatkan topik tempat pesan dikirim dari parametertopic
yang diteruskan ke fungsi callback. -
Unggah kode ke Wio Terminal Anda, dan gunakan Serial Monitor untuk melihat tingkat cahaya yang dikirim ke broker MQTT.
-
Sesuaikan tingkat cahaya yang terdeteksi oleh perangkat fisik atau virtual Anda. Anda akan melihat pesan diterima dan perintah dikirim di terminal. Anda juga akan melihat LED dinyalakan dan dimatikan tergantung pada tingkat cahaya.
💁 Anda dapat menemukan kode ini di folder code-commands/wio-terminal.
😀 Anda telah berhasil memprogram perangkat Anda untuk merespons perintah dari broker MQTT.
Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI Co-op Translator. Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.