Përmbajtje:

Kontrolloni dhomën e ndenjes me Alexa dhe Raspberry Pi: 12 hapa
Kontrolloni dhomën e ndenjes me Alexa dhe Raspberry Pi: 12 hapa

Video: Kontrolloni dhomën e ndenjes me Alexa dhe Raspberry Pi: 12 hapa

Video: Kontrolloni dhomën e ndenjes me Alexa dhe Raspberry Pi: 12 hapa
Video: 102 Year Old Lady's Abandoned Home in the USA ~ Power Still ON! 2024, Nëntor
Anonim
Kontrolloni dhomën e ndenjes me Alexa dhe Raspberry Pi
Kontrolloni dhomën e ndenjes me Alexa dhe Raspberry Pi

Kontrolloni televizorin, dritat dhe ventilatorin e dhomës tuaj të ndenjes me Alexa (Amazon Echo ose Dot) dhe Raspberry Pi GPIO.

Hapi 1: Konfigurimi fillestar

Kam përdorur një Raspberry Pi 2 dhe një imazh Raspbian Jessie të shkarkuar nga

Pasi të jeni regjistruar, futni komandat e mëposhtme për të instaluar paketat e kërkuara dhe bibliotekat python:

sudo apt-merrni përditësim && sudo apt-merrni azhurnim -ysudo apt-get instaloni python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc

Hapi 2: Konfiguroni Ngrok

Konfiguro Ngrok
Konfiguro Ngrok

Vizitoni https://ngrok.com/download dhe merrni versionin më të fundit të Linux ARM si zip dhe zbërtheni brenda direktorisë kryesore:

zbërtheni /home/pi/ngrok-stable-linux-arm.zip

Hapni një terminal të ri dhe futni komandën e mëposhtme:

sudo./ngrok http 4000

Hapni një terminal tjetër të ri dhe futni komandën e mëposhtme:

sudo./ngrok http 4500

Hapni terminalin e tretë të ri dhe futni komandën e mëposhtme:

sudo./ngrok http 5000

Hapi 3: Python Script për Kontrollin e Ndërrimit të Dritës

Hapni një sesion të ri terminali dhe krijoni një skedar të ri python të quajtur light_control.py:

nano light_control.py

Kopjoni/ngjisni kodin e mëposhtëm në skedarin e ri:

nga importi i shisheve Flaskfrom flask_ask import Pyetni, deklaratë, convert_errors importoni RPi. GPIO si import GPIO log log 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): provo: pinNum = 27 përveç Përjashtim si e: deklarata e kthimit ('Numri i kunjit nuk është i vlefshëm.') GPIO.setup (pinNum, GPIO. OUT) nëse statusi në ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) nëse statusi në ['off', ' i ulët ']: GPIO.output (pinNum, GPIO. HIGH) deklarata e kthimit (' Duke i kthyer {} dritat e dhomës së ndenjes '. format (statusi)) nëse _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', port = port)

Ruani dhe mbyllni skedarin.

Filloni serverin e shisheve me:

sudo python light_control.py

Lërini ngrohjen dhe light_control.py të funksionojnë

Hapi 4: Python Script për Kontrollin e Tifozëve

Hapni një sesion të ri terminali dhe krijoni një skedar të ri python të quajtur fan_control.py:

nano fan_control.py

Kopjoni/ngjisni kodin e mëposhtëm në skedarin e ri:

nga importi i balonës Flaska

nga flask_ask import Pyet, deklaratë, convert_errors import RPi. GPIO si GPIO import logging import os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Pyet (aplikacion, '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22 përveç Përjashtim si e: deklarata e kthimit ('Pin number e pavlefshme.: GPIO.output (pinNum, GPIO. HIGH) deklarata e kthimit ('Duke i kthyer {} dritat e dhomës së ndenjes'. Format (status)) nëse _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = port)

Ruani dhe mbyllni skedarin.

Filloni serverin e shisheve me:

sudo python fan_control.py

Lërini të dy ngrok, light_control.py dhe fan_control.py të funksionojnë

Hapi 5: Instalimi dhe Konfigurimi i Pakos LIRC

Për të kontrolluar televizorin, duhet të konfiguroni një kunj në Raspberry Pi për të gjeneruar sinjale infra të kuqe (IR) për televizorin tuaj specifik. Hapni terminalin dhe futni komandën e mëposhtme për të instaluar një paketë LIRC që imiton sinjalet infra të kuqe të shumë telekomandave.

sudo apt-get install lirc

Tjetra, duhet të aktivizoni dhe konfiguroni modulin e kernelit lirc_rpi. Për ta bërë këtë, hapni modulet në redaktuesin Nano

sudo nano /etc /module

Shtoni rreshtat më poshtë në skedar (Sigurohuni që parametri gpio_out_pin të tregojë në kunjin që kontrollon LED LED):

lirc_devlirc_rpi gpio_out_pin = 17

Tjetra, hapni skedarin hardware.conf në Nano si më parë me sudo:

sudo nano /etc/lirc/hardware.conf

Shtoni konfigurimin e mëposhtëm në skedar:

LIRCD_ARGS = "-uinput" LOAD_MODULES = e vërtetë

SHOFER = "parazgjedhje"

Pajisje = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Tani, rindizni Raspberry Pi:

rindez sudo

Hapi 6: Python Script për Kontrollin e TV

Hapni një sesion të ri terminali dhe krijoni një skedar të ri python të quajtur ir_control.py:

nano ir_control.py

Shkoni te

Gjeni një telekomandë që është në përputhje me televizorin tuaj. Në rastin tim kam një TV Sanyo që punon me skedarin e konfigurimit sanyo-tv01. Pasi të gjeni një skedar që mbështet televizorin tuaj, hapeni atë dhe shikoni opsionet e komandës.

Kopjoni/ngjisni kodin e mëposhtëm në skedarin e ri dhe zëvendësoni sanyo-tv01 me emrin e skedarit që punon me televizorin tuaj. Gjithashtu sigurohuni që komandat e televizorit të mbështeten nga skedari i konfigurimit të televizorëve tuaj; Mund t'ju duhet të modifikoni komandat KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN dhe KEY_MUTE për të punuar si duhet me skedarin e konfigurimit të televizorit tuaj:

nga importi i shisheve Flaskfrom flask_ask import Pyetni, deklaratë, convert_errors importoni RPi. GPIO si import GPIO log log 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): nëse statusi në ['ndizet']:: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") deklarata e kthimit ('Aktivizimi i televizorit') statusi elif në ['fikur']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") deklarata e kthimit ('Fikja e televizorit') statusi elif në ['ndrysho hyrjen']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") kthim deklarata ('Ndryshimi i hyrjes në TV') statusi elif në ['rrit volumin']: 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 ") deklarata e kthimit ('Rritja e volumit në TV') elif statusi në ['ul volumin']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMED sistemi 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_VOLUMEDOWNOYEDYONY" ") deklarata e kthimit ('Zvogëlimi i volumit në televizor') statusi elif në ['memec']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") deklarata e kthimit ('Mute TV')) statusi elif në ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") deklarata e kthimit (' Çaktivizimi i televizorit ') tjetër: deklarata e kthimit (' Funksioni në distancë nuk u gjet. ') nëse _name_ ==' _main_ ': port = 5000 aplikacion.run (host = '0.0.0.0', port = port)

Ruani dhe mbyllni skedarin.

Filloni serverin e shisheve me:

sudo python ir_control.py

Lërini të funksionojnë të tre dritaret e terminalit ngrok, light_control.py, fan_control.py dhe ir_control.py

Hapi 7: Hyni në llogarinë AWS

Hyni në llogarinë AWS
Hyni në llogarinë AWS

Së pari krijoni ose regjistrohuni në Llogarinë tuaj të Zhvilluesit AWS dhe hapni listën tuaj të Aftësive Alexa.

Hapi 8: Konfigurimi i aftësive të TV Alexa

Konfigurimi i aftësive të TV Alexa
Konfigurimi i aftësive të TV Alexa

Zgjidhni "Shto një aftësi të re".

Vendosni Emrin e Aftësisë në 'Trigger TV' dhe Emrin e Thirrjes në fjalën (et) që dëshironi të përdorni për të aktivizuar aftësinë.

Kliko 'Next' për të vazhduar.

Kopjoni/ngjisni sa vijon në kutinë "Skema e synimit":

"slots": [{"name": "status", "type": "TV_Function"}, {"name": "shuma", "type": "AMAZON. NUMBER"}], "qëllim": "GPIOControlIntent "}]}

Tjetra, klikoni "Shto llojin e slotit"

Futni TV_Function në fushën 'Enter Type'.

Futni vlerat e mëposhtme në fushën "Fut vlerat":

ndez

çaktivizo ndryshimin e hyrjes rritjen e volumit zvogëlimin e volumit heshtje unmute

Tjetra, Kopjoni/ngjitni sa vijon në kutinë "Shembuj të Thënieve":

GPIOControlIntent {status}

GPIOControlIntent {status} sipas {amount}

Kliko 'Next' për të vazhduar.

Zgjidhni 'HTTPS' si Lloji i Pikës Fundore të Shërbimit dhe zgjidhni një rajon. Shkruani URL -në e ngroh nga hapi 2 dhe klikoni 'Tjetër'. URL -ja duhet të jetë diçka si:

ed6ea04d.ngrok.io

Klikoni "Tjetër" për të vazhduar dhe shtypni "Ruaj".

Hapi 9: Lights Alexa Skill Setup

Lights Alexa Skill Setup
Lights Alexa Skill Setup

Mbyllni aftësinë e hapur dhe zgjidhni "Shto një Aftësi të Re".

Vendosni Emrin e Aftësisë në 'Lights Control' dhe Emrin e Thirrjes në fjalën (et) që dëshironi të përdorni për të aktivizuar aftësinë.

Kliko 'Next' për të vazhduar. Kopjoni/ngjitni sa vijon në kutinë "Skema e synimit":

{

"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "qëllim": "LightsControlIntent"}]}

Tjetra, klikoni "Shto llojin e slotit".

Shkruani "LIGHTS_CONTROL" në fushën "Enter Type".

Futni vlerat e mëposhtme në fushën "Fut vlerat":

fikur

Tjetra, Kopjoni/ngjitni sa vijon në kutinë "Shembuj të Thënieve":

Kthesa e LightsControlIntent {status}

Kliko 'Next' për të vazhduar. Zgjidhni 'HTTPS' si Lloji i Pikës Fundore të Shërbimit dhe zgjidhni një rajon. Shkruani URL -në e ngrok nga hapi 2 dhe klikoni 'Tjetër'. URL -ja duhet të jetë diçka si:

ed6ea04d.ngrok.io

Klikoni "Tjetër" për të vazhduar dhe shtypni "Ruaj".

Hapi 10: Konfigurimi i Aftësisë së Fan Alexa

Konfigurimi i aftësive të tifozëve Alexa
Konfigurimi i aftësive të tifozëve Alexa

Mbyllni aftësinë e hapur dhe zgjidhni "Shto një Aftësi të Re".

Vendosni Emrin e Aftësisë në 'Kontrolli i Tifozëve' dhe Emrin e Thirrjes në fjalën (et) që dëshironi të përdorni për të aktivizuar aftësinë.

Kliko 'Next' për të vazhduar.

Kopjoni/ngjitni sa vijon në kutinë "Skema e synimit":

{

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

Tjetra, klikoni "Shto llojin e slotit".

Shkruani "FAN_CONTROL" në fushën "Enter Type".

Futni vlerat e mëposhtme në fushën "Fut vlerat":

fikur

Tjetra, Kopjoni/ngjitni sa vijon në kutinë "Shembuj të Thënieve":

Kthesa FANControlIntent {status}

Kliko 'Next' për të vazhduar. Zgjidhni 'HTTPS' si Lloji i Pikës Fundore të Shërbimit dhe zgjidhni një rajon. Shkruani URL -në e ngrok nga hapi 2 dhe klikoni 'Tjetër'. URL -ja duhet të jetë diçka si:

ed6ea04d.ngrok.io

Klikoni "Tjetër" për të vazhduar dhe shtypni "Ruaj".

Hapi 11: Ndërtoni Ciruit

Ndërtoni Ciruit
Ndërtoni Ciruit

Lidhni qarkun siç tregohet në diagram. Kam përdorur një modul stafetë JBtek 8 Channel DC 5V për t'u lidhur me linjat dhe tokën AC 120v të shtëpive të mia.

Hapi 12: Komandat Alexa

Tani komandat e mëposhtme mund t'i thuhen Alexa për të kontrolluar dhomën tuaj të jetesës.

Recommended: