Sisällysluettelo:

Ohjaa olohuonetta Alexan ja Raspberry Pi: n kanssa: 12 vaihetta
Ohjaa olohuonetta Alexan ja Raspberry Pi: n kanssa: 12 vaihetta

Video: Ohjaa olohuonetta Alexan ja Raspberry Pi: n kanssa: 12 vaihetta

Video: Ohjaa olohuonetta Alexan ja Raspberry Pi: n kanssa: 12 vaihetta
Video: Летний Ламповый стрим. Отвечаем на вопросы. 2024, Marraskuu
Anonim
Ohjaa olohuonetta Alexan ja Raspberry Pi: n kanssa
Ohjaa olohuonetta Alexan ja Raspberry Pi: n kanssa

Ohjaa olohuoneen televisiota, valoja ja tuuletinta Alexan (Amazon Echo tai Dot) ja Raspberry Pi GPIO: n avulla.

Vaihe 1: Alkuasetukset

Käytin Raspberry Pi 2: ta ja Raspbian Jessie -kuvaa, jotka on ladattu osoitteesta

Kun olet kirjautunut sisään, asenna tarvittavat paketit ja python -kirjastot kirjoittamalla seuraavat komennot:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Pullo-kolvi-kysy sudo apt-get install lirc

Vaihe 2: Asenna Ngrok

Asenna Ngrok
Asenna Ngrok

Käy osoitteessa https://ngrok.com/download ja hanki uusin Linux ARM -julkaisu zip -muodossa ja pura kotihakemistosta:

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

Avaa uusi pääte ja kirjoita seuraava komento:

sudo./ngrok http 4000

Avaa uusi terminaali ja anna seuraava komento:

sudo./ngrok http 4500

Avaa kolmas uusi terminaali ja anna seuraava komento:

sudo./ngrok http 5000

Vaihe 3: Python -skripti valokytkimen ohjaukseen

Avaa uusi pääteistunto ja luo uusi python -tiedosto nimeltä light_control.py:

nano light_control.py

Kopioi/liitä seuraava koodi uuteen tiedostoon:

pullon tuonnista Pullofrom flask_ask tuonti Kysy, lausunto, convert_errors tuoda RPi. GPIO GPIO: na tuontilokin tuonti os GPIO.setmode (GPIO. BCM) -sovellus = Pullo (_ name_) ask = Ask (app, '/') logging.getLogger (" setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27 paitsi poikkeus e: return -lauseena ('Pin -numero ei kelpaa.') GPIO.setup (pinNum, GPIO. OUT), jos tila ['on', 'high']: GPIO. output (pinNum, GPIO. LOW), jos tila on '' off '', low ']: GPIO.output (pinNum, GPIO. HIGH) return lauseke (' Turning {} the Living Room Lights'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', portti = portti)

Tallenna ja sulje tiedosto.

Käynnistä pullo -palvelin seuraavasti:

sudo python light_control.py

Jätä sekä ngrok että light_control.py käynnissä

Vaihe 4: Python Script for Fan Control

Avaa uusi pääteistunto ja luo uusi python -tiedosto nimeltä fan_control.py:

nano fan_control.py

Kopioi/liitä seuraava koodi uuteen tiedostoon:

pullon tuontipullosta

from flask_ask tuonti Kysy, lause, convert_errors tuoda RPi. GPIO GPIO: na tuonti kirjaus tuonti 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 (tila): try: pinNum = 22 paitsi poikkeus e: return -lauseena ('PIN -numero ei kelpaa. ') GPIO.setup (pinNum, GPIO. OUT), jos tila [' on ',' high ']: GPIO. output (pinNum, GPIO. LOW), jos tila on [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) return lauseke ('Turning {} the Living Room Lights'.format (status)) if _name_ ==' _main_ ': port = 4500 app.run (host =' 0.0.0.0 ', portti = portti)

Tallenna ja sulje tiedosto.

Käynnistä pullo -palvelin seuraavasti:

sudo python fan_control.py

Jätä sekä ngrok, light_control.py että fan_control.py käynnissä

Vaihe 5: LIRC -paketin asentaminen ja määrittäminen

Jotta voit ohjata televisiota, sinun on määritettävä Raspberry Pi -nasta, joka tuottaa infrapunasignaaleja (IR) televisiollesi. Avaa pääte ja kirjoita seuraava komento asentaaksesi LIRC -paketin, joka emuloi monien kaukosäätimien infrapunasignaaleja.

sudo apt-get install lirc

Seuraavaksi sinun on otettava käyttöön ja konfiguroitava lirc_rpi -ytimoduuli. Voit tehdä tämän avaamalla moduulit Nano -editorissa

sudo nano /etc /modules

Lisää alla olevat rivit tiedostoon (Varmista, että parametri gpio_out_pin osoittaa IR -merkkivaloa ohjaavaan nastaan):

lirc_devlirc_rpi gpio_out_pin = 17

Avaa seuraavaksi hardware.conf -tiedosto Nanossa kuten aiemmin sudolla:

sudo nano /etc/lirc/hardware.conf

Lisää seuraava kokoonpano tiedostoon:

LIRCD_ARGS = "-uinput" LOAD_MODULES = tosi

DRIVER = "oletus"

LAITE = "/dev/lirc0"

MODULIT = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Käynnistä Raspberry Pi uudelleen:

sudo uudelleenkäynnistys

Vaihe 6: Python -komentosarja TV -ohjaukseen

Avaa uusi pääteistunto ja luo uusi python -tiedosto nimeltä ir_control.py:

nano ir_control.py

Siirry osoitteeseen

Etsi kaukosäädin, joka on yhteensopiva television kanssa. Minun tapauksessani minulla on Sanyo-televisio, joka toimii sanyo-tv01-määritystiedoston kanssa. Kun löydät television tukevaa tiedostoa, avaa se ja katso komentovaihtoehdot.

Kopioi/liitä seuraava koodi uuteen tiedostoon ja korvaa sanyo-tv01 television kanssa toimivalla tiedostonimellä. Varmista myös, että televisiosi asetustiedosto tukee tv -komentoja; Sinun on ehkä muokattava KEY_POWER-, KEY_VIDEO-, KEY_VOLUMEUP-, KEY_VOLUMEDOWN- ja KEY_MUTE -komentoja, jotta ne toimivat oikein television asetustiedoston kanssa:

pullon tuonnista Pullofrom flask_ask tuonti Kysy, lausunto, muunna_virheet tuoda RPi. GPIO GPIO -muodossa tuonti kirjaus tuonti os GPIO.setmode (GPIO. BCM) -sovellus = Pullo (_ name_) ask = Kysy (sovellus, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status): jos tila ['päälle']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") palautuslausuma ('TV: n käynnistäminen') elif-tila ['sammuta']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") palautuslausuma ('TV: n sammuttaminen') elif-tila ['muuta tuloa']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return lause ('Television tulon muuttaminen') elif-tila [lisää äänenvoimakkuutta]: 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 ") palautuslausuma ('Äänenvoimakkuuden lisääminen televisiossa') elif-tila ['vähennä äänenvoimakkuutta']: 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_VOLUMEDOWNYENSEN ") palautuslausunto ('Äänenvoimakkuuden väheneminen televisiossa') elif-tila ['mykistys']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") palautuslauseke ('TV: n mykistäminen') elif-tila ['mykistys ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") palautuslauseke (' TV: n mykistyksen poistaminen ') else: return lausunto (' Etätoimintoa ei löydy. ') jos _nimi_ ==' _main_ ': portti = 5000 sovellusta.run (isäntä = '0.0.0.0', portti = portti)

Tallenna ja sulje tiedosto.

Käynnistä pullo -palvelin seuraavasti:

sudo python ir_control.py

Jätä kaikki kolme ngrok -pääteikkunaa, light_control.py, fan_control.py ja ir_control.py toimimaan

Vaihe 7: Kirjaudu AWS -tilille

Kirjaudu AWS -tilille
Kirjaudu AWS -tilille

Luo ensin tai kirjaudu sisään AWS -kehittäjätilillesi ja avaa Alexa Skills -luettelosi.

Vaihe 8: TV Alexa Skill Setup

TV Alexa Skill Setup
TV Alexa Skill Setup

Valitse "Lisää uusi taito".

Määritä taitonimeksi "Trigger TV" ja kutsun nimeksi sana tai sanat, joita haluat käyttää taidon aktivoimiseen.

Jatka napsauttamalla Seuraava.

Kopioi/liitä seuraava Intent Schema -ruutuun:

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

Napsauta seuraavaksi Lisää kortin tyyppi

Kirjoita TV_Function Enter Type -kenttään.

Kirjoita seuraavat arvot Anna arvot -kenttään:

kiihottua

sammuta vaihda tulo lisää äänenvoimakkuutta vähennä äänenvoimakkuutta mykistys poista mykistys

Kopioi/liitä seuraavaksi `` Sample Utterances '' -kenttään:

GPIOControlIntent {status}

GPIOControlIntent {status} {summalla}

Jatka napsauttamalla Seuraava.

Valitse palvelun päätepistetyypiksi 'HTTPS' ja valitse alue. Kirjoita ngrok -URL -osoite vaiheesta 2 ja napsauta 'Seuraava'. URL -osoitteen pitäisi olla seuraavanlainen:

ed6ea04d.ngrok.io

Jatka napsauttamalla Seuraava ja paina Tallenna.

Vaihe 9: Valot Alexa Skill Setup

Valot Alexa Skill Setup
Valot Alexa Skill Setup

Sulje avoin taito ja valitse "Lisää uusi taito".

Aseta taidon nimeksi 'Lights Control' ja kutsun nimeksi sana tai sanat, joita haluat käyttää taidon aktivoimiseen.

Jatka napsauttamalla Seuraava. Kopioi/liitä seuraava Intent Schema -ruutuun:

{

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

Napsauta sitten 'Lisää kortin tyyppi'.

Kirjoita "LIGHTS_CONTROL" Enter Type -kenttään.

Kirjoita seuraavat arvot Anna arvot -kenttään:

päällä

vinossa

Kopioi/liitä seuraavaksi `` Sample Utterances '' -kenttään:

LightsControlIntent turn {status}

Jatka napsauttamalla Seuraava. Valitse palvelun päätepistetyypiksi HTTPS ja valitse alue. Anna ngrok -URL -osoite vaiheessa 2 ja napsauta Seuraava. URL -osoitteen pitäisi olla seuraavanlainen:

ed6ea04d.ngrok.io

Jatka napsauttamalla Seuraava ja paina Tallenna.

Vaihe 10: Fani Alexa Skill Setup

Fani Alexa Skill Setup
Fani Alexa Skill Setup

Sulje avoin taito ja valitse "Lisää uusi taito".

Määritä taitonimeksi "Fan Control" ja kutsun nimeksi sana tai sanat, joilla haluat aktivoida taidon.

Jatka napsauttamalla Seuraava.

Kopioi/liitä seuraava Intent Schema -ruutuun:

{

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

Napsauta sitten 'Lisää kortin tyyppi'.

Kirjoita "FAN_CONTROL" Enter Type -kenttään.

Kirjoita seuraavat arvot Anna arvot -kenttään:

päällä

vinossa

Kopioi/liitä seuraavaksi `` Sample Utterances '' -kenttään:

FANControlIntent turn {status}

Jatka napsauttamalla Seuraava. Valitse palvelun päätepistetyypiksi HTTPS ja valitse alue. Anna ngrok -URL -osoite vaiheessa 2 ja napsauta Seuraava. URL -osoitteen pitäisi olla seuraavanlainen:

ed6ea04d.ngrok.io

Jatka napsauttamalla Seuraava ja paina Tallenna.

Vaihe 11: Rakenna piiri

Rakenna piiri
Rakenna piiri

Liitä piiri kaavion mukaisesti. Käytin JBtek 8 -kanavaista DC 5V -relemoduulia yhdistämään kotini AC 120v -linjaan ja maahan.

Vaihe 12: Alexa -komennot

Nyt seuraavat komennot voidaan puhua Alexalle ohjaamaan olohuonetta.

Suositeltava: