Daftar Isi:

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

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

Video: Kontrol Ruang Tamu Dengan Alexa dan Raspberry Pi: 12 Langkah
Video: Game Room Automation with Alexa & Google Home | Part 1 | # 12 2024, November
Anonim
Kontrol Ruang Tamu Dengan Alexa dan Raspberry Pi
Kontrol Ruang Tamu Dengan Alexa dan Raspberry Pi

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

Langkah 1: Pengaturan Awal

Saya menggunakan gambar Raspberry Pi 2 dan Raspbian Jessie yang diunduh dari

Setelah masuk, masukkan perintah berikut untuk menginstal paket dan pustaka python 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: Siapkan Ngrok

Siapkan Ngrok
Siapkan Ngrok

Kunjungi https://ngrok.com/download dan dapatkan rilis ARM Linux terbaru sebagai zip dan unzip di dalam direktori home:

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

Buka terminal baru dan masukkan perintah berikut:

sudo./ngrok http 4000

Buka terminal baru lainnya dan masukkan perintah berikut:

sudo./ngrok http 4500

Buka terminal baru ketiga dan masukkan perintah berikut:

sudo./ngrok http 5000

Langkah 3: Skrip Python untuk Kontrol Saklar Lampu

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

nano light_control.py

Salin/tempel kode berikut ke dalam file baru:

from 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', mapping={'status': 'status'}) def light_control(status): try: pinNum = 27 kecuali Exception as e: return statement('Nomor pin tidak valid.') GPIO.setup(pinNum, GPIO. OUT) jika status di ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) jika status di ['off', ' rendah']: GPIO.output(pinNum, GPIO. HIGH) return statement('Menghidupkan {} Lampu Ruang Tamu'.format(status)) if _name_ == '_main_': port = 4000 app.run(host=' 0.0.0.0', port=port)

Simpan dan tutup file.

Mulai server labu dengan:

sudo python light_control.py

Biarkan ngrok dan light_control.py berjalan

Langkah 4: Skrip Python untuk Kontrol Kipas

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

nano fan_control.py

Salin/tempel kode berikut ke dalam file baru:

dari labu impor Flask

dari 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('FanControlIntent', mapping={'status': 'status'}) def fan_control(status): try: pinNum = 22 kecuali Exception as e: return statement('Pin number tidak valid.') GPIO.setup(pinNum, GPIO. OUT) jika status di ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) jika status di ['off', 'low']: GPIO.output(pinNum, GPIO. HIGH) return statement('Menghidupkan {} Lampu Ruang Tamu'.format(status)) if _name_ == '_main_': port = 4500 app.run(host='0.0.0.0 ', pelabuhan=pelabuhan)

Simpan dan tutup file.

Mulai server labu dengan:

sudo python fan_control.py

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

Langkah 5: Menginstal dan Mengonfigurasi Paket LIRC

Untuk mengontrol TV, Anda harus mengonfigurasi pin pada Raspberry Pi untuk menghasilkan sinyal inframerah (IR) untuk TV spesifik Anda. Buka terminal dan masukkan perintah berikut untuk menginstal paket LIRC yang mengemulasi sinyal inframerah dari banyak kendali jarak jauh.

sudo apt-get install lirc

Selanjutnya, Anda perlu mengaktifkan dan mengkonfigurasi modul kernel lirc_rpi. Untuk melakukannya, buka modul di editor Nano

sudo nano /etc/modules

Tambahkan baris di bawah ini ke file (Pastikan parameter gpio_out_pin menunjuk ke pin yang mengontrol LED IR):

lirc_devlirc_rpi gpio_out_pin=17

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

sudo nano /etc/lirc/hardware.conf

Tambahkan konfigurasi berikut ke file:

LIRCD_ARGS="--uinput"LOAD_MODULES=benar

PENGEMUDI="bawaan"

PERANGKAT="/dev/lirc0"

MODUL="lirc_rpi"

LIRCD_CONF=""

LIRCMD_CONF=""

Sekarang, reboot Raspberry Pi:

sudo reboot

Langkah 6: Skrip Python untuk Kontrol TV

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

nano ir_control.py

Pergi ke

Temukan remote yang kompatibel dengan TV Anda. Dalam kasus saya, saya memiliki TV Sanyo yang berfungsi dengan file konfigurasi sanyo-tv01. Setelah Anda menemukan file yang mendukung TV Anda, buka dan lihat opsi perintah.

Salin/tempel kode berikut ke file baru dan ganti sanyo-tv01 dengan nama file yang sesuai dengan TV Anda. Pastikan juga bahwa perintah tv didukung oleh file konfigurasi TV Anda; Anda mungkin harus mengubah perintah KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN, dan KEY_MUTE agar berfungsi dengan benar dengan file konfigurasi TV Anda:

from 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', mapping={'status': 'status'}) #'pin': 'pin'}) def tv_function(status): jika status di ['nyalakan']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Menyalakan TV') status elif di ['matikan']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Mematikan TV') status elif di ['ubah input']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") return statement('Mengubah input di TV') status elif di ['meningkatkan volume']: 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") return statement('Increasing Volume on the TV') status elif in ['decrease 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") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os. ") return statement('Menurunkan Volume di TV') status elif di ['mute']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Mematikan TV') status elif di ['unmute ']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Menyalakan TV') else: return statement('Fungsi jarak jauh tidak ditemukan.') if _name_ == '_main_': port = 5000 app.run(host='0.0.0.0', port=port)

Simpan dan tutup file.

Mulai server labu dengan:

sudo python ir_control.py

Biarkan ketiga jendela terminal ngrok, light_control.py, fan_control.py, dan ir_control.py berjalan

Langkah 7: Masuk ke Akun AWS

Masuk ke Akun AWS
Masuk ke Akun AWS

Pertama, buat atau masuk ke Akun Pengembang AWS Anda dan buka daftar Keterampilan Alexa Anda.

Langkah 8: Pengaturan Keterampilan Alexa TV

Pengaturan Keterampilan Alexa TV
Pengaturan Keterampilan Alexa TV

Pilih "Tambahkan Keterampilan Baru".

Atur Nama Skill ke 'Trigger TV' dan Nama Invokasi ke kata yang ingin kamu gunakan untuk mengaktifkan skill.

Klik 'Berikutnya' untuk melanjutkan.

Salin/tempel yang berikut ini ke dalam kotak 'Skema Intent':

{ "niat": [{

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

Selanjutnya, klik 'Tambahkan Jenis Slot'

Masukkan TV_Function di bidang 'Masukkan Jenis'.

Masukkan nilai berikut di bidang 'Masukkan Nilai':

menyalakan

matikan ubah masukan tambah volume turunkan volume bisukan suarakan

Selanjutnya, Copy/paste yang berikut ke dalam kotak 'Sample Utterances':

GPIOControlIntent {status}

GPIOControlIntent {status} menurut {amount}

Klik 'Berikutnya' untuk melanjutkan.

Pilih 'HTTPS' sebagai Service Endpoint Type dan pilih region. Masukkan URL ngrok dari langkah 2 dan klik 'Next'. URL harus seperti:

ed6ea04d.ngrok.io

Klik 'Berikutnya' untuk melanjutkan dan tekan 'Simpan'.

Langkah 9: Nyalakan Pengaturan Keterampilan Alexa

Lights Alexa Skill Setup
Lights Alexa Skill Setup

Tutup skill yang terbuka dan pilih "Add a New Skill".

Atur Nama Skill ke 'Lights Control' dan Invocation Name ke kata yang ingin kamu gunakan untuk mengaktifkan skill.

Klik 'Berikutnya' untuk melanjutkan. Salin/tempel yang berikut ini ke dalam kotak 'Skema Intent':

{

"niat": [{ "slot": [{ "name": "status", "type": "LIGHTS_CONTROL" }], "intent": "LightsControlIntent" }] }

Selanjutnya, klik 'Tambahkan Jenis Slot'.

Masukkan "LIGHTS_CONTROL" di bidang 'Masukkan Jenis'.

Masukkan nilai berikut di bidang 'Masukkan Nilai':

pada

mati

Selanjutnya, Copy/paste yang berikut ke dalam kotak 'Sample Utterances':

LightsControlIntent mengubah {status}

Klik 'Berikutnya' untuk melanjutkan. Pilih 'HTTPS' sebagai Service Endpoint Type dan pilih region. Masukkan URL ngrok dari langkah 2 dan klik 'Berikutnya'. URL harus seperti:

ed6ea04d.ngrok.io

Klik 'Berikutnya' untuk melanjutkan dan tekan 'Simpan'.

Langkah 10: Pengaturan Keterampilan Fan Alexa

Pengaturan Keterampilan Fan Alexa
Pengaturan Keterampilan Fan Alexa

Tutup skill yang terbuka dan pilih "Add a New Skill".

Atur Nama Keterampilan ke 'Kontrol Kipas' dan Nama Doa ke kata yang ingin Anda gunakan untuk mengaktifkan keterampilan.

Klik 'Berikutnya' untuk melanjutkan.

Salin/tempel yang berikut ini ke dalam kotak 'Skema Intent':

{

"niat": [{ "slot": [{ "name": "status", "type": "FAN_CONTROL" }], "intent": "FANControlIntent" }] }

Selanjutnya, klik 'Tambahkan Jenis Slot'.

Masukkan "FAN_CONTROL" di bidang 'Masukkan Jenis'.

Masukkan nilai berikut di bidang 'Masukkan Nilai':

pada

mati

Selanjutnya, Copy/paste yang berikut ke dalam kotak 'Sample Utterances':

FANControlIntent mengubah {status}

Klik 'Berikutnya' untuk melanjutkan. Pilih 'HTTPS' sebagai Service Endpoint Type dan pilih region. Masukkan URL ngrok dari langkah 2 dan klik 'Berikutnya'. URL harus seperti:

ed6ea04d.ngrok.io

Klik 'Berikutnya' untuk melanjutkan dan tekan 'Simpan'.

Langkah 11: Bangun Sirkuit

Bangun Sirkuit
Bangun Sirkuit

Hubungkan sirkuit seperti yang ditunjukkan pada diagram. Saya menggunakan Modul Relai JBtek 8 Saluran DC 5V untuk menghubungkan ke saluran dan ground AC 120v rumah saya.

Langkah 12: Perintah Alexa

Sekarang perintah berikut dapat diucapkan ke Alexa untuk mengontrol ruang tamu Anda.

Direkomendasikan: