- Komponen Diperlukan
- Rajah Litar
- Memasang Perpustakaan Awan MQTT pada Raspberry Pi
- Penjelasan Pengekodan untuk mengawal Raspberry Pi GPIO dengan MQTT
Dalam tutorial sebelumnya, kami telah membincangkan mengenai MQTT Protocol dan memasang pelayan MQTT tempatan pada Raspberry Pi kami untuk mengawal GPIO secara tempatan. Tetapi kelemahan pelayan MQTT tempatan adalah bahawa kita tidak dapat mengawal GPIO dari mana saja di dunia, ia hanya menyediakan perkhidmatan secara tempatan. Tetapi jika pelayan MQTT ini dihoskan di beberapa awan, maka sebarang peralatan yang disambungkan ke Raspberry Pi dapat dikendalikan secara global.
Di sini, dalam tutorial ini, kami akan menggunakan Adafruit IO sebagai broker MQTT untuk mengendalikan alat AC yang disambungkan ke Raspberry Pi GPIO. Juga periksa tutorial Automasi Rumah terkawal IoT lain:
- Automasi Rumah Dikawal Suara berasaskan IOT menggunakan ESP8266 dan Aplikasi Android
- Automasi Rumah Terkawal Telefon Pintar Menggunakan Arduino
- Automasi Rumah yang dikendalikan oleh Web berasaskan IoT menggunakan PIC Microcontroller dan Adafruit IO
- Automasi Rumah Terkawal Web berasaskan IoT menggunakan Raspberry Pi
- Automasi Rumah Dikawal Suara Berasaskan Pembantu Google menggunakan Perisai Wi-Fi DIY Arduino
Komponen Diperlukan
- Raspberry Pi dengan Raspbian Stretch dipasang di dalamnya.
- Modul Relay
- Mentol
- Wayar Pelompat
Di sini, kami akan menggunakan SSH untuk mengakses Raspberry Pi di komputer riba. Anda boleh menggunakan sambungan VNC atau Desktop Jauh di komputer riba, atau boleh menyambungkan Raspberry pi anda dengan monitor. Ketahui lebih lanjut mengenai penyediaan Raspberry Pi tanpa kepala di sini tanpa monitor.
Rajah Litar
Gambarajah litar untuk perkakas Rumah Terkawal IoT ini dengan awan MQTT dan Raspberry Pi adalah mudah, sambungkan sahaja mentol dengan modul geganti pada GPIO pin 35 raspberry Pi.
Memasang Perpustakaan Awan MQTT pada Raspberry Pi
Di sini platform Adafruit IO digunakan dengan Raspberry Pi sebagai broker MQTT. Oleh kerana kami telah menggunakan platform Adafruit IO berkali-kali dalam tutorial sebelumnya, kami juga dapat menggunakannya di Raspberry Pi
Cukup buat akaun di platform Adafruit IO dan buat suapan, jika anda tidak tahu bagaimana membuat suapan dan menyesuaikan papan pemuka Adafruit, kemudian ikuti pautan.
Setelah membuat papan pemuka, pasang beberapa perpustakaan di Raspberry Pi untuk memulakan dengan MQTT.
1. Pertama, kemas kini Pi dan Python Anda dengan mengeluarkan arahan berikut
sudo apt-get update sudo apt-get upgrade sudo pip3 install --upgrade setuptools
2. Sekarang, pasang pustaka berkedip Rpi.gpio dan Adafruit menggunakan arahan di bawah
sudo pip3 pasang RPI.GPIO sudo pip3 pasang adafruit-blinka
3. Pasang perpustakaan Adafruit IO menggunakan arahan di bawah
sudo pip3 pasang adafruit-io
4. Klonkan contoh adafruit dari github menggunakan arahan di bawah
git klon https://github.com/adafruit/Adafruit_IO_Python.git
5. Kemudian, arahkan ke folder contoh dengan memasukkan arahan berikut ke terminal:
cd Adafruit_IO_Python / contoh / asas
Sekiranya anda tidak pasti direktori mana yang ada, anda boleh menyemaknya dengan menjalankan pwd.
6. Untuk semua contoh dalam folder ini, anda perlu menetapkan ADAFRUIT_IO_KEY dan ADAFRUIT_IO_USERNAME, yang boleh didapati dari papan pemuka Adafruit. Seperti yang ditunjukkan di bawah
Togol butang pada papan pemuka Adafruit IO, dan anda akan melihat yang berikut di terminal Pi anda.
7. Sekarang, buka fail subscribe.py menggunakan penyunting nano . Ketik arahan berikut untuk membukanya
sudo nano subscribe.py
Kita harus mengubahsuai program ini untuk mengawal GPIO dari papan pemuka.
Penjelasan Pengekodan untuk mengawal Raspberry Pi GPIO dengan MQTT
Pertama, import semua perpustakaan yang diperlukan untuk menggunakan pin GPIO dan klien Adafruit MQTT.
import RPi.GPIO sebagai GPIO import sys dari Adafruit_IO import MQTTClient
Sekarang, tetapkan mod GPIO dan tentukan nombor pin LED dan tetapkan sebagai output.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Seterusnya, kita harus menetapkan kunci AIO dan Nama Pengguna yang kita dapati semasa membuat papan pemuka.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
Masukkan nama suapan yang telah anda berikan untuk menghidupkan dan mematikan lampu. Di sini, ia adalah "cahaya".
FEED_ID = 'ringan'
Sekarang, tentukan fungsi yang akan dipanggil ketika akan ada peristiwa yang berlaku. Oleh itu, kami akan melanggan Feed menggunakan client.subscribe (FEED_ID)
def connect (client): client.subscribe (FEED_ID) print ('Menunggu data suapan…')
Setelah melanggan suapan, kami harus memeriksa nilai baru dan menyimpannya ke dalam pembolehubah muatan . Untuk fungsi mesej ini dipanggil. Jadi, setiap kali terdapat "1" dalam variabel muatan, buat pin yang dipimpin TINGGI dan untuk "0" menjadikannya RENDAH.
mesej def (pelanggan, feed_id, payload): print ('Feed {0} menerima nilai baru: {1}'. format (feed_id, payload)) jika payload == 1: GPIO.output (ledPin, GPIO.HIGH) yang lain: GPIO.output (ledPin, GPIO.LOW)
Sekarang, buat klien MQTT untuk berhubung dengan platform Adafruit IO dan menghantar mesej ke sana kemari.
pelanggan = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = pelanggan yang disambungkan.on_disconnect = terputus
Juga, berhati-hati dengan lekukan yang betul dalam kod yang lain akan menunjukkan kesalahan. Kod python lengkap diberikan pada akhir tutorial.
Akhirnya, simpan program menggunakan ctrl + x dan tekan enter. Sekarang, kita harus menjalankan skrip untuk melanggan mesej. Jadi di terminal taip python subscribe.py dan tekan enter.
python subscribe.py
Anda akan melihat mesej Menunggu Data Umpan … seperti gambar di bawah.
Sekarang, Pastikan modul geganti disambungkan dengan pin GPIO Raspberry Pi dan kemudian pergi ke papan pemuka Adafruit IO dan ubah suapan cahaya. The mentol harus menghidupkan apabila "1" diterima dan dimatikan apabila "0" diterima seperti yang ditunjukkan di bawah.
Dengan cara ini kita dapat mengawal sebarang alat dari mana saja di dunia dengan menggunakan Raspberry Pi dan MQTT cloud