Sadržaj:

Upravljajte dnevnom sobom s Alexa i Raspberry Pi: 12 koraka
Upravljajte dnevnom sobom s Alexa i Raspberry Pi: 12 koraka

Video: Upravljajte dnevnom sobom s Alexa i Raspberry Pi: 12 koraka

Video: Upravljajte dnevnom sobom s Alexa i Raspberry Pi: 12 koraka
Video: Автоматический календарь-планировщик смен в Excel 2024, Septembar
Anonim
Upravljajte dnevnim boravkom pomoću Alexa i Raspberry Pi
Upravljajte dnevnim boravkom pomoću Alexa i Raspberry Pi

Upravljajte TV -om, svjetlima i ventilatorom u dnevnoj sobi pomoću Alexa (Amazon Echo ili Dot) i Raspberry Pi GPIO.

Korak 1: Početno postavljanje

Koristio sam Raspberry Pi 2 i Raspbian Jessie sliku preuzetu sa

Nakon što ste prijavljeni, unesite sljedeće naredbe za instaliranje potrebnih paketa i python biblioteka:

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

Korak 2: Postavite Ngrok

Postavite Ngrok
Postavite Ngrok

Posjetite https://ngrok.com/download i preuzmite najnovije izdanje Linux ARM -a kao zip i raspakirajte unutar početnog direktorija:

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

Otvorite novi terminal i unesite sljedeću naredbu:

sudo./ngrok http 4000

Otvorite još jedan novi terminal i unesite sljedeću naredbu:

sudo./ngrok http 4500

Otvorite treći novi terminal i unesite sljedeću naredbu:

sudo./ngrok http 5000

Korak 3: Python skripta za kontrolu prekidača svjetla

Otvorite novu terminalsku sesiju i kreirajte novu python datoteku pod nazivom light_control.py:

nano light_control.py

Kopirajte/zalijepite sljedeći kod u novu datoteku:

iz flask import Flaskfrom flask_ask import Ask, statement, convert_errors uvoz RPi. GPIO kao GPIO import logging 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): try: pinNum = 27 osim iznimke kao e: return naredbe ('Pin broj nije važeći.') GPIO.setup (pinNum, GPIO. OUT) ako je status u ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) if status in ['off', ' niska ']: GPIO.output (pinNum, GPIO. HIGH) povratna naredba (' Uključivanje {} svjetla dnevne sobe '. format (status)) ako je _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', port = port)

Sačuvajte i zatvorite datoteku.

Pokrenite flask server sa:

sudo python light_control.py

Ostavite da ngrok i light_control.py rade

Korak 4: Python skripta za kontrolu ventilatora

Otvorite novu terminalsku sesiju i kreirajte novu python datoteku pod nazivom fan_control.py:

nano fan_control.py

Kopirajte/zalijepite sljedeći kod u novu datoteku:

from flask import Flask

from flask_ask import Ask, statement, convert_errors import RPi. GPIO kao GPIO import logging import 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 (status): try: pinNum = 22 osim izuzetka kao e: return naredba ('PIN broj nije važeća. ') GPIO.setup (pinNum, GPIO. OUT) ako je status u [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) if status in [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) povratna naredba ('Okretanje {} svjetla dnevne sobe'. Format (status)) ako je _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = port)

Sačuvajte i zatvorite datoteku.

Pokrenite flask server sa:

sudo python fan_control.py

Ostavite i ngrok, light_control.py i fan_control.py da rade

Korak 5: Instaliranje i konfiguriranje LIRC paketa

Da biste upravljali televizorom, morate konfigurirati pin na Raspberry Pi -u za generiranje infracrvenih (IC) signala za vaš određeni televizor. Otvorite terminal i unesite sljedeću naredbu za instaliranje LIRC paketa koji oponaša infracrvene signale mnogih daljinskih upravljača.

sudo apt-get install lirc

Zatim morate omogućiti i konfigurirati modul jezgre lirc_rpi. Da biste to učinili, otvorite module u Nano uređivaču

sudo nano /etc /modules

Dodajte donje retke u datoteku (Uvjerite se da parametar gpio_out_pin pokazuje na pin koji kontrolira IC LED):

lirc_devlirc_rpi gpio_out_pin = 17

Zatim otvorite datoteku hardware.conf u Nano -u kao i prije pomoću sudo:

sudo nano /etc/lirc/hardware.conf

Dodajte sljedeću konfiguraciju u datoteku:

LIRCD_ARGS = "-uinput" LOAD_MODULES = tačno

DRIVER = "zadano"

DEVICE = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Sada ponovo pokrenite Raspberry Pi:

sudo reboot

Korak 6: Python skripta za kontrolu televizora

Otvorite novu terminalsku sesiju i kreirajte novu python datoteku pod nazivom ir_control.py:

nano ir_control.py

Idite na

Pronađite daljinski upravljač koji je kompatibilan s vašim televizorom. U mom slučaju imam Sanyo TV koji radi s konfiguracijskom datotekom sanyo-tv01. Kada pronađete datoteku koja podržava vaš TV, otvorite je i pregledajte opcije naredbi.

Kopirajte/zalijepite sljedeći kôd u novu datoteku i zamijenite sanyo-tv01 imenom datoteke koja radi s vašim televizorom. Takođe se pobrinite da TV komande podržavaju konfiguracijske datoteke vašeg televizora; Možda ćete morati izmijeniti naredbe KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN i KEY_MUTE za ispravan rad s konfiguracijskom datotekom vašeg televizora:

iz flask import Flaskfrom flask_ask import Ask, statement, convert_errors uvoz RPi. GPIO kao GPIO import logging 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): if status in ['uključivanje']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") povratna izjava ('Uključivanje televizora') elif status u ['isključivanje']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") return statement ('Isključivanje televizora') elif status u ['change input']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return izjava ('Promjena ulaza na TV-u') elif status u ['povećaj jačinu zvuka']: 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 ") return statement (" Povećanje jačine zvuka na TV-u ") elif status u ['smanjuje jačinu zvuka']: 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_OOL" ir ") return statement ('Smanjivanje jačine zvuka na TV-u') elif status u ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") return statement ('Muting the TV') elif status u ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return naredba (' Unmuting TV ') else: return statement (' Remote function not found. ') if _name_ ==' _main_ ': port = 5000 app.run (host = '0.0.0.0', port = port)

Sačuvajte i zatvorite datoteku.

Pokrenite flask server sa:

sudo python ir_control.py

Ostavite sva tri prozora terminala ngrok, light_control.py, fan_control.py i ir_control.py

Korak 7: Prijavite se na AWS račun

Prijavite se na AWS račun
Prijavite se na AWS račun

Prvo stvorite ili se prijavite na svoj AWS račun za programere i otvorite svoju listu Alexa vještina.

Korak 8: Postavljanje TV Alexa vještine

Postavljanje TV Alexa vještine
Postavljanje TV Alexa vještine

Odaberite "Dodaj novu vještinu".

Postavite naziv vještine na 'Trigger TV', a naziv poziva na riječi koje želite koristiti za aktiviranje vještine.

Kliknite 'Dalje' za nastavak.

Kopirajte/zalijepite sljedeće u okvir 'Shema namjere':

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

Zatim kliknite "Dodaj vrstu utora"

Unesite TV_Function u polje 'Enter Type'.

Unesite sljedeće vrijednosti u polje 'Unesite vrijednosti':

uključi

isključiti promeniti ulaz povećati jačinu zvuka smanjiti jačinu zvuka isključiti zvuk

Zatim kopirajte/zalijepite sljedeće u okvir 'Primjeri izjava':

GPIOControlIntent {status}

GPIOControlIntent {status} prema {amount}

Kliknite 'Dalje' za nastavak.

Odaberite "HTTPS" kao vrstu krajnje točke usluge i odaberite regiju. Unesite ngrok URL iz koraka 2 i kliknite "Dalje". URL bi trebao biti nešto poput:

ed6ea04d.ngrok.io

Pritisnite 'Dalje' za nastavak i pritisnite 'Spremi'.

Korak 9: Osvjetljava postavljanje Alexa vještina

Svjetla postavljanje Alexa vještine
Svjetla postavljanje Alexa vještine

Zatvorite otvorenu vještinu i odaberite "Dodaj novu vještinu".

Postavite naziv vještine na 'Kontrola svjetla', a naziv poziva na riječ (i) koje želite koristiti za aktiviranje vještine.

Kliknite 'Dalje' za nastavak. Kopirajte/zalijepite sljedeće u okvir 'Shema namjere':

{

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

Zatim kliknite 'Dodaj vrstu utora'.

Unesite "LIGHTS_CONTROL" u polje 'Enter Type'.

Unesite sljedeće vrijednosti u polje 'Unesite vrijednosti':

uključeno

isključeno

Zatim kopirajte/zalijepite sljedeće u okvir 'Primjeri izjava':

LightsControlIntent skrenite {status}

Kliknite 'Dalje' za nastavak. Odaberite „HTTPS“kao vrstu krajnje točke usluge i odaberite regiju. Unesite ngrok URL iz koraka 2 i kliknite 'Dalje'. URL bi trebao biti nešto poput:

ed6ea04d.ngrok.io

Pritisnite 'Dalje' za nastavak i pritisnite 'Spremi'.

Korak 10: Postavljanje vještine Alexa Alexa

Fan Alexa Skill Setup
Fan Alexa Skill Setup

Zatvorite otvorenu vještinu i odaberite "Dodaj novu vještinu".

Postavite naziv vještine na 'Kontrola obožavatelja', a naziv poziva na riječ (i) koje želite koristiti za aktiviranje vještine.

Kliknite 'Dalje' za nastavak.

Kopirajte/zalijepite sljedeće u okvir 'Shema namjere':

{

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

Zatim kliknite 'Dodaj vrstu utora'.

Unesite "FAN_CONTROL" u polje 'Enter Type'.

Unesite sljedeće vrijednosti u polje 'Unesite vrijednosti':

uključeno

isključeno

Zatim kopirajte/zalijepite sljedeće u okvir 'Primjeri izjava':

FANControlIntent skrenite {status}

Kliknite 'Dalje' za nastavak. Odaberite „HTTPS“kao vrstu krajnje točke usluge i odaberite regiju. Unesite ngrok URL iz koraka 2 i kliknite 'Dalje'. URL bi trebao biti nešto poput:

ed6ea04d.ngrok.io

Pritisnite 'Dalje' za nastavak i pritisnite 'Spremi'.

Korak 11: Izgradite Ciruit

Izgradite Ciruit
Izgradite Ciruit

Spojite krug kao što je prikazano na dijagramu. Koristio sam JBtek 8 -kanalni DC 5V relejni modul za spajanje na kućnu AC 120v liniju i masu.

Korak 12: Alexa naredbe

Sada se Aleksa može izgovoriti sljedeće naredbe kako bi kontrolirao vašu dnevnu sobu.

Preporučuje se: