Talaan ng mga Nilalaman:

Kontrolin ang Living Room Sa Alexa at Raspberry Pi: 12 Hakbang
Kontrolin ang Living Room Sa Alexa at Raspberry Pi: 12 Hakbang

Video: Kontrolin ang Living Room Sa Alexa at Raspberry Pi: 12 Hakbang

Video: Kontrolin ang Living Room Sa Alexa at Raspberry Pi: 12 Hakbang
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Setyembre
Anonim
Kontrolin ang Living Room Sa Alexa at Raspberry Pi
Kontrolin ang Living Room Sa Alexa at Raspberry Pi

Kontrolin ang iyong sala sa TV, ilaw, at Fan na may Alexa (Amazon Echo o Dot) at Raspberry Pi GPIO.

Hakbang 1: Paunang Pag-set up

Gumamit ako ng isang Raspberry Pi 2 at isang imahe ng Raspbian Jessie na na-download mula sa

Kapag naka-log in, ipasok ang mga sumusunod na utos upang mai-install ang kinakailangang mga pakete at python library.

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

Hakbang 2: Pag-setup ng Ngrok

I-setup ang Ngrok
I-setup ang Ngrok

Bisitahin ang https://ngrok.com/download at makuha ang pinakabagong paglabas ng Linux ARM bilang isang zip at i-unzip sa loob ng direktoryo ng bahay:

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

Magbukas ng isang bagong terminal at ipasok ang sumusunod na utos:

sudo./ngrok http 4000

Magbukas ng isa pang bagong terminal at ipasok ang sumusunod na utos:

sudo./ngrok http 4500

Buksan ang pangatlong bagong terminal at ipasok ang sumusunod na utos:

sudo./ngrok http 5000

Hakbang 3: Python Script para sa Light Switch Control

Magbukas ng isang bagong sesyon ng terminal at lumikha ng isang bagong file ng sawa na pinangalanang light_control.py:

nano light_control.py

Kopyahin / i-paste ang sumusunod na code sa bagong file:

mula sa 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 maliban sa Exception bilang e: return statement ('Hindi wasto ang numero ng pin.') GPIO.setup (pinNum, GPIO. OUT) kung katayuan sa ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) kung katayuan sa ['off', ' mababa ']: GPIO.output (pinNum, GPIO. HIGH) pahayag sa pagbabalik (' Pagliko sa {} ang Mga Living Room Lights'.format (status)) kung _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', port = port)

I-save at isara ang file.

Simulan ang flask server gamit ang:

sudo python light_control.py

Iwanan ang parehong ngrok at light_control.py tumatakbo

Hakbang 4: Python Script para sa Fan Control

Magbukas ng isang bagong sesyon ng terminal at lumikha ng isang bagong file ng sawa na pinangalanang fan_control.py:

nano fan_control.py

Kopyahin / i-paste ang sumusunod na code sa bagong file:

mula sa flask import Flask

mula sa 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 maliban sa Exception bilang e: return statement ('Pin number hindi wasto. ') GPIO.setup (pinNum, GPIO. OUT) kung katayuan sa [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) kung katayuan sa [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) pahayag sa pagbabalik ('Pagliko sa {} ang Mga Living Room Lights'.format (status)) kung _name_ ==' _main_ ': port = 4500 app.run (host =' 0.0.0.0 ', port = port)

I-save at isara ang file.

Simulan ang flask server gamit ang:

sudo python fan_control.py

Iwanan ang parehong ngrok, light_control.py, at fan_control.py tumatakbo

Hakbang 5: Pag-install at Pag-configure ng LIRC Package

Upang makontrol ang TV dapat mong i-configure ang isang pin sa Raspberry Pi upang makabuo ng mga infrared (IR) signal para sa iyong tukoy na TV. Buksan ang terminal at ipasok ang sumusunod na utos upang mag-install ng isang pakete ng LIRC na tumutulad sa mga infrared signal ng maraming mga remote control.

sudo apt-get install lirc

Susunod, kailangan mong paganahin at i-configure ang lirc_rpi kernel module. Upang magawa ito, buksan ang mga module sa Nano editor

sudo nano / etc / modules

Idagdag ang mga linya sa ibaba sa file (Tiyaking tumuturo ang parameter ng gpio_out_pin sa pin na kinokontrol ang IR LED):

lirc_devlirc_rpi gpio_out_pin = 17

Susunod, buksan ang file ng hardware.conf sa Nano tulad ng dati gamit ang sudo:

sudo nano /etc/lirc/hardware.conf

Idagdag ang sumusunod na pagsasaayos sa file:

LIRCD_ARGS = "- uinput" LOAD_MODULES = totoo

DRIVER = "default"

DEVICE = "/ dev / lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Ngayon, i-reboot ang Raspberry Pi:

sudo reboot

Hakbang 6: Python Script para sa TV Control

Magbukas ng isang bagong sesyon ng terminal at lumikha ng isang bagong file ng sawa na pinangalanang ir_control.py:

nano ir_control.py

Pumunta sa

Maghanap ng isang remote na katugma sa iyong TV. Sa aking kaso mayroon akong isang Sanyo TV na gumagana sa sanyo-tv01 config file. Kapag nakakita ka ng isang file na sumusuporta sa iyong TV buksan ito at tingnan ang mga pagpipilian sa utos.

Kopyahin / i-paste ang sumusunod na code sa bagong file at palitan ang sanyo-tv01 ng pangalan ng file na gumagana sa iyong TV. Siguraduhin din na ang mga utos sa tv ay sinusuportahan ng iyong TVs config file; Maaaring kailanganin mong baguhin ang KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN, at KEY_Mute upang gumana nang tama sa config file ng iyong TV:

mula sa 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_unction (status): if status in ['turn on']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") pahayag ng pagbabalik ('Pag-on sa TV') status ng elif sa ['turn off']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") pagbabalik pahayag ('Patayin ang TV') katayuan ng elif sa ['baguhin ang input']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") pagbabalik pahayag ('Pagbabago ng input sa TV') status ng elif sa ['pagtaas ng dami']: 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 ") pahayag ng pagbabalik ('Pagtaas ng Dami sa TV') katayuan ng elif sa ['pagbawas ng dami']: 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 ("irYSO S01 TV ") pahayag sa pagbabalik ('Pagbabawas ng Dami sa TV') katayuan ng elif sa ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_Mute ") pahayag sa pagbabalik ('Pag-mute ng TV') katayuan ng elif sa ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") pahayag ng pagbabalik (' Unmuting the TV ') else: return statement (' Remote function not found. ') if _name_ ==' _main_ ': port = 5000 app.run (host = '0.0.0.0', port = port)

I-save at isara ang file.

Simulan ang flask server gamit ang:

sudo python ir_control.py

Iwanan ang lahat ng tatlong ngrok terminal windows, light_control.py, fan_control.py, at ir_control.py na tumatakbo

Hakbang 7: Mag-login sa AWS Account

Mag-login sa AWS Account
Mag-login sa AWS Account

Una lumikha o mag-login sa iyong AWS Developer Account at buksan ang iyong listahan ng Mga Kasanayan sa Alexa.

Hakbang 8: Pag-set up ng Kasanayan sa TV Alexa

Pag-set up ng Kasanayan sa TV Alexa
Pag-set up ng Kasanayan sa TV Alexa

Piliin ang "Magdagdag ng Bagong Kasanayan".

Itakda ang Pangalan ng Kasanayan sa 'Trigger TV' at ang Pangalan ng Paanyaya sa (mga) salita na nais mong gamitin upang maisaaktibo ang kasanayan.

I-click ang 'Susunod' upang magpatuloy.

Kopyahin / i-paste ang sumusunod sa kahon na 'Intent Schema':

"slots": [{"name": "status", "type": "TV_Function"}, {"name": "dami", "type": "AMAZON. NUMBER"}], "hangarin": "GPIOControlIntent "}]}

Susunod, i-click ang 'Magdagdag ng Uri ng Slot'

Ipasok ang TV_Function sa patlang na 'Enter Type'.

Ipasok ang mga sumusunod na halaga sa patlang na 'Enter Values':

buksan

patayin ang pagbabago ng input dagdagan ang dami ng pagbaba ng lakas ng tunog mute unmute

Susunod, Kopyahin / i-paste ang sumusunod sa kahon na 'Sample Utterances':

GPIOControlIntent {status}

GPIOControlIntent {status} ayon sa {halaga}

I-click ang 'Susunod' upang magpatuloy.

Piliin ang 'HTTPS' bilang Serbisyo Endpoint Type at pumili ng isang rehiyon. Ipasok ang ngrok URL mula sa hakbang 2 at i-click ang 'Susunod'. Ang URL ay dapat na tulad ng:

ed6ea04d.ngrok.io

I-click ang 'Susunod' upang magpatuloy at pindutin ang 'I-save'.

Hakbang 9: Mga Pag-set up ng Kasanayan sa Alexa

Mga Ilaw ng Pag-set up ng Kasanayan Alexa
Mga Ilaw ng Pag-set up ng Kasanayan Alexa

Isara ang bukas na kasanayan at piliin ang "Magdagdag ng Bagong Kasanayan".

Itakda ang Pangalan ng Kasanayan sa 'Control ng Lights' at ang Pangalan ng Paanyaya sa (mga) salita na nais mong gamitin upang maisaaktibo ang kasanayan.

I-click ang 'Susunod' upang magpatuloy. Kopyahin / i-paste ang sumusunod sa kahon na 'Intent Schema':

{

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

Susunod, i-click ang 'Magdagdag ng Uri ng Slot'.

Ipasok ang "LIGHTS_CONTROL" sa patlang na 'Enter Type'.

Ipasok ang mga sumusunod na halaga sa patlang na 'Enter Values':

sa

off

Susunod, Kopyahin / i-paste ang sumusunod sa kahon na 'Sample Utterances':

LightsControlIntent turn {status}

I-click ang 'Susunod' upang magpatuloy. Piliin ang 'HTTPS' bilang Serbisyo Endpoint Type at pumili ng isang rehiyon. Ipasok ang ngrok URL mula sa hakbang 2 at i-click ang 'Susunod'. Ang URL ay dapat na tulad ng:

ed6ea04d.ngrok.io

I-click ang 'Susunod' upang magpatuloy at pindutin ang 'I-save'.

Hakbang 10: Pag-setup ng Kasanayan sa Fan Alexa

Pag-setup ng Kasanayan sa Fan Alexa
Pag-setup ng Kasanayan sa Fan Alexa

Isara ang bukas na kasanayan at piliin ang "Magdagdag ng Bagong Kasanayan".

Itakda ang Pangalan ng Kasanayan sa 'Control ng Fan' at ang Pangalan ng Paanyaya sa (mga) salita na nais mong gamitin upang maisaaktibo ang kasanayan.

I-click ang 'Susunod' upang magpatuloy.

Kopyahin / i-paste ang sumusunod sa kahon na 'Intent Schema':

{

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

Susunod, i-click ang 'Magdagdag ng Uri ng Slot'.

Ipasok ang "FAN_CONTROL" sa patlang na 'Enter Type'.

Ipasok ang mga sumusunod na halaga sa patlang na 'Enter Values':

sa

off

Susunod, Kopyahin / i-paste ang sumusunod sa kahon na 'Sample Utterances':

FANControlIntent turn {status}

I-click ang 'Susunod' upang magpatuloy. Piliin ang 'HTTPS' bilang Serbisyo Endpoint Type at pumili ng isang rehiyon. Ipasok ang ngrok URL mula sa hakbang 2 at i-click ang 'Susunod'. Ang URL ay dapat na tulad ng:

ed6ea04d.ngrok.io

I-click ang 'Susunod' upang magpatuloy at pindutin ang 'I-save'.

Hakbang 11: Buuin ang Ciruit

Buuin ang Ciruit
Buuin ang Ciruit

Ikonekta ang circuit tulad ng ipinakita sa diagram. Gumamit ako ng isang JBtek 8 Channel DC 5V Relay Module upang kumonekta sa aking mga tahanan AC 120v na linya at lupa.

Hakbang 12: Mga Utos ng Alexa

Ngayon ang mga sumusunod na utos ay maaaring magsalita sa Alexa upang makontrol ka sa sala.

Inirerekumendang: