Բովանդակություն:

Կառավարեք հյուրասենյակը Alexa- ով և ազնվամորու Պիով. 12 քայլ
Կառավարեք հյուրասենյակը Alexa- ով և ազնվամորու Պիով. 12 քայլ

Video: Կառավարեք հյուրասենյակը Alexa- ով և ազնվամորու Պիով. 12 քայլ

Video: Կառավարեք հյուրասենյակը Alexa- ով և ազնվամորու Պիով. 12 քայլ
Video: 1700-ականների լքված հեքիաթային ամրոց ~ Սեփականատերը մահացել է ավտովթարից: 2024, Սեպտեմբեր
Anonim
Կառավարեք հյուրասենյակը Alexa- ով և ազնվամորիով
Կառավարեք հյուրասենյակը Alexa- ով և ազնվամորիով

Կառավարեք ձեր հյուրասենյակի հեռուստացույցը, լույսերը և օդափոխիչը Alexa- ով (Amazon Echo կամ Dot) և Raspberry Pi GPIO- ով:

Քայլ 1: Նախնական կարգավորում

Ես օգտագործեցի Raspberry Pi 2 և Raspbian Jessie պատկեր ՝ ներբեռնված https://www.raspberrypi.org/downloads/raspbian/ կայքից

Մուտք գործելուց հետո մուտքագրեք հետևյալ հրամանները `անհրաժեշտ փաթեթները և python գրադարանները տեղադրելու համար.

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get տեղադրել python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc

Քայլ 2: Կարգավորեք Ngrok- ը

Կարգավորել Ngrok- ը
Կարգավորել Ngrok- ը

Այցելեք https://ngrok.com/download և ստացեք Linux ARM- ի վերջին թողարկումը որպես zip և բացեք տնային գրացուցակում:

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

Բացեք նոր տերմինալ և մուտքագրեք հետևյալ հրամանը.

sudo./ngrok http 4000

Բացեք ևս մեկ նոր տերմինալ և մուտքագրեք հետևյալ հրամանը.

sudo./ngrok http 4500

Բացեք երրորդ նոր տերմինալը և մուտքագրեք հետևյալ հրամանը.

sudo./ngrok http 5000

Քայլ 3: Python Script ՝ Light Switch Control- ի համար

Բացեք տերմինալի նոր նստաշրջան և ստեղծեք python նոր ֆայլ light_control.py անունով.

nano light_control.py

Պատճենեք/տեղադրեք հետևյալ ծածկագիրը նոր ֆայլում.

flask import- ից flask_ask ներմուծում Հարց, հայտարարություն, convert_errors ներմուծում RPi. GPIO որպես GPIO ներմուծում անտառահատումներ ներմուծում os GPIO.setmode (GPIO. BCM) ծրագիր = Ֆլասկ (_ name_) ask = Հարց (ծրագիր, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27 բացառությամբ որպես e: return հայտարարություն (բացառությամբ) 'Pin- ի համարը վավեր չէ:') GPIO.setup (pinNum, GPIO. OUT), եթե կարգավիճակը գտնվում է ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) եթե status '[' off ',' ցածր ']: GPIO.output (pinNum, GPIO. HIGH) վերադարձման հայտարարություն («Շրջել {} հյուրասենյակի լույսերը». ձևաչափ (կարգավիճակ)), եթե _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', նավահանգիստ = նավահանգիստ)

Պահեք և փակեք ֆայլը:

Գործարկեք կոլբայի սերվերը հետևյալով.

sudo python light_control.py

Թողեք և՛ ngrok, և՛ light_control.py գործարկված

Քայլ 4: Python Script for Fan Control

Բացեք նոր տերմինալային նիստ և ստեղծեք fan_control.py անունով նոր պիթոնի ֆայլ:

nano fan_control.py

Պատճենեք/տեղադրեք հետևյալ ծածկագիրը նոր ֆայլում.

կոլբայի ներմուծումից Ֆլասկ

flask_ask import- ից Հարցրեք, հայտարարություն, convert_errors ներմուծեք RPi. GPIO որպես GPIO ներմուծում անտառահատումների ներմուծում os GPIO.setmode (GPIO. BCM) ծրագիր = Ֆլասկ (_ name_) ask = Հարցրեք (ծրագիր, '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22 բացառությամբ որպես e: return հայտարարության բացառություն ('Pin number վավեր չէ: ') GPIO.setup (pinNum, GPIO. OUT) եթե կարգավիճակը [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW), եթե կարգավիճակը [' off ',' low '] ՝ GPIO.output (pinNum, GPIO. HIGH) վերադարձի հայտարարություն («Շրջել {} հյուրասենյակի լույսերը». Ձևաչափ (կարգավիճակ)), եթե _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', նավահանգիստ = նավահանգիստ)

Պահեք և փակեք ֆայլը:

Գործարկեք կոլբայի սերվերը հետևյալով.

sudo python fan_control.py

Թողեք և՛ ngrok, light_control.py, և՛ fan_control.py գործարկված

Քայլ 5. Տեղադրեք և կազմաձևեք LIRC փաթեթը

Հեռուստատեսությունը վերահսկելու համար դուք պետք է կազմաձևեք Raspberry Pi- ի քորոցը ՝ ձեր հատուկ հեռուստատեսության համար ինֆրակարմիր (IR) ազդանշաններ ստեղծելու համար: Բացեք տերմինալը և մուտքագրեք հետևյալ հրամանը ՝ LIRC փաթեթ տեղադրելու համար, որը նմանակում է բազմաթիվ հեռակառավարման վահանի ինֆրակարմիր ազդանշաններին:

sudo apt-get տեղադրել lirc

Հաջորդը, դուք պետք է միացնեք և կազմաձևեք lirc_rpi միջուկի մոդուլը: Դա անելու համար բացեք մոդուլներ Nano խմբագրիչում

sudo nano /etc /մոդուլներ

Ստորև բերված տողերը ավելացրեք ֆայլին (Համոզվեք, որ gpio_out_pin պարամետրը մատնանշում է IR LED- ը վերահսկող քորոցը).

lirc_devlirc_rpi gpio_out_pin = 17

Հաջորդը, բացեք hardware.conf ֆայլը Nano- ում, ինչպես նախկինում, sudo- ով:

sudo nano /etc/lirc/hardware.conf

Ֆայլին ավելացրեք հետևյալ կազմաձևը.

LIRCD_ARGS = "-uinput" LOAD_MODULES = ճշմարիտ

DRIVER = "կանխադրված"

ՍԱՐՔ = "/dev/lirc0"

ՄՈԴՈLESԼՍ = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Այժմ, վերագործարկեք Raspberry Pi- ն.

sudo վերագործարկում

Քայլ 6: Python Script հեռուստատեսության կառավարման համար

Բացեք տերմինալի նոր նստաշրջան և ստեղծեք նոր պիթոնի ֆայլ ir_control.py անունով.

nano ir_control.py

Գնացեք

Գտեք ձեր հեռուստացույցի հետ համատեղելի հեռակառավարիչ: Իմ դեպքում ես ունեմ Sanyo TV, որն աշխատում է sanyo-tv01 կազմաձևման ֆայլով: Երբ գտնեք ձեր հեռուստացույցին աջակցող ֆայլ, բացեք այն և դիտեք հրամանի ընտրանքները:

Պատճենեք/տեղադրեք հետևյալ ծածկագիրը նոր ֆայլի մեջ և փոխարինեք sanyo-tv01 ֆայլի անունով, որն աշխատում է ձեր հեռուստացույցի հետ: Նաև համոզվեք, որ հեռուստատեսային հրամանները ապահովված են ձեր հեռուստացույցների կազմաձևման ֆայլով. Հնարավոր է ՝ ստիպված լինեք փոփոխել KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN և KEY_MUTE հրամանները ՝ ձեր հեռուստատեսության կազմաձևման ֆայլի հետ ճիշտ աշխատելու համար.

flask import- ից flask_ask ներմուծում Հարց, հայտարարություն, convert_errors ներմուծում RPi. GPIO որպես GPIO ներմուծում անտառահատումներ ներմուծում os GPIO.setmode (GPIO. BCM) ծրագիր = Ֆլասկ (_ name_) ask = Հարց (ծրագիր, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'})) def tv_function (status): ['միացնել']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") վերադարձի հայտարարություն («Միացնել հեռուստացույցը») elif կարգավիճակը ['անջատել'] -ում. os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") վերադարձի հայտարարությունը (« Հեռուստացույցի անջատում ») էլիֆ կարգավիճակը ['փոխել մուտքում']. հայտարարություն ('Հեռուստատեսության մուտքի փոփոխում') elif կարգավիճակ ['բարձրացնել ձայնի մեջ]. "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_VOLUMED 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_VOLUMEDOWNOYEDYONYOYEDYONYOYEDOWNOUMEDOWNOQYONE ") վերադարձի հայտարարություն (« Հեռուստատեսության ձայնի նվազում ») elif կարգավիճակը ['անլռում]. ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") վերադարձի հայտարարություն («Հեռուստատեսության միացում») այլ. վերադարձի հայտարարություն («Հեռակա գործառույթը չի գտնվել»:), եթե _name_ ==' _main_ ': port = 5000 հավելված.run (հյուրընկալող = '0.0.0.0', նավահանգիստ = նավահանգիստ)

Պահեք և փակեք ֆայլը:

Գործարկեք կոլբայի սերվերը հետևյալով.

sudo python ir_control.py

Թողնել ջեռուցման տերմինալի բոլոր երեք պատուհանները, light_control.py, fan_control.py և ir_control.py

Քայլ 7: Մուտք գործեք AWS հաշիվ

Մուտք գործեք AWS հաշիվ
Մուտք գործեք AWS հաշիվ

Նախ ստեղծեք կամ մուտք գործեք ձեր AWS Developer հաշիվ և բացեք ձեր Alexa հմտությունների ցուցակը:

Քայլ 8: TV Alexa հմտությունների կարգավորում

TV Alexa հմտությունների կարգավորում
TV Alexa հմտությունների կարգավորում

Ընտրեք «Ավելացնել նոր հմտություն»:

Հմտության անունը սահմանեք «Գործարկեք հեռուստատեսություն», իսկ «Հրավերի անունը» ՝ այն բառ (ներ) ին, որոնք ցանկանում եք օգտագործել հմտությունը ակտիվացնելու համար:

Շարունակելու համար կտտացրեք «Հաջորդ»:

Պատճենեք/տեղադրեք հետևյալը «Մտադրության սխեմա» վանդակում.

"slots": [{"name": "status", "type": "TV_Function"}, {"name": "գումարը", "type": "AMAZON. NUMBER"}], "մտադրությունը" `" GPIOControlIntent "}]}

Հաջորդը, կտտացրեք «Ավելացնել բնիկի տեսակը»

«Մուտքագրեք տեսակը» դաշտում մուտքագրեք TV_Function:

Մուտքագրեք հետևյալ արժեքները «Մուտքագրեք արժեքներ» դաշտում.

միացնել

անջատել փոփոխության մուտքը մեծացնել ծավալը նվազեցնել ձայնը միացնել unmute

Հաջորդը, պատճենեք/տեղադրեք հետևյալը «Sample Utterances» վանդակում.

GPIOControlIntent {կարգավիճակ}

GPIOControlIntent {կարգավիճակ} ըստ {amount}

Շարունակելու համար կտտացրեք «Հաջորդ»:

Ընտրեք «HTTPS» ՝ որպես ծառայության վերջնակետի տեսակ և ընտրեք տարածաշրջան: Մուտքագրեք ջերմային հասցեն 2 -րդ քայլից և կտտացրեք «Հաջորդ»: URL- ը պետք է լինի հետևյալը.

ed6ea04d.ngrok.io

Շարունակելու համար կտտացրեք «Հաջորդ» և սեղմեք «Պահել»:

Քայլ 9: Lights Alexa Skill Setup

Lights Alexa Skill Setup
Lights Alexa Skill Setup

Փակեք բացված հմտությունը և ընտրեք «Ավելացնել նոր հմտություն»:

Հմտության անունը սահմանեք «Lights Control», իսկ «Հրավերի անունը» ՝ այն բառերի (բառերի) վրա, որոնք ցանկանում եք օգտագործել հմտությունը ակտիվացնելու համար:

Շարունակելու համար կտտացրեք «Հաջորդ»: Պատճենեք/տեղադրեք հետևյալը «Մտադրության սխեմա» վանդակում.

{

"մտադրություններ": [{"slots": [{"name": "կարգավիճակ", "type": "LIGHTS_CONTROL"}], "մտադրություն": "LightsControlIntent"}]}

Հաջորդը, կտտացրեք «Ավելացնել բնիկի տեսակը»:

Մուտքագրեք «LIGHTS_CONTROL» «Մուտքագրեք տեսակը» դաշտում:

Մուտքագրեք հետևյալ արժեքները «Մուտքագրեք արժեքներ» դաշտում.

վրա

անջատված

Հաջորդը, պատճենեք/տեղադրեք հետևյալը «Sample Utterances» վանդակում.

LightsControlIntent շրջադարձ {կարգավիճակ}

Շարունակելու համար կտտացրեք «Հաջորդ»: Ընտրեք «HTTPS» ՝ որպես ծառայության վերջնակետի տեսակ և ընտրեք տարածաշրջան: Մուտքագրեք ջերմային հասցեն 2 -րդ քայլից և կտտացրեք «Հաջորդ»: URL- ը պետք է նման լինի.

ed6ea04d.ngrok.io

Շարունակելու համար կտտացրեք «Հաջորդ» և սեղմեք «Պահել»:

Քայլ 10: Fan Alexa հմտության կարգավորում

Երկրպագու Alexa հմտությունների կարգավորում
Երկրպագու Alexa հմտությունների կարգավորում

Փակեք բացված հմտությունը և ընտրեք «Ավելացնել նոր հմտություն»:

Հմտության անունը սահմանեք «Երկրպագուների վերահսկում», իսկ «Հրավիրման անուն» բառը `այն բառ (ներ), որոնք ցանկանում եք օգտագործել հմտությունը ակտիվացնելու համար:

Շարունակելու համար կտտացրեք «Հաջորդ»:

Պատճենեք/տեղադրեք հետևյալը «Մտադրության սխեմա» վանդակում.

{

"մտադրություններ": [{"slots": [{"name": "կարգավիճակ", "type": "FAN_CONTROL"}], "մտադրություն": "FANControlIntent"}]}

Հաջորդը, կտտացրեք «Ավելացնել բնիկի տեսակը»:

Մուտքագրեք «FAN_CONTROL» «Մուտքագրեք տեսակը» դաշտում:

Մուտքագրեք հետևյալ արժեքները «Մուտքագրեք արժեքներ» դաշտում.

վրա

անջատված

Հաջորդը, պատճենեք/տեղադրեք հետևյալը «Sample Utterances» վանդակում.

FANControlIntent շրջադարձ {կարգավիճակ}

Շարունակելու համար կտտացրեք «Հաջորդ»: Ընտրեք «HTTPS» ՝ որպես ծառայության վերջնակետի տեսակ և ընտրեք տարածաշրջան: Մուտքագրեք ջերմային հասցեն 2 -րդ քայլից և կտտացրեք «Հաջորդ»: URL- ը պետք է լինի հետևյալը.

ed6ea04d.ngrok.io

Շարունակելու համար կտտացրեք «Հաջորդ» և սեղմեք «Պահել»:

Քայլ 11: Կառուցեք շրջագիծը

Կառուցեք Ciruit- ը
Կառուցեք Ciruit- ը

Միացրեք միացումը, ինչպես ցույց է տրված դիագրամում: Ես օգտագործեցի JBtek 8 Channel DC 5V ռելեի մոդուլ `իմ տները AC 120v գծին և գետնին միացնելու համար:

Քայլ 12: Alexa- ի հրամաններ

Այժմ Alexa- ի հետ կարելի է ասել հետևյալ հրամանները ՝ ձեր հյուրասենյակը վերահսկելու համար:

Խորհուրդ ենք տալիս: