Kazalo:

Nadzor dnevne sobe z Alexa in Raspberry Pi: 12 korakov
Nadzor dnevne sobe z Alexa in Raspberry Pi: 12 korakov

Video: Nadzor dnevne sobe z Alexa in Raspberry Pi: 12 korakov

Video: Nadzor dnevne sobe z Alexa in Raspberry Pi: 12 korakov
Video: Высокая плотность 2022 2024, September
Anonim
Nadzirajte dnevno sobo z Alexa in Raspberry Pi
Nadzirajte dnevno sobo z Alexa in Raspberry Pi

Upravljajte televizijo, luči in ventilator v dnevni sobi z Alexa (Amazon Echo ali Dot) in Raspberry Pi GPIO.

1. korak: Začetna nastavitev

Uporabil sem Raspberry Pi 2 in sliko Raspbian Jessie, preneseno s

Ko ste prijavljeni, vnesite naslednje ukaze za namestitev zahtevanih paketov in knjižnic python:

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

2. korak: Namestite Ngrok

Namestite Ngrok
Namestite Ngrok

Obiščite https://ngrok.com/download in si zagotovite najnovejšo izdajo Linux ARM kot zadrgo in razpakirajte v domačem imeniku:

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

Odprite nov terminal in vnesite naslednji ukaz:

sudo./ngrok http 4000

Odprite nov terminal in vnesite naslednji ukaz:

sudo./ngrok http 4500

Odprite tretji novi terminal in vnesite naslednji ukaz:

sudo./ngrok http 5000

3. korak: Python Script za nadzor stikala za luč

Odprite novo terminalsko sejo in ustvarite novo datoteko python z imenom light_control.py:

nano light_control.py

Kopirajte/prilepite naslednjo kodo v novo datoteko:

iz flask import Flaskfrom flask_ask import Ask, stavek, convert_errors uvoz RPi. GPIO kot GPIO uvoz beleženja uvoz 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 razen izjeme kot e: return stavek ("Pin številka ni veljavna.") GPIO.setup (pinNum, GPIO. OUT), če je stanje v ['on', 'high']: GPIO.output (pinNum, GPIO. LOW), če je stanje v '' off ',' nizko ']: GPIO.output (pinNum, GPIO. HIGH) povratni stavek (' Obračanje {} luči dnevne sobe '. format (stanje)), če je _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', vrata = vrata)

Shranite in zaprite datoteko.

Strežnik bučke zaženite z:

sudo python light_control.py

Tako ngrok kot light_control.py pustite teči

4. korak: Python Script za nadzor ventilatorjev

Odprite novo terminalsko sejo in ustvarite novo datoteko python z imenom fan_control.py:

nano fan_control.py

Kopirajte/prilepite naslednjo kodo v novo datoteko:

iz bučke uvoz Flask

from flask_ask import Ask, stavek, convert_errors uvoz RPi. GPIO kot GPIO uvoz beleženja uvoz os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Vprašaj (app, '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22 razen izjeme kot e: return stavek ('PIN številka ni veljavno. ') GPIO.setup (pinNum, GPIO. OUT) if status in [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) if status in [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) povratni stavek ('Obračanje {} luči dnevne sobe'. Format (stanje)), če je _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = vrata)

Shranite in zaprite datoteko.

Strežnik bučke zaženite z:

sudo python fan_control.py

Pustite tako ngrok, light_control.py kot fan_control.py

5. korak: Namestitev in konfiguracija paketa LIRC

Za nadzor televizorja morate konfigurirati pin na Raspberry Pi za ustvarjanje infrardečih (IR) signalov za vaš televizor. Odprite terminal in vnesite naslednji ukaz za namestitev paketa LIRC, ki posnema infrardeče signale številnih daljinskih upravljalnikov.

sudo apt-get install lirc

Nato morate omogočiti in konfigurirati modul jedra lirc_rpi. Če želite to narediti, odprite module v urejevalniku Nano

sudo nano /etc /moduli

V datoteko dodajte spodnje vrstice (Prepričajte se, da parameter gpio_out_pin kaže na zatič, ki upravlja IR LED):

lirc_devlirc_rpi gpio_out_pin = 17

Nato odprite datoteko hardware.conf v Nano kot prej s sudo:

sudo nano /etc/lirc/hardware.conf

V datoteko dodajte naslednjo konfiguracijo:

LIRCD_ARGS = "-uinput" LOAD_MODULES = res

DRIVER = "privzeto"

DEVICE = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Zdaj znova zaženite Raspberry Pi:

sudo ponovni zagon

6. korak: Python Script za nadzor televizorja

Odprite novo terminalsko sejo in ustvarite novo datoteko python z imenom ir_control.py:

nano ir_control.py

Pojdite na

Poiščite daljinski upravljalnik, ki je združljiv z vašim televizorjem. V mojem primeru imam televizor Sanyo, ki deluje s konfiguracijsko datoteko sanyo-tv01. Ko najdete datoteko, ki podpira vaš televizor, jo odprite in poglejte možnosti ukazov.

Kopirajte/prilepite naslednjo kodo v novo datoteko in zamenjajte sanyo-tv01 z imenom datoteke, ki deluje z vašim televizorjem. Prepričajte se tudi, da ukaze televizorja podpira konfiguracijska datoteka televizorjev; Za pravilno delovanje s konfiguracijsko datoteko televizorja boste morda morali spremeniti ukaze KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN in KEY_MUTE:

iz flask import Flaskfrom flask_ask import Ask, stavek, convert_errors uvoz RPi. GPIO kot GPIO uvoz beleženja uvoz 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): če je status v ['vklop']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") povratni stavek ("Vklop televizorja") elif status v ["izklopi"]: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") return statement ('Izklop televizorja') elif status v ['change input']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return stavek ('Spreminjanje vhoda na televizorju') elif status v ['povečanje glasnosti']: 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 ") povratni stavek (" Povečanje glasnosti na televizorju ") elif status v ['znižaj glasnost']: os.system (" irsend SEND_ONCE sanyo-tv01 KEYNOL) 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_VOLY") ") return statement (" Zmanjšanje glasnosti na televizorju ") elif status v ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") return statement ('Muting the TV') elif status v ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") povratni stavek ("Preklic zvoka televizorja") else: return statement ("Oddaljena funkcija ni najdena.") če je _name_ ==' _main_ ': port = 5000 app.run (gostitelj = '0.0.0.0', vrata = vrata)

Shranite in zaprite datoteko.

Strežnik bučke zaženite z:

sudo python ir_control.py

Pustite vsa tri okna terminala ngrok, light_control.py, fan_control.py in ir_control.py

7. korak: Prijavite se v račun AWS

Prijavite se v račun AWS
Prijavite se v račun AWS

Najprej ustvarite ali se prijavite v svoj račun za razvijalce AWS in odprite svoj seznam Alexa Skills.

8. korak: Nastavitev spretnosti TV Alexa

Nastavitev spretnosti TV Alexa
Nastavitev spretnosti TV Alexa

Izberite "Dodaj novo znanje".

Ime spretnosti nastavite na »Sproži TV«, ime poziva pa na besede, ki jih želite uporabiti za aktiviranje spretnosti.

Za nadaljevanje kliknite 'Naprej'.

Kopirajte/prilepite naslednje v polje »Shema namenov«:

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

Nato kliknite »Dodaj vrsto reže«

V polje 'Enter Type' vnesite TV_Function.

V polje "Vnesi vrednosti" vnesite naslednje vrednosti:

vklopiti

izklopi spremeniti vhod povečati glasnost zmanjšati glasnost utišati vklop

Nato v polje »Vzorčne izjave« kopirajte/prilepite naslednje:

GPIOControlIntent {status}

GPIOControlIntent {status} za {amount}

Za nadaljevanje kliknite 'Naprej'.

Kot vrsto končne točke storitve izberite »HTTPS« in izberite regijo. Vnesite URL ngrok iz 2. koraka in kliknite »Naprej«. URL bi moral biti nekaj takega:

ed6ea04d.ngrok.io

Za nadaljevanje kliknite »Naprej« in pritisnite »Shrani«.

9. korak: Nastavi Alexa Skill Setup

Lights Alexa Skill Setup
Lights Alexa Skill Setup

Zaprite odprto spretnost in izberite "Dodaj novo znanje".

Ime spretnosti nastavite na 'Nadzor luči', ime priklica pa na besede, ki jih želite uporabiti za aktiviranje spretnosti.

Za nadaljevanje kliknite 'Naprej'. Kopirajte/prilepite naslednje v polje »Shema namenov«:

{

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

Nato kliknite »Dodaj vrsto reže«.

V polje "Vnesite vrsto" vnesite "LIGHTS_CONTROL".

V polje "Vnesi vrednosti" vnesite naslednje vrednosti:

naprej

izklopljeno

Nato v polje »Vzorčne izjave« kopirajte/prilepite naslednje:

LightsControlIntent obrnite {status}

Za nadaljevanje kliknite 'Naprej'. Kot vrsto končne točke storitve izberite »HTTPS« in izberite regijo. Vnesite URL ngrok iz 2. koraka in kliknite 'Naprej'. URL bi moral biti nekaj takega:

ed6ea04d.ngrok.io

Za nadaljevanje kliknite »Naprej« in pritisnite »Shrani«.

10. korak: Nastavitev spretnosti Fan Alexa

Fan Alexa Skill Setup
Fan Alexa Skill Setup

Zaprite odprto spretnost in izberite "Dodaj novo znanje".

Ime spretnosti nastavite na 'Nadzor ventilatorja', ime priklica pa na besede, ki jih želite uporabiti za aktiviranje spretnosti.

Za nadaljevanje kliknite 'Naprej'.

Kopirajte/prilepite naslednje v polje 'Namen sheme':

{

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

Nato kliknite »Dodaj vrsto reže«.

V polje "Vnesite vrsto" vnesite "FAN_CONTROL".

V polje "Vnesi vrednosti" vnesite naslednje vrednosti:

naprej

izklopljeno

Nato v polje »Vzorčne izjave« kopirajte/prilepite naslednje:

FANControlIntent obrnite {status}

Za nadaljevanje kliknite 'Naprej'. Kot vrsto končne točke storitve izberite 'HTTPS' in izberite regijo. Vnesite URL ngrok iz 2. koraka in kliknite 'Naprej'. URL bi moral biti nekaj takega:

ed6ea04d.ngrok.io

Za nadaljevanje kliknite »Naprej« in pritisnite »Shrani«.

11. korak: Zgradite Ciruit

Zgradite Ciruit
Zgradite Ciruit

Priključite vezje, kot je prikazano na diagramu. Uporabil sem 8 -kanalni relejni modul DC 5V JBtek za povezavo z domom AC 120v AC in zemljo.

12. korak: Ukazi Alexa

Sedaj lahko z Alexa izgovorite naslednje ukaze za nadzor vaše dnevne sobe.

Priporočena: