Satura rādītājs:

Kontrolējiet dzīvojamo istabu ar Alexa un Raspberry Pi: 12 soļi
Kontrolējiet dzīvojamo istabu ar Alexa un Raspberry Pi: 12 soļi

Video: Kontrolējiet dzīvojamo istabu ar Alexa un Raspberry Pi: 12 soļi

Video: Kontrolējiet dzīvojamo istabu ar Alexa un Raspberry Pi: 12 soļi
Video: Кварцевый ламинат на пол. Все этапы. ПЕРЕДЕЛКА ХРУЩЕВКИ от А до Я #34 2024, Septembris
Anonim
Kontrolējiet dzīvojamo istabu ar Alexa un Raspberry Pi
Kontrolējiet dzīvojamo istabu ar Alexa un Raspberry Pi

Kontrolējiet savas dzīvojamās istabas televizoru, apgaismojumu un ventilatoru, izmantojot Alexa (Amazon Echo vai Dot) un Raspberry Pi GPIO.

1. darbība: sākotnējā iestatīšana

Es izmantoju Raspberry Pi 2 un Raspbian Jessie attēlu, kas lejupielādēts no vietnes

Kad esat pieteicies, ievadiet šādas komandas, lai instalētu nepieciešamās pakotnes un python bibliotēkas:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Kolbas kolba-jautājiet sudo apt-get install lirc

2. darbība: iestatiet Ngrok

Iestatiet Ngrok
Iestatiet Ngrok

Apmeklējiet vietni https://ngrok.com/download un iegūstiet jaunāko Linux ARM laidienu kā zip un atvienojiet mājas direktorijā:

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

Atveriet jaunu termināli un ievadiet šādu komandu:

sudo./ngrok http 4000

Atveriet citu jaunu termināli un ievadiet šādu komandu:

sudo./ngrok http 4500

Atveriet trešo jauno termināli un ievadiet šādu komandu:

sudo./ngrok http 5000

3. darbība: Python skripts gaismas slēdža vadībai

Atveriet jaunu termināļa sesiju un izveidojiet jaunu python failu ar nosaukumu light_control.py:

nano light_control.py

Kopējiet/ielīmējiet šādu kodu jaunajā failā:

no kolbas importēšanas Flaskfrom flask_ask imports Jautāt, paziņojums, convert_errors importēt RPi. GPIO kā GPIO importēt reģistrēšanu importēt os GPIO.setmode (GPIO. BCM) app = Kolba (_ name_) ask = Ask (app, '/') logging.getLogger (" setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (statuss): try: pinNum = 27, izņemot izņēmumu kā e: atgriešanās paziņojumu ('PIN kods nav derīgs.') GPIO.setup (pinNum, GPIO. OUT), ja statuss ['on', 'high']: GPIO.output (pinNum, GPIO. LOW), ja statuss ir ['off', '' zems ']: GPIO.output (pinNum, GPIO. HIGH) atgriešanās paziņojums ("Pagriežot {} viesistabas gaismas". formāts (statuss)), ja _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', ports = ports)

Saglabājiet un aizveriet failu.

Sāciet kolbas serveri ar:

sudo python light_control.py

Atstājiet darboties gan ngrok, gan light_control.py

4. solis: Python skripts ventilatoru vadībai

Atveriet jaunu termināļa sesiju un izveidojiet jaunu python failu ar nosaukumu fan_control.py:

nano fan_control.py

Kopējiet/ielīmējiet šādu kodu jaunajā failā:

no kolbas importa Kolba

no flask_ask importēšanas Jautāt, paziņojums, convert_errors importēt RPi. GPIO kā GPIO importēt reģistrēšanu importēt 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 (statuss): try: pinNum = 22, izņemot izņēmumu kā e: atgriešanās paziņojumu ('PIN numurs nav derīgs. ') GPIO.setup (pinNum, GPIO. OUT), ja statuss [' ieslēgts ',' augsts ']: GPIO.izvade (pinNum, GPIO. LOW), ja statuss ir [' izslēgts ',' zems ']: GPIO.output (pinNum, GPIO. HIGH) atgriešanās paziņojums (“Pagriežot {} viesistabas gaismas”. Formāts (statuss)), ja _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', osta = osta)

Saglabājiet un aizveriet failu.

Sāciet kolbas serveri ar:

sudo python fan_control.py

Atstājiet darboties gan ngrok, gan light_control.py, gan fan_control.py

5. darbība: LIRC pakotnes instalēšana un konfigurēšana

Lai kontrolētu televizoru, jums ir jākonfigurē tapa uz Raspberry Pi, lai ģenerētu infrasarkanos (IR) signālus jūsu konkrētajam televizoram. Atveriet termināli un ievadiet šādu komandu, lai instalētu LIRC pakotni, kas emulē daudzu tālvadības pulti.

sudo apt-get install lirc

Tālāk jums ir jāiespējo un jākonfigurē kodola modulis lirc_rpi. Lai to izdarītu, atveriet moduļus Nano redaktorā

sudo nano /etc /modules

Pievienojiet failam tālāk esošās rindiņas (pārliecinieties, vai parametrs gpio_out_pin norāda uz tapu, kas kontrolē IR LED):

lirc_devlirc_rpi gpio_out_pin = 17

Pēc tam atveriet failu hardware.conf programmā Nano tāpat kā iepriekš, izmantojot sudo:

sudo nano /etc/lirc/hardware.conf

Pievienojiet failam šādu konfigurāciju:

LIRCD_ARGS = "-ievadiet" LOAD_MODULES = true

DRIVER = "noklusējuma"

IERĪCE = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Tagad restartējiet Raspberry Pi:

sudo atsāknēšana

6. darbība: Python skripts TV vadībai

Atveriet jaunu termināļa sesiju un izveidojiet jaunu python failu ar nosaukumu ir_control.py:

nano ir_control.py

Dodieties uz vietni

Atrodiet tālvadības pulti, kas ir saderīgs ar jūsu televizoru. Manā gadījumā man ir Sanyo televizors, kas darbojas ar sanyo-tv01 konfigurācijas failu. Kad esat atradis failu, kas atbalsta jūsu televizoru, atveriet to un apskatiet komandu opcijas.

Kopējiet/ielīmējiet šo kodu jaunajā failā un nomainiet sanyo-tv01 ar faila nosaukumu, kas atbilst jūsu televizoram. Pārliecinieties arī, ka TV komandas atbalsta jūsu televizora konfigurācijas fails; Lai pareizi darbotos ar televizora konfigurācijas failu, iespējams, būs jāmaina komandas KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN un KEY_MUTE:

no kolbas importēšanas Flaskfrom flask_ask imports Jautāt, paziņojums, convert_errors importēt RPi. GPIO kā GPIO importēt reģistrēšanu importēt os GPIO.setmode (GPIO. BCM) app = Kolba (_ name_) ask = Ask (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status): ja statuss ['ieslēgt']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") atgriešanās paziņojums ("Televizora ieslēgšana") elifa statuss ['izslēgt']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") atgriešanās paziņojums ('Televizora izslēgšana') elifa statuss ['mainīt ievadi']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") atgriešanās paziņojums ('Ievades mainīšana televizorā') elif statuss ['palielināt skaļumu']: 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 ") atgriešanās paziņojums (" Skaļuma palielināšana televizorā ") elifa statuss ['samazināt skaļumu']: 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_VOLUMEDSOWNYENSENSION" osiosystems ") atgriešanās paziņojums (" Skaļuma samazināšana televizorā ") elif statuss ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") atgriešanās paziņojums (" TV izslēgšana ") elif statuss ['ieslēgt skaņu ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") atgriešanās paziņojums (' TV ieslēgšanas izslēgšana ') cits: atgriešanās paziņojums (' Attālā funkcija nav atrasta. '), ja _name_ ==' _main_ ': ports = 5000 lietotne.run (resursdators = '0.0.0.0', ports = ports)

Saglabājiet un aizveriet failu.

Sāciet kolbas serveri ar:

sudo python ir_control.py

Atstājiet visus trīs ngrok termināļa logus, light_control.py, fan_control.py un ir_control.py.

7. darbība: piesakieties AWS kontā

Piesakieties AWS kontā
Piesakieties AWS kontā

Vispirms izveidojiet vai piesakieties savā AWS izstrādātāja kontā un atveriet savu Alexa prasmju sarakstu.

8. solis: TV Alexa prasmju iestatīšana

TV Alexa prasmju iestatīšana
TV Alexa prasmju iestatīšana

Atlasiet "Pievienot jaunu prasmi".

Iestatiet prasmes nosaukumu uz “Trigger TV”, bet uzaicinājuma nosaukumam - vārdu (-us), kuru vēlaties izmantot, lai aktivizētu prasmi.

Lai turpinātu, noklikšķiniet uz Tālāk.

Kopējiet/ielīmējiet lodziņā "Nodomu shēma":

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

Pēc tam noklikšķiniet uz “Pievienot slota veidu”

Laukā "Ievadīt veidu" ievadiet TV_Function.

Laukā "Ievadīt vērtības" ievadiet šādas vērtības:

ieslēdz

izslēgt mainīt ievadi palielināt skaļumu samazināt skaļumu izslēgt ieslēgt skaņu

Pēc tam lodziņā “Izlases paraugi” nokopējiet/ielīmējiet:

GPIOControlIntent {status}

GPIOControlIntent {status} pēc {summām}

Lai turpinātu, noklikšķiniet uz Tālāk.

Atlasiet “HTTPS” kā pakalpojuma galapunkta veidu un atlasiet reģionu. Ievadiet ngrok URL no 2. darbības un noklikšķiniet uz “Tālāk”. Vietrādim URL jābūt apmēram šādam:

ed6ea04d.ngrok.io

Noklikšķiniet uz "Tālāk", lai turpinātu, un nospiediet "Saglabāt".

9. darbība. Apgaismojiet Alexa prasmju iestatīšanu

Gaismas Alexa prasmju iestatīšana
Gaismas Alexa prasmju iestatīšana

Aizveriet atvērto prasmi un izvēlieties "Pievienot jaunu prasmi".

Iestatiet prasmes nosaukumu uz “Gaismas vadība” un uzaicinājuma nosaukumu uz vārdu (-iem), kuru vēlaties izmantot, lai aktivizētu prasmi.

Lai turpinātu, noklikšķiniet uz Tālāk. Nokopējiet/ielīmējiet lodziņā "Nodomu shēma":

{

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

Pēc tam noklikšķiniet uz “Pievienot slota veidu”.

Laukā "Ievadīt veidu" ievadiet "LIGHTS_CONTROL".

Laukā "Ievadīt vērtības" ievadiet šādas vērtības:

uz

izslēgts

Pēc tam lodziņā “Izlases paraugi” nokopējiet/ielīmējiet:

LightsControlIntent pagrieziens {status}

Lai turpinātu, noklikšķiniet uz Tālāk. Izvēlieties “HTTPS” kā pakalpojuma galapunkta veidu un atlasiet reģionu. Ievadiet ngrok URL no 2. darbības un noklikšķiniet uz Tālāk. Vietrādim URL jābūt apmēram šādam:

ed6ea04d.ngrok.io

Noklikšķiniet uz "Tālāk", lai turpinātu, un nospiediet "Saglabāt".

10. darbība: ventilatora Alexa prasmju iestatīšana

Ventilatora Alexa prasmju iestatīšana
Ventilatora Alexa prasmju iestatīšana

Aizveriet atvērto prasmi un izvēlieties "Pievienot jaunu prasmi".

Iestatiet prasmes nosaukumu uz “Ventilatora vadība” un uzaicinājuma nosaukumu uz vārdu (-iem), kuru vēlaties izmantot, lai aktivizētu prasmi.

Lai turpinātu, noklikšķiniet uz Tālāk.

Nokopējiet/ielīmējiet lodziņā "Nodomu shēma":

{

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

Pēc tam noklikšķiniet uz “Pievienot slota veidu”.

Laukā "Ievadīt veidu" ievadiet "FAN_CONTROL".

Laukā "Ievadīt vērtības" ievadiet šādas vērtības:

uz

izslēgts

Pēc tam lodziņā “Izlases paraugi” nokopējiet/ielīmējiet:

FANControlIntent pagrieziens {status}

Lai turpinātu, noklikšķiniet uz Tālāk. Kā pakalpojuma galapunkta veidu atlasiet “HTTPS” un atlasiet reģionu. Ievadiet ngrok URL no 2. darbības un noklikšķiniet uz Tālāk. Vietrādim URL jābūt apmēram šādam:

ed6ea04d.ngrok.io

Noklikšķiniet uz "Tālāk", lai turpinātu, un nospiediet "Saglabāt".

11. solis: izveidojiet ķēdi

Izveidojiet ķēdi
Izveidojiet ķēdi

Pievienojiet ķēdi, kā parādīts diagrammā. Es izmantoju JBtek 8 kanālu līdzstrāvas 5 V releja moduli, lai izveidotu savienojumu ar manas mājas maiņstrāvas 120 V līniju un zemi.

12. solis: Alexa komandas

Tagad ar Alexa var izrunāt šādas komandas, lai kontrolētu jūsu dzīvojamo istabu.

Ieteicams: