Jalankan Cloud MQTT Mosquitto Broker Anda (akses dari mana saja menggunakan Digital Ocean)

Panduan ini menjelaskan cara menginstal Mosquitto Broker untuk komunikasi MQTT di VM (Virtual Machine) Linux Ubuntu menggunakan Digital Ocean. Menjalankan MQTT Mosquitto Broker di cloud memungkinkan Anda untuk menghubungkan beberapa papan ESP32/ESP8266 dan perangkat IoT lainnya dari mana saja menggunakan jaringan yang berbeda selama mereka memiliki koneksi Internet. Anda juga akan mempelajari cara menghubungkan papan ESP Anda ke broker MQTT cloud menggunakan Arduino IDE.

Memperkenalkan Protokol MQTT

Kami memiliki panduan yang memperkenalkan Anda pada protokol MQTT. MQTT adalah singkatan dari Message Queuing Telemetry Transport. Ini adalah sistem penerbitan dan berlangganan yang ringan di mana Anda dapat menerbitkan dan menerima pesan sebagai klien. Baca Apa itu MQTT dan cara kerjanya.

Pialang MQTT terutama bertanggung jawab untuk menerima semua pesan MQTT, memfilter pesan, memutuskan siapa yang tertarik pada setiap pesan dan kemudian, menerbitkan pesan ke semua klien yang berlangganan.

Ada beberapa broker yang bisa Anda gunakan. Dalam proyek dan tutorial Otomasi Rumah kami, kami menggunakan Broker MQTT Nyamuk yang populer. Sangat mudah untuk menginstal, mengkonfigurasi dan menggunakan.

Dalam tutorial ini, itu akan diinstal pada VM Linux Ubuntu (mesin virtual) yang berjalan di layanan hosting Digital Ocean.

Ikhtisar Pialang MQTT Cloud

Apa keuntungan menggunakan broker Cloud MQTT dan bagaimana cara kerjanya?

Menggunakan broker Cloud MQTT memungkinkan Anda memiliki beberapa perangkat IoT (seperti papan ESP32 dan ESP8266) berkomunikasi satu sama lain menggunakan MQTT, bahkan jika mereka berada di jaringan yang berbeda (lokasi berbeda terhubung ke router berbeda). Berikut ikhtisarnya.

    • Broker Mosquitto MQTT berjalan di cloud (layanan host disediakan oleh Digital Ocean). Jadi, ia dapat menerima pesan dari perangkat IoT di seluruh dunia.

    • Anda dapat memiliki beberapa papan ESP di jaringan berbeda yang menggunakan broker Cloud MQTT tersebut.

    • Setiap papan ESP harus terhubung ke router yang memungkinkan akses ke internet untuk terhubung dengan broker.

    • Karena papan menggunakan broker MQTT yang sama, mereka dapat berkomunikasi satu sama lain dengan menerbitkan dan berlangganan topik yang sama.

Diagram berikut menunjukkan contoh aplikasi yang mungkin:

    • Gambar sebelumnya menunjukkan dua papan ESP32 di jaringan yang berbeda. Setiap papan terhubung ke router yang berbeda dengan akses ke internet.

    • Meskipun mereka berada di jaringan yang berbeda, mereka dapat berkomunikasi satu sama lain menggunakan broker Cloud MQTT dengan berlangganan dan menerbitkan topik yang sama.

    • ESP32 #1 menerbitkan topik yang menjadi langganan ESP32 #2 (board2/output1). Pesan tersebut dapat menunjukkan apakah ESP32 #2 harus mengaktifkan atau menonaktifkan output. Jadi, ESP32 #1 dapat mengontrol output ESP32 #2.

    • Demikian pula, ESP32 #2 menerbitkan pembacaan suhu pada topik board2/suhu. ESP32 #1 berlangganan topik itu, sehingga menerima pembacaan sensor board2.

Anda juga dapat menginstal Node-RED di cloud yang sama (akun hosting Digital Ocean) untuk mengontrol dan memantau papan Anda dari mana saja di dunia menggunakan komputer atau ponsel cerdas Anda. Anda dapat mengikuti tutorial ini: Akses Dasbor Node-RED dari Mana Saja menggunakan Digital Ocean

Layanan Hosting – Digital Ocean

Untuk menjalankan Cloud MQTT Mosquitto Broker, Anda perlu menggunakan layanan hosting yang memungkinkan Anda memiliki akses ke baris perintah dan menginstal perangkat lunak apa pun yang Anda butuhkan. Saya sarankan menggunakan Digital Ocean yang menawarkan server Ubuntu yang dapat Anda kelola melalui baris perintah.

Saya telah menggunakannya sejak 2015 dan saya pribadi merekomendasikannya, tetapi Anda dapat menggunakan layanan hosting lainnya. Layanan hosting apa pun yang menawarkan VM Linux Ubuntu dengan akses konsol penuh akan berfungsi.

Jika Anda tidak memiliki akun hosting, saya sarankan untuk mendaftar ke Digital Ocean. Saat Anda mendaftar ke Digital Ocean, Anda dapat mencobanya selama 60 hari (mereka memberi Anda kredit gratis untuk menguji platform).

Ambil Linux Ubuntu VM di Digital Ocean »

Jika Anda menyukai proyek kami, Anda dapat mempertimbangkan untuk mendaftar ke layanan hosting yang direkomendasikan, karena Anda akan mendukung pekerjaan kami.

Catatan: Anda juga dapat menjalankan Mosquitto MQTT Broker di jaringan lokal Anda menggunakan papan Raspberry Pi. Namun, tujuan dari tutorial ini adalah untuk menjalankan broker MQTT di cloud untuk berkomunikasi dengan papan (atau perangkat IoT lainnya) di berbagai jaringan.

Membuat Akun Digital Ocean

Untuk membuat Akun Digital Ocean, buka Digital Ocean dan tekan tombol “Sign Up”.

Buat akun Anda, dan Anda akan menerima kredit $100 yang dapat Anda gunakan selama 60 hari untuk menguji platform. Anda mungkin perlu memasukkan kartu kredit yang valid, tetapi Anda dapat membatalkan akun Anda kapan saja jika Anda tidak lagi tertarik menggunakan layanan ini setelah uji coba gratis selama 60 hari.

Selesaikan pembuatan akun menggunakan metode pilihan Anda (saya selalu menggunakan opsi Email).

Konfirmasi akun dan login Anda, Anda akan melihat Dashboard serupa.

Buat Tetesan (Linux Ubuntu VM)

Untuk membuat VM baru, tekan tombol "Create" di sudut kanan atas dan pilih opsi "Droplets". Digital Ocean memanggil Droplets ke VM-nya.

Penting: jika Anda sudah menjalankan Droplet dengan Node-RED terinstal, Anda dapat melewati langkah-langkah berikutnya (membuat Droplet). Anda dapat menjalankan broker Node-RED dan Mosquitto MQTT di server yang sama.

Untuk panduan ini saya akan menggunakan Ubuntu 20.04 (LTS) x64, dan saya sarankan memilih opsi yang sama. Anda juga dapat menggunakan paket awal "Basic".

Di menu sumber daya VM, Anda dapat memilih paket termurah seharga $5/bulan. Bahkan dengan paket terendah, ia akan menjalankan Broker MQTT dan Node-RED dengan lancar.

Pilih lokasi pusat data Mesin Virtual yang lebih dekat dengan Anda, dalam kasus saya, saya telah menggunakan wilayah "London".

Buat kata sandi root yang memungkinkan Anda mengakses Droplet Anda (simpan kata sandi ini, karena Anda akan memerlukannya untuk mengakses server Anda).

Terakhir, pilih nama host untuk dengan mudah mengidentifikasi Mesin Virtual yang Anda gunakan. Saya menamai Droplet saya sebagai "mqtt-cloud-server". Itu saja, Anda hanya perlu menekan tombol hijau besar "Create Droplets" untuk menyelesaikan prosesnya.

Tunggu beberapa menit dan ketika bilah kemajuan berakhir, Droplet Anda sudah siap.

Mengakses Konsol VM Ubuntu Linux Anda

Saat Droplet Anda siap, buka server yang baru Anda buat (dalam kasus saya, ini disebut "mqtt-cloud-server").

Pilih menu "Access" dan tekan tombol "Launch Console".

Jendela browser baru akan terbuka di komputer Anda.

Ketik login Anda (root) dan kata sandi yang ditentukan sebelumnya, tekan tombol Enter untuk mengakses server Anda.

Ada langkah opsional, tetapi ini melampaui cakupan tutorial ini. Tidak diperlukan untuk membuat proyek ini bekerja: siapkan server Anda dengan non-root, pengguna yang mendukung sudo dan firewall dasar dengan Pengaturan Server Awal ini dengan Ubuntu 20.04.

Menginstal Mosquitto MQTT Broker di Linux Ubuntu VM Digital Ocean

Mari kita instal Mosquitto Broker.

Sebelum menginstal perangkat lunak, perbarui dan tingkatkan server Anda (ini akan memakan waktu beberapa menit untuk menyelesaikannya).

Untuk menginstal MQTT Mosquitto Broker di Ubuntu, jalankan:

Itu dia! Broker MQTT Nyamuk diinstal.

Menguji Instalasi Broker Nyamuk MQTT

Untuk menguji instalasi broker MQTT Anda, Anda dapat menggunakan jendela terminal lain (jendela Terminal #2) dan membangun komunikasi SSH dengan server Anda (Anda dapat menggunakan Putty atau klien SSH serupa).

Login sebagai root dan masukkan kata sandi Anda.

Kemudian, masukkan perintah berikut untuk berlangganan topik pengujian.


Di jendela Terminal #1 Anda, gunakan perintah berikutnya untuk menerbitkan pesan "Halo, dunia!" dalam topik tes:


Jendela terminal #2 akan menerima pesan seperti yang diilustrasikan di bawah ini:

Mengamankan Broker MQTT Anda (Otentikasi dengan Nama Pengguna dan Kata Sandi)

Saat ini, siapa pun yang mengetahui alamat IP Pialang MQTT Anda dapat memublikasikan dan berlangganan topik MQTT Anda. Kami dapat mengamankan instalasi MQTT Broker dengan menambahkan otentikasi yang diperlukan dengan nama pengguna dan kata sandi.

Masukkan perintah serupa, tetapi ganti YOUR_USERNAME dengan nama pengguna yang ingin Anda gunakan:

Saya akan menggunakan pengguna MQTT sebagai ruisanto. :

Saat Anda menjalankan perintah sebelumnya dengan nama pengguna yang diinginkan, Anda akan diminta memasukkan kata sandi. Masukkan kata sandi dan simpan kombinasi pengguna/pass. Anda akan membutuhkannya untuk mengautentikasi broker nanti dalam panduan ini.

Terakhir, buka default.conf untuk mengeditnya dengan menjalankan perintah berikut:

Tambahkan dua baris ini untuk mewajibkan pengguna yang diautentikasi untuk memublikasikan pesan MQTT dan berlangganan topik MQTT.

File Anda akan terlihat seperti ini:

Keluar dari file dan simpan (Ctrl+X, Y, Enter key) dan mulai ulang broker MQTT Anda agar perubahan diterapkan:

Sekarang, jika Anda mencoba memublikasikan pesan baru tanpa memberikan pengguna/pass:

Anda akan mendapatkan "Kesalahan koneksi: Koneksi Menolak: tidak diotorisasi."

Sekarang, berlangganan topik pengujian MQTT menggunakan argumen -u an -P untuk membuat autentikasi sebagai berikut:


Dan lakukan hal yang sama untuk memublikasikan pesan:


Gunakan tabel berikutnya sebagai referensi untuk parameter yang dapat Anda berikan dalam perintah mosquitto_sub dan mosquitto_pub:

Menghubungkan ESP32 Anda ke MQTT Mosquitto Broker

Bagi kami di Blog RNT, kami sering menggunakan broker MQTT dalam proyek ESP32 dan ESP8266 kami, jadi mari kita uji bagaimana Anda dapat menghubungkan papan ESP32 ke Pialang MQTT Cloud Anda.

Sebelum melanjutkan dengan tutorial ini, pastikan Anda melengkapi prasyarat berikut.

Arduino IDE

Kami akan memprogram board ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32.

    Memasang Board ESP32 di Arduino IDE(Windows, Mac OS X, Linux)

Perpustakaan MQTT

Untuk menggunakan MQTT dengan ESP32 kami akan menggunakan Async MQTT Client Library.

Memasang Pustaka Klien MQTT Async

    Klik di sini untuk mengunduh pustaka klien Async MQTT. Anda harus memiliki folder .zip di folder Unduhan Anda

    • Buka zip folder .zip dan Anda akan mendapatkan folder async-mqtt-client-master

    • Ganti nama folder Anda dari async-mqtt-client-master menjadi async_mqtt_client

    • Pindahkan folder async_mqtt_client ke folder library instalasi Arduino IDE Anda

    • Terakhir, buka kembali IDE Arduino Anda

Atau, Anda dapat pergi ke Sketch > Include Library > Add . ZIP library dan pilih library yang baru saja Anda unduh.

Memasang Pustaka TCP Async

Untuk menggunakan MQTT dengan ESP, Anda juga memerlukan pustaka Async TCP.

    • Klik di sini untuk mengunduh pustaka klien Async TCP. Anda harus memiliki folder .zip di folder Unduhan Anda

    • Buka zip folder .zip dan Anda akan mendapatkan folder master AsyncTCP

    • Ganti nama folder Anda dari AsyncTCP-master menjadi AsyncTCP

    • Pindahkan folder AsyncTCP ke folder perpustakaan instalasi Arduino IDE Anda

    • Terakhir, buka kembali IDE Arduino Anda

Atau, Anda dapat pergi ke Sketch > Include Library > Add . ZIP library dan pilih library yang baru saja Anda unduh.

ESP32 MQTT Publikasikan Pesan ke Cloud MQTT Broker

Salin kode berikut ke Arduino IDE Anda. Untuk membuatnya bekerja untuk Anda, Anda perlu memasukkan kredensial jaringan Anda serta detail broker MQTT (Alamat IP Digital Ocean Droplet Anda, nama pengguna dan kata sandi broker).






Ketik kredensial jaringan Anda pada baris berikut.

Masukkan alamat IP Digital Ocean Droplet, sehingga ESP32 terhubung ke broker Anda (dalam kasus saya, ini adalah 178.62.83.231).

Jika broker Anda memerlukan otentikasi, ketik nama pengguna MQTT dan kata sandi MQTT Anda.

Menguji Pesan Penerbitan MQTT ESP32

Jika Anda memiliki ESP32 yang menjalankan kode yang diunggah dan Anda membuka monitor Arduino IDE Serial Anda, Anda akan melihat bahwa ESP32 Anda menerbitkan pesan baru setiap 5 detik.

Buat koneksi SSH dengan klien SSH Anda (seperti Putty) dan ketik:

Anda harus mulai menerima pesan MQTT baru yang diterbitkan oleh ESP32 Anda.

Broker Cloud MQTT Memublikasikan Pesan ke ESP32

Sketsa berikutnya membuat ESP32 berlangganan topik MQTT cloud untuk menerima pesan. Salin ke Arduino IDE Anda, lalu masukkan kredensial jaringan Anda serta detail broker MQTT (Alamat IP Digital Ocean Droplet Anda dan nama pengguna dan kata sandi broker).







Ketik kredensial jaringan Anda pada baris berikut.

Masukkan alamat IP Digital Ocean Droplet, sehingga ESP32 terhubung ke broker Anda (dalam kasus saya, ini adalah 178.62.83.231).

Jika broker Anda memerlukan otentikasi, ketik nama pengguna MQTT dan kata sandi MQTT Anda.

Menguji ESP32 Berlangganan Topik MQTT

Untuk menguji apakah ESP32 Anda menerima pesan MQTT, di konsol Digital Ocean Anda, mulailah menerbitkan pesan yang berbeda (misalnya "Hai #1!", "Hai #2!", dll).


ESP32 Anda akan menerima setiap pesan dan mencetaknya di Serial Monitor, seperti yang ditunjukkan pada gambar di bawah.

Dalam contoh singkat ini, kami telah menunjukkan kepada Anda cara memublikasikan dan berlangganan pesan MQTT menggunakan broker Cloud MQTT. Idenya adalah menggunakan beberapa papan ESP32 atau ESP8266 yang menerbitkan dan berlangganan topik yang sama untuk berkomunikasi satu sama lain dan/atau menggunakan Node-RED di cloud untuk berinteraksi dengan papan tersebut.

(Opsional) Mengambil Lebih Jauh – Permintaan Terenkripsi MQTT Mosquitto Broker

Metode terbaik untuk menambahkan sertifikat SSL ke server Anda adalah dengan mengarahkan nama domain ke server Anda dan menggunakan sertifikat Let's Encrypt.

    • Anda harus membeli nama domain dan mengarahkannya ke Digital Ocean Name Server.

    • Anda juga harus mengikuti petunjuk berikut ini untuk menyiapkan Mode Standalone Certbot untuk Mengambil Let's Encrypt SSL Certificates di Ubuntu (panduan ini juga berfungsi dengan Ubuntu 20.04).

Setelah nama domain dan Let's Encrypt SSL Certificates siap, ikuti instruksi selanjutnya untuk mengamankan broker Mosquitto Anda.

Untuk mengaktifkan enkripsi SSL, kita perlu memberi tahu Mosquitto di mana sertifikat Let's Encrypt kita disimpan. Buka file konfigurasi yang sebelumnya kita mulai:

Tambahkan baris berikutnya untuk membuat default.conf Anda menambahkan sertifikat Let's Encrypt.

Listener 1883 adalah port MQTT standar yang tidak terenkripsi. Localhost menginstruksikan Mosquitto untuk hanya mengikat port ini ke antarmuka localhost, sehingga tidak lagi dapat diakses secara eksternal.

Di sisi lain, listener 8883 menyiapkan listener terenkripsi pada port 8883. Tiga baris berikutnya mengarahkan Mosquitto ke file Let's Encrypt yang sesuai untuk menyiapkan koneksi terenkripsi.

Simpan dan keluar dari file (Ctrl+X, Y, tombol Enter), lalu restart Mosquitto untuk memperbarui pengaturan:

Perbarui firewall untuk mengizinkan koneksi ke port 8883.

Sekarang, Anda berlangganan topik uji MQTT di port terenkripsi (8883). Jangan lupa untuk mengganti example.com dengan nama domain Anda di perintah berlangganan dan terbitkan.

Anda dapat memublikasikan pesan terenkripsi:

Dengan pengaturan ini, Anda harus menyiapkan ESP32/ESP8266 Anda untuk membuat permintaan MQTT terenkripsi pada port 8883.

Membungkus

Panduan lengkap ini telah diuji dan harus berfungsi, namun ada banyak langkah dan harus diikuti persis seperti yang kami jelaskan, jika tidak, sesuatu mungkin tidak berfungsi dengan baik.

Dalam semua panduan dan proyek kami, kami selalu berusaha membantu jika ada yang terjebak. Namun, dalam kasus khusus ini, ada begitu banyak langkah sehingga sangat sulit untuk membantu Anda tanpa memiliki akses ke server dan mengujinya (tentu saja, kami tidak memiliki sumber daya untuk membantu semua orang secara pribadi).

Jika Anda memiliki masalah dalam menginstal broker Mosquitto MQTT, menyiapkan server Linux Ubuntu Anda, menjalankan Node-RED, menginstal sertifikat SSL, hubungi dukungan Digital Ocean dan jelaskan dengan tepat apa yang terjadi. Saya telah menggunakan layanan mereka sejak 2015 dan mereka selalu memiliki tim dukungan yang sangat membantu (atau cukup gunakan Forum mereka).

Nah, jika Anda ingin menginstal Node-RED di Digital Ocean, ikuti tutorial selanjutnya: Akses Dashboard Node-RED dari Anywhere menggunakan Digital Ocean.

Baca panduan berikutnya untuk mempelajari lebih lanjut tentang MQTT:

    Apa itu MQTT dan Bagaimana Cara Kerjanya

    ESP32 MQTT – Publikasikan dan Berlangganan dengan Arduino IDE

    ESP32 MQTT – Publikasikan Pembacaan Sensor BME280 (Arduino IDE)

Sumber : randomnerdtutorials.com

Posting Komentar

0 Komentar