Isi kandungan:

Kawal Ruang Tamu Dengan Alexa dan Raspberry Pi: 12 Langkah
Kawal Ruang Tamu Dengan Alexa dan Raspberry Pi: 12 Langkah

Video: Kawal Ruang Tamu Dengan Alexa dan Raspberry Pi: 12 Langkah

Video: Kawal Ruang Tamu Dengan Alexa dan Raspberry Pi: 12 Langkah
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, November
Anonim
Kawal Ruang Tamu Dengan Alexa dan Raspberry Pi
Kawal Ruang Tamu Dengan Alexa dan Raspberry Pi

Kawal TV, lampu, dan Kipas ruang tamu anda dengan Alexa (Amazon Echo atau Dot) dan Raspberry Pi GPIO.

Langkah 1: Persediaan Awal

Saya menggunakan gambar Raspberry Pi 2 dan Raspbian Jessie yang dimuat turun dari

Setelah log masuk, masukkan arahan berikut untuk memasang pakej dan python library yang diperlukan:

sudo apt-get update & sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc

Langkah 2: Sediakan Ngrok

Sediakan Ngrok
Sediakan Ngrok

Lawati https://ngrok.com/download dan dapatkan keluaran ARM Linux terkini sebagai zip dan buka zip di dalam direktori utama:

unzip /home/pi/ngrok-stable-linux-arm.zip

Buka terminal baru dan masukkan arahan berikut:

sudo./ngrok http 4000

Buka terminal baru yang lain dan masukkan arahan berikut:

sudo./ngrok http 4500

Buka terminal baru ketiga dan masukkan arahan berikut:

sudo./ngrok http 5000

Langkah 3: Skrip Python untuk Kawalan Suis Cahaya

Buka sesi terminal baru dan buat fail python baru bernama light_control.py:

nano light_control.py

Salin / tampal kod berikut ke dalam fail baru:

dari flask import Flaskfrom flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logging import os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ ask.intent ('LightControlIntent', pemetaan = {'status': 'status'}) def light_control (status): cuba: pinNum = 27 kecuali Pengecualian sebagai e: pernyataan pengembalian ('Nombor pin tidak sah.') GPIO.setup (pinNum, GPIO. OUT) jika status di ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) jika status di ['off', ' rendah ']: Pernyataan pengembalian GPIO.output (pinNum, GPIO. HIGH) (' Menghidupkan {} Lampu Ruang Tamu '. format (status)) jika _nama_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', port = port)

Simpan dan tutup fail.

Mulakan pelayan termos dengan:

sudo python light_control.py

Biarkan ngrok dan light_control.py berjalan

Langkah 4: Skrip Python untuk Kawalan Kipas

Buka sesi terminal baru dan buat fail python baru bernama fan_control.py:

nano fan_control.py

Salin / tampal kod berikut ke dalam fail baru:

dari termos import termos

dari flask_ask import Ask, statement, convert_errors import RPi. GPIO sebagai GPIO import logging import os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ ask.intent ('FanControlIntent', pemetaan = {'status': 'status'}) def fan_control (status): cuba: pinNum = 22 kecuali Pengecualian sebagai e: penyata pengembalian ('Pin number tidak sah. ') GPIO.setup (pinNum, GPIO. OUT) jika status di [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) jika status di [' off ',' low ']: Penyataan pengembalian GPIO.output (pinNum, GPIO. HIGH) ('Menghidupkan {} Lampu Ruang Tamu'. Format (status)) jika _nama_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = port)

Simpan dan tutup fail.

Mulakan pelayan termos dengan:

sudo python fan_control.py

Biarkan ngrok, light_control.py, dan fan_control.py berjalan

Langkah 5: Memasang dan Mengkonfigurasi Pakej LIRC

Untuk mengawal TV, anda mesti mengkonfigurasi pin pada Raspberry Pi untuk menghasilkan isyarat inframerah (IR) untuk TV khusus anda. Buka terminal dan masukkan arahan berikut untuk memasang pakej LIRC yang meniru isyarat inframerah banyak kawalan jauh.

sudo apt-get install lirc

Seterusnya, anda perlu mengaktifkan dan mengkonfigurasi modul kernel lirc_rpi. Untuk melakukannya, buka modul di editor Nano

sudo nano / etc / modul

Tambahkan baris di bawah ke fail (Pastikan parameter gpio_out_pin menunjuk ke pin yang mengawal LED IR):

lirc_devlirc_rpi gpio_out_pin = 17

Seterusnya, buka file hardware.conf di Nano seperti sebelumnya dengan sudo:

sudo nano /etc/lirc/hardware.conf

Tambahkan konfigurasi berikut ke fail:

LIRCD_ARGS = "- uinput" LOAD_MODULES = benar

PEMANDU = "lalai"

PERANTI = "/ dev / lirc0"

MODUL = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Sekarang, but semula Raspberry Pi:

rebo sudo

Langkah 6: Skrip Python untuk Kawalan TV

Buka sesi terminal baru dan buat fail python baru bernama ir_control.py:

nano ir_control.py

Pergi ke

Cari alat kawalan jauh yang serasi dengan TV anda. Dalam kes saya, saya mempunyai TV Sanyo yang berfungsi dengan fail konfigurasi sanyo-tv01. Sebaik sahaja anda menjumpai fail yang menyokong TV anda, buka dan lihat pilihan perintah.

Salin / tampal kod berikut ke dalam fail baru dan ganti sanyo-tv01 dengan nama fail yang sesuai dengan TV anda. Pastikan juga arahan tv disokong oleh fail konfigurasi TV anda; Anda mungkin perlu mengubah perintah KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN, dan KEY_MUTE untuk berfungsi dengan betul dengan fail konfigurasi TV anda:

dari flask import Flaskfrom flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logging import os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ ask.intent ('GPIOControlIntent', pemetaan = {'status': 'status'}) # 'pin': 'pin'}) def tv_function (status): jika status dalam ['hidupkan']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") pernyataan pengembalian ('Menghidupkan TV') status elif di ['turn off']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") penyataan kembali ('Mematikan TV') status elif dalam ['ubah input']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") kembali pernyataan ('Mengubah input di TV') status elif dalam ['volume meningkat']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") pernyataan pengembalian ('Menambah Volume di TV') status elif dalam ['penurunan volume']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN ") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") sonySYSEND_SOMSEND_NYSEND_NEYSYNYSENDsNYSYSYNEsYNYSEsYNYSYSYNTSNES pernyataan kembali ('Menurunkan Kelantangan di TV') status elif dalam ['bisu']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") penyataan penyata ('Menonaktifkan TV') status elif dalam ['nyuarakan ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") penyata pengembalian (' Nyahaktifkan TV ') yang lain: pernyataan kembali (' Fungsi jauh tidak dijumpai. ') jika _name_ ==' _main_ ': port = 5000 aplikasi.run (host = '0.0.0.0', port = port)

Simpan dan tutup fail.

Mulakan pelayan termos dengan:

sudo python ir_control.py

Biarkan ketiga-tiga tetingkap terminal ngrok, light_control.py, fan_control.py, dan ir_control.py berjalan

Langkah 7: Log masuk ke Akaun AWS

Log masuk ke Akaun AWS
Log masuk ke Akaun AWS

Pertama, buat atau log masuk ke Akaun Pembangun AWS anda dan buka senarai Kemahiran Alexa anda.

Langkah 8: Persediaan Kemahiran TV Alexa

Persediaan Kemahiran TV Alexa
Persediaan Kemahiran TV Alexa

Pilih "Tambah Kemahiran Baru".

Tetapkan Nama Kemahiran ke 'Trigger TV' dan Nama Peminta pada perkataan yang anda mahu gunakan untuk mengaktifkan kemahiran.

Klik 'Next' untuk meneruskan.

Salin / tampal yang berikut ke dalam kotak 'Intent Schema':

"slot": [{"name": "status", "type": "TV_Function"}, {"name": "jumlah", "type": "AMAZON. NUMBER"}], "niat": "GPIOControlIntent "}]}

Seterusnya, klik 'Tambah Jenis Slot'

Masukkan TV_Fungsi di medan 'Enter Type'.

Masukkan nilai berikut di medan 'Masukkan Nilai':

hidupkan

matikan perubahan input tambah isipadu turunkan volume bisu sunyi

Seterusnya, Salin / tampal yang berikut ke dalam kotak 'Contoh Contoh':

GPIOControlIntent {status}

GPIOControlIntent {status} sebanyak {jumlah}

Klik 'Next' untuk meneruskan.

Pilih 'HTTPS' sebagai Jenis Titik Akhir Perkhidmatan dan pilih wilayah. Masukkan URL ngrok dari langkah 2 dan klik 'Seterusnya'. URL mestilah seperti:

ed6ea04d.ngrok.io

Klik 'Next' untuk meneruskan dan tekan 'Save'.

Langkah 9: Persediaan Kemahiran Alexa Lampu

Penyediaan Kemahiran Lampu Alexa
Penyediaan Kemahiran Lampu Alexa

Tutup kemahiran terbuka dan pilih "Tambah Kemahiran Baru".

Tetapkan Nama Kemahiran ke 'Kontrol Lampu' dan Nama Peminta pada perkataan yang anda mahu gunakan untuk mengaktifkan kemahiran.

Klik 'Next' untuk meneruskan. Salin / tampal yang berikut ke dalam kotak 'Intent Schema':

{

"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "intent": "LightsControlIntent"}]}

Seterusnya, klik 'Tambah Jenis Slot'.

Masukkan "LIGHTS_CONTROL" di medan 'Enter Type'.

Masukkan nilai berikut di medan 'Masukkan Nilai':

pada

mati

Seterusnya, Salin / tampal yang berikut ke dalam kotak 'Contoh Contoh':

LightsControlIntent turn {status}

Klik 'Next' untuk meneruskan. Pilih 'HTTPS' sebagai Jenis Titik Akhir Perkhidmatan dan pilih wilayah. Masukkan URL ngrok dari langkah 2 dan klik 'Next'. URL mestilah seperti:

ed6ea04d.ngrok.io

Klik 'Next' untuk meneruskan dan tekan 'Save'.

Langkah 10: Persediaan Kemahiran Kipas Alexa

Persediaan Kemahiran Kipas Alexa
Persediaan Kemahiran Kipas Alexa

Tutup kemahiran terbuka dan pilih "Tambah Kemahiran Baru".

Tetapkan Nama Kemahiran ke 'Kipas Kipas' dan Nama Peminta ke perkataan yang anda mahu gunakan untuk mengaktifkan kemahiran.

Klik 'Next' untuk meneruskan.

Salin / tampal yang berikut ke dalam kotak 'Intent Schema':

{

"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "intent": "FANControlIntent"}]}

Seterusnya, klik 'Tambah Jenis Slot'.

Masukkan "FAN_CONTROL" di medan 'Enter Type'.

Masukkan nilai berikut di medan 'Masukkan Nilai':

pada

mati

Seterusnya, Salin / tampal yang berikut ke dalam kotak 'Contoh Contoh':

FANControlIntent turn {status}

Klik 'Next' untuk meneruskan. Pilih 'HTTPS' sebagai Jenis Titik Akhir Perkhidmatan dan pilih wilayah. Masukkan URL ngrok dari langkah 2 dan klik 'Next'. URL mestilah seperti:

ed6ea04d.ngrok.io

Klik 'Next' untuk meneruskan dan tekan 'Save'.

Langkah 11: Bina Ciruit

Bina Ciruit
Bina Ciruit

Sambungkan litar seperti yang ditunjukkan dalam rajah. Saya menggunakan Modul Relay JBtek 8 Saluran DC 5V untuk menyambung ke talian dan tanah AC 120v rumah saya.

Langkah 12: Perintah Alexa

Sekarang arahan berikut dapat diucapkan kepada Alexa untuk mengawal ruang tamu anda.

Disyorkan: