Daftar Isi:
- Langkah 1: Apa itu MQTT?
- Langkah 2: Menginstal Broker MQTT di Raspberry Pi
- Langkah 3: Menguji Pialang
- Langkah 4: Menyiapkan ESP8266 (Adafruit HUZZAH)
- Langkah 5: Memprogram ESP8266
- Langkah 6: Menginstal Klien Python (paho-mqtt)
- Langkah 7: Klien Python - Berlangganan
- Langkah 8: Berkomunikasi Antar Perangkat ESP8266
Video: Cara Menggunakan MQTT Dengan Raspberry Pi dan ESP8266: 8 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Dalam Instruksi ini, saya akan menjelaskan apa itu protokol MQTT dan bagaimana protokol itu digunakan untuk berkomunikasi antar perangkat. Kemudian, sebagai demonstrasi praktis, saya akan menunjukkan kepada Anda cara mengatur sistem dua klien sederhana, di mana modul ESP8266 akan mengirim pesan ke program Python ketika sebuah tombol ditekan. Secara khusus, saya menggunakan modul Adafruit HUZZAH untuk proyek ini, Raspberry Pi dan komputer desktop. Raspberry Pi akan bertindak sebagai broker MQTT, dan klien Python akan dijalankan dari komputer desktop terpisah (opsional, karena ini dapat dijalankan di Raspberry Pi).
Untuk mengikuti Instruksi ini, Anda harus memiliki pengetahuan dasar tentang elektronik, dan cara menggunakan perangkat lunak Arduino. Anda juga harus terbiasa menggunakan antarmuka baris perintah (untuk Raspberry Pi). Mudah-mudahan, setelah Anda memperoleh pengetahuan tentang apa itu MQTT, dan bagaimana menggunakannya dalam skenario dasar, Anda akan dapat membuat proyek IoT Anda sendiri!
Bagian yang Diperlukan
- 1 x Raspberry Pi, terhubung ke jaringan lokal (menjalankan Jessie)
- 1 x Modul ESP8266 (Adafruit HUZZAH)
- 1 x papan tempat memotong roti
- 3 x Kabel Jumper (Pria-ke-Pria)
- 1 x Tombol Tekan
- 1 x 10k Ohm Resistor (Kode warna Coklat-Hitam-Oranye)
Saya telah membuat Instructable ini, karena MQTT selalu menarik minat saya sebagai protokol dan ada banyak cara berbeda untuk menggunakannya. Namun, sepertinya saya tidak dapat memahami cara membuat kode perangkat untuk menggunakannya. Ini karena saya tidak tahu/mengerti apa yang sebenarnya terjadi pada "Halo, Dunia!" dari perangkat A dan mengirimkannya ke perangkat B. Oleh karena itu, saya memutuskan untuk menulis Instruksi ini untuk (semoga) mengajari Anda cara kerjanya, dan juga untuk memperkuat pemahaman saya sendiri tentangnya!
Langkah 1: Apa itu MQTT?
MQTT, atau MQ Telemetry Transport, adalah protokol pesan yang memungkinkan beberapa perangkat untuk berbicara satu sama lain. Saat ini, ini adalah protokol populer untuk Internet of Things, meskipun telah digunakan untuk tujuan lain - misalnya, Facebook Messenger. Menariknya MQTT ditemukan pada tahun 1999 - artinya setua saya!
MQTT didasarkan pada gagasan bahwa perangkat dapat menerbitkan atau berlangganan topik. Jadi, misalnya. Jika Perangkat #1 telah merekam suhu dari salah satu sensornya, ia dapat memublikasikan pesan yang berisi nilai suhu yang direkamnya, ke suatu topik (mis. "Suhu"). Pesan ini dikirim ke MQTT Broker, yang dapat Anda anggap sebagai switch/router di jaringan area lokal. Setelah Pialang MQTT menerima pesan, ia akan mengirimkannya ke perangkat apa pun (dalam hal ini, Perangkat #2) yang berlangganan topik yang sama.
Dalam proyek ini, kami akan memublikasikan topik menggunakan ESP8266, dan membuat skrip Python yang akan berlangganan topik yang sama ini, melalui Raspberry Pi yang akan bertindak sebagai Broker MQTT. Hal yang hebat tentang MQTT adalah ringan, sehingga sempurna untuk dijalankan pada mikrokontroler kecil seperti ESP8266, tetapi juga tersedia secara luas - sehingga kita dapat menjalankannya pada skrip Python juga.
Mudah-mudahan, di akhir proyek ini, Anda akan memiliki pemahaman tentang apa itu MQTT dan bagaimana menggunakannya untuk proyek Anda sendiri di masa depan.
Langkah 2: Menginstal Broker MQTT di Raspberry Pi
Untuk mengatur sistem MQTT kami, kami membutuhkan broker, seperti yang dijelaskan pada langkah sebelumnya. Untuk Raspberry Pi, kami akan menggunakan broker MQTT " Mosquitto ". Sebelum kami menginstal ini, selalu yang terbaik untuk memperbarui Raspberry Pi kami.
sudo apt-get update
sudo apt-get upgrade
Setelah Anda selesai melakukannya, instal mosquitto dan kemudian paket mosquitto-clients.
sudo apt-get install mosquitto -y
sudo apt-get install mosquitto-clients -y
Setelah Anda selesai menginstal kedua paket ini, kita perlu mengkonfigurasi broker. File konfigurasi broker mosquitto terletak di /etc/mosquitto/mosquitto.conf, jadi buka ini dengan editor teks favorit Anda. Jika Anda tidak memiliki editor teks favorit atau tidak tahu cara menggunakan editor baris perintah apa pun, saya akan menggunakan nano sehingga Anda dapat mengikuti:
sudo nano /etc/mosquitto/mosquitto.conf
Di bagian bawah file ini, Anda akan melihat baris:
include_dir /etc/mosquitto/conf.d
Hapus baris ini. Tambahkan baris berikut ke bagian bawah file.
allow_anonymous false
password_file /etc/mosquitto/pwfile pendengar 1883
Dengan mengetikkan baris-baris tersebut, kami telah memberi tahu mosquitto bahwa kami tidak ingin ada orang yang terhubung ke broker kami yang tidak memberikan nama pengguna dan kata sandi yang valid (kami akan mengaturnya sebentar lagi) dan kami ingin mosquitto dengarkan pesan pada nomor port 1883.
Jika Anda tidak ingin broker meminta nama pengguna dan kata sandi, jangan sertakan dua baris pertama yang kami tambahkan (yaitu allow_anonymous… dan password_file…). Jika Anda telah melakukan ini, lewati untuk me-reboot Raspberry Pi.
Sekarang tutup (dan simpan) file itu. Jika Anda mengikuti contoh nano, tekan CTRL+X, dan ketik Y saat diminta.
Karena kami baru saja memberi tahu mosquitto bahwa pengguna yang mencoba menggunakan broker MQTT harus diautentikasi, sekarang kami perlu memberi tahu mosquitto apa nama pengguna dan kata sandinya! Jadi, ketik perintah berikut - ganti nama pengguna dengan nama pengguna yang Anda inginkan - lalu masukkan kata sandi yang Anda inginkan saat diminta (Catatan: jika, saat mengedit file konfigurasi, Anda menentukan jalur password_file yang berbeda, ganti jalur di bawah ini dengan yang Anda gunakan).
sudo mosquitto_passwd -c /etc/mosquitto/pwfile nama pengguna
Karena kita baru saja mengubah file konfigurasi mosquitto, kita harus me-reboot Raspberry Pi.
sudo reboot
Setelah Raspberry Pi selesai reboot, Anda harus memiliki broker MQTT yang berfungsi penuh! Selanjutnya, kita akan mencoba berinteraksi dengannya, menggunakan sejumlah perangkat/metode yang berbeda!
Langkah 3: Menguji Pialang
Setelah Anda menginstal mosquitto di Raspberry Pi, Anda dapat mengujinya dengan cepat - hanya untuk memastikan semuanya bekerja dengan benar. Untuk tujuan ini, ada dua perintah yang dapat kita gunakan pada baris perintah. mosquitto_pub dan mosquitto_sub. Pada langkah ini, saya akan memandu Anda menggunakan masing-masing untuk menguji broker kami.
Untuk menguji broker, Anda perlu membuka dua jendela baris perintah. Jika Anda menggunakan Putty atau klien SSH lain, ini semudah membuka jendela SSH lain dan masuk seperti biasa. Jika Anda mengakses Pi Anda dari terminal UNIX, ini persis sama. Jika Anda menggunakan Raspberry Pi secara langsung, Anda perlu membuka dua jendela terminal dalam mode GUI (perintah startxdapat digunakan untuk memulai GUI).
Sekarang Anda telah membuka dua jendela, kita dapat memulai pengujian. Di salah satu dari dua terminal, ketik perintah berikut, ganti nama pengguna dan kata sandi dengan yang Anda atur pada langkah sebelumnya.
mosquitto_sub -d -u nama pengguna -P kata sandi -t tes
Jika Anda memutuskan untuk tidak menetapkan nama pengguna dan kata sandi pada langkah sebelumnya, maka mulai sekarang, abaikan tanda -u dan -P dalam perintah. Jadi, sebagai contoh, perintah mosquitto_sub sekarang menjadi:
mosquitto_sub -d -t tes
Perintah mosquitto_sub akan berlangganan topik, dan menampilkan pesan apa pun yang dikirim ke topik tertentu di jendela terminal. Di sini, -d berarti mode debug, jadi semua pesan dan aktivitas akan ditampilkan di layar. -u dan -P harus cukup jelas. Terakhir, -t adalah nama topik yang ingin kita langgani - dalam hal ini, "test".
Selanjutnya, di jendela terminal lainnya, kita akan mencoba dan memublikasikan pesan ke topik "test". Ketik berikut ini, ingat lagi untuk mengubah nama pengguna dan kata sandi:
mosquitto_pub -d -u nama pengguna -P kata sandi -t test -m "Halo, Dunia!"
Saat Anda menekan enter, Anda akan melihat pesan "Halo, Dunia!" muncul di jendela terminal pertama yang kami gunakan (untuk berlangganan). Jika ini masalahnya, Anda siap untuk mulai mengerjakan ESP8266!
Langkah 4: Menyiapkan ESP8266 (Adafruit HUZZAH)
Langkah ini jika khusus untuk Adafruit HUZZAH (karena itulah yang saya gunakan untuk menyelesaikan proyek ini). Jika Anda menggunakan perangkat Arduino / ESP8266 yang berbeda, Anda mungkin ingin melewati langkah ini. Namun, saya akan menyarankan Anda membacanya sekilas, untuk berjaga-jaga jika ada informasi di sini yang mungkin relevan bagi Anda.
Untuk proyek ini, saya akan memprogram HUZZAH dengan software Arduino. Jadi, jika Anda belum melakukannya, pastikan untuk menginstal perangkat lunak Arduino (lebih baru dari 1.6.4). Anda dapat mengunduhnya di sini.
Setelah Anda menginstal perangkat lunak Arduino, buka dan arahkan ke File->Preferences. Di sini Anda akan melihat (di dekat bagian bawah jendela) kotak teks dengan label: "Additional Boards Manager URLs". Di kotak teks ini, salin dan tempel tautan berikut:
arduino.esp8266.com/stable/package_esp8266com_index.json
Klik OK untuk menyimpan perubahan Anda. Sekarang buka Board Manager (Tools->Board->Board Manager) dan cari ESP8266. Instal paket Komunitas esp8266 oleh ESP8266. Mulai ulang perangkat lunak Arduino.
Sekarang, sebelum kita dapat memprogram papan, kita perlu memilih beberapa opsi berbeda. Pada pilihan menu Tools, pilih Adafruit HUZZAH ESP8266 untuk Board, 80 MHz untuk CPU Frequency (Anda bisa menggunakan 160 MHz jika ingin overclock, tapi untuk saat ini saya akan menggunakan 80 MHz), 4M (3M SPIFFS) untuk Ukuran Flash, dan 115200 untuk Kecepatan Unggah. Juga, pastikan untuk memilih port COM yang Anda gunakan (ini akan tergantung pada pengaturan Anda).
Sebelum Anda dapat mengunggah kode apa pun, Anda harus memastikan bahwa HUZZAH dalam mode bootloader. Untuk mengaktifkan ini, tahan tombol di papan bertanda GPIO0, dan sementara ini ditahan, tahan tombol Reset juga. Kemudian, lepaskan tombol Reset, dan kemudian GPIO0. Jika Anda telah melakukannya dengan benar, LED merah yang menyala saat Anda menekan GPIO0 sekarang akan redup.
Untuk mengupload kode ke mikrokontroler, pastikan terlebih dahulu HUZZAH dalam mode bootloader, kemudian cukup klik tombol upload di Arduino IDE.
Jika Anda mengalami kesulitan dalam mengatur HUZZAH, informasi lebih lanjut dapat ditemukan di tutorial Adafruit sendiri.
Langkah 5: Memprogram ESP8266
Sekarang kita akan mulai memprogram ESP8266, tetapi sebelum kita dapat memulai, Anda perlu menginstal pustaka berikut di pengelola Perpustakaan Arduino (Sketsa->Sertakan Perpustakaan->Kelola Perpustakaan)
- Bounce2
- PubSubClient
Setelah Anda menginstal perpustakaan tersebut, Anda akan dapat menjalankan kode yang saya sertakan dalam Instructable ini (MQTT_Publish.zip). Saya telah memastikan untuk mengomentarinya sehingga Anda dapat memahami apa yang dilakukan setiap bagian, dan semoga ini memungkinkan Anda untuk menyesuaikannya dengan kebutuhan Anda.
Ingatlah untuk mengubah konstanta di bagian atas kode sehingga ESP8266 Anda dapat terhubung ke jaringan WiFi dan Broker MQTT Anda (Raspberry Pi).
Jika Anda memutuskan untuk tidak menetapkan nama pengguna dan kata sandi untuk MQTT Broker, maka unduh file MQTT_PublishNoPassword.zip sebagai gantinya.
Langkah 6: Menginstal Klien Python (paho-mqtt)
Untungnya, langkah ini sangat sederhana! Untuk menginstal klien mosquitto python, Anda hanya perlu mengetikkan yang berikut ini ke dalam baris perintah (Linux/Mac) atau bahkan command prompt (Windows).
instal pip paho-mqtt
Catatan: Prompt perintah Windows mungkin memiliki masalah menjalankan perintah pip jika Anda tidak menentukan bahwa Anda ingin pip diinstal dan python ditambahkan ke variabel PATH Anda saat Anda menginstal Python. Ada beberapa cara untuk memperbaikinya, tetapi saya pikir menginstal ulang Python adalah cara termudah. Jika ragu - coba cari di google!
Langkah 7: Klien Python - Berlangganan
Pada langkah ini, kita akan mengatur skrip Python (baik di Raspberry Pi itu sendiri atau di komputer lain yang terhubung ke jaringan) untuk menangani semua pesan yang dikirim (dipublikasikan) oleh ESP8266 ke topik MQTT.
Saya telah menyertakan kode python di bawah ini (PythonMQTT_Subscribe.py), yang telah dikomentari untuk membantu Anda memahami apa yang sedang terjadi, tetapi saya juga akan menjelaskan beberapa fitur utama di sini.
Jika Anda tidak menetapkan nama pengguna dan kata sandi untuk koneksi MQTT sebelumnya, unduh file PythonMQTT_SubscribeNoPassword.py sebagai gantinya.
Langkah 8: Berkomunikasi Antar Perangkat ESP8266
Jika Anda ingin mengatur jaringan IoT, misalnya, Anda mungkin ingin berkomunikasi antara perangkat ESP8266. Untungnya, ini tidak jauh lebih kompleks daripada kode yang telah kita tulis sebelumnya, namun, ada beberapa perubahan penting.
Agar satu ESP dapat mengirim data ke yang lain, ESP pertama harus memublikasikan topik tersebut, dan ESP kedua harus berlangganan topik tersebut. Pengaturan ini akan memungkinkan percakapan satu arah - ESP(1) ke ESP(2). Jika kita ingin ESP(2) berbicara kembali dengan ESP(1), kita dapat membuat topik baru, yang akan diterbitkan oleh ESP(2), dan ESP(1) akan berlangganan. Untungnya, kami dapat memiliki banyak pelanggan dengan topik yang sama, jadi jika Anda ingin mengirim data ke sejumlah sistem, Anda hanya perlu satu topik (mereka semua berlangganan, kecuali perangkat yang mengirim data, karena itu akan menjadi penerbitan).
Jika Anda memerlukan bantuan untuk mencari tahu apa yang perlu dilakukan setiap perangkat, pikirkan sistem sebagai ruang orang. Jika ESP(1) dipublikasikan, Anda dapat membayangkan perangkat ini sebagai "speaker", dan perangkat apa pun yang berlangganan topik tersebut adalah "pendengar" dalam contoh ini.
Saya telah menyertakan beberapa contoh kode di bawah ini, yang menunjukkan bagaimana ESP8266 dapat berlangganan suatu topik, dan mendengarkan pesan tertentu - 1 dan 0. Jika 1 diterima, LED on-board (untuk HUZZAH - GPIO 0) dinyalakan. Jika 0 diterima, LED ini dimatikan.
Jika Anda ingin memproses data yang lebih kompleks, ini harus dilakukan di fungsi ReceivedMessage (lihat kode).
Untuk proyek Anda sendiri, jika Anda perlu mengirim dan menerima data, Anda dapat menggabungkan fungsi publikasikan dari contoh sebelumnya ke dalam kode yang disertakan dalam langkah ini. Ini harus ditangani dalam fungsi Arduino loop() utama.
Ingatlah untuk mengubah variabel di bagian atas kode agar sesuai dengan jaringan Anda!
Direkomendasikan:
Cara Flash atau Program Firmware ESP8266 AT Dengan Menggunakan Flasher dan Programmer ESP8266, Modul Wifi IOT: 6 Langkah
Cara Flashing atau Program Firmware ESP8266 AT Dengan Menggunakan Flasher dan Programmer ESP8266, Modul Wifi IOT : Keterangan :Modul ini merupakan USB adapter/programmer untuk modul ESP8266 tipe ESP-01 atau ESP-01S. Ini dilengkapi dengan header perempuan 2x4P 2.54mm untuk menyambungkan ESP01. Ini juga mematahkan semua pin ESP-01 melalui h
Rotary Encoder: Cara Kerja dan Cara Menggunakan Dengan Arduino: 7 Langkah
Rotary Encoder: Cara Kerja dan Cara Menggunakan Dengan Arduino: Anda dapat membaca ini dan tutorial menakjubkan lainnya di situs web resmi ElectroPeakOverviewDalam tutorial ini, Anda akan mengetahui cara menggunakan rotary encoder. Pertama, Anda akan melihat beberapa informasi tentang encoder rotasi, dan kemudian Anda akan belajar bagaimana
Cara Menggunakan MQTT Dengan Raspberry Pi dan ESP8266/sonoff: 4 Langkah
Cara Menggunakan MQTT Dengan Raspberry Pi dan ESP8266/sonoff: Halo Semua! Hari ini saya akan menunjukkan cara mengkonfigurasi sakelar relai wifi sonoff berbasis raspberry pi dan ESP8266 untuk mengontrol peralatan rumah tangga Anda dari mana saja di dunia. dari instruksi ini, jika Anda telah dengan cermat mengikuti instruksi saya
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: 4 Langkah
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: Kami akan menunjukkan cara membuka Terminal MAC. Kami juga akan menunjukkan kepada Anda beberapa fitur di dalam Terminal, seperti ifconfig, mengubah direktori, mengakses file, dan arp. Ifconfig akan memungkinkan Anda untuk memeriksa alamat IP Anda, dan iklan MAC Anda
8 Kontrol Relay Dengan NodeMCU dan Penerima IR Menggunakan WiFi dan IR Remote dan Aplikasi Android: 5 Langkah (dengan Gambar)
8 Kontrol Relay Dengan NodeMCU dan Penerima IR Menggunakan WiFi dan IR Remote dan Aplikasi Android: Mengontrol 8 sakelar relai menggunakan nodemcu dan penerima ir melalui wifi dan ir remote dan aplikasi android.Remote ir bekerja terlepas dari koneksi wifi.INI VERSI TERBARU KLIK DI SINI