Sadržaj:

Upravljajte dnevnim boravkom s Alexa i Raspberry Pi: 12 koraka
Upravljajte dnevnim boravkom s Alexa i Raspberry Pi: 12 koraka

Video: Upravljajte dnevnim boravkom s Alexa i Raspberry Pi: 12 koraka

Video: Upravljajte dnevnim boravkom s Alexa i Raspberry Pi: 12 koraka
Video: Веб-программирование – информатика для руководителей бизнеса 2016 2024, Studeni
Anonim
Upravljajte dnevnim boravkom s Alexa i Raspberry Pi
Upravljajte dnevnim boravkom s 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 sliku Raspbian Jessie preuzetu sa

Nakon što se prijavite, unesite sljedeće naredbe za instaliranje potrebnih paketa i python knjižnica:

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: Postavljanje Ngroka

Postavljanje Ngrok
Postavljanje 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 drugi 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 stvorite novu python datoteku imena light_control.py:

nano light_control.py

Kopirajte/zalijepite sljedeći kôd u novu datoteku:

iz flask import Flaskfrom flask_ask import Ask, statement, convert_errors uvoz RPi. GPIO kao GPIO uvoz log log 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', ' low ']: GPIO.output (pinNum, GPIO. HIGH) return statement (' Uključivanje {} svjetla dnevne sobe'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', port = port)

Spremite i zatvorite datoteku.

Pokrenite poslužitelj flask 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 stvorite novu python datoteku pod nazivom fan_control.py:

nano fan_control.py

Kopirajte/zalijepite sljedeći kôd u novu datoteku:

iz tikvice uvoz 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 iznimke kao e: return naredba ('PIN broj nije važeća. ') 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) povratna naredba ('Uključivanje {} svjetla dnevne sobe'. Format (status)) ako je _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = port)

Spremite i zatvorite datoteku.

Pokrenite flask poslužitelj sa:

sudo python fan_control.py

Ostavite pokrenute i ngrok, light_control.py i fan_control.py

Korak 5: Instaliranje i konfiguriranje LIRC paketa

Da biste upravljali televizorom, morate konfigurirati pin na Raspberry Pi -u za generiranje infracrvenih (IR) 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 /moduli

Dodajte donje retke u datoteku (Pazite 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 Nanou kao i prije pomoću sudo:

sudo nano /etc/lirc/hardware.conf

Datoteci dodajte sljedeću konfiguraciju:

LIRCD_ARGS = "-uinput" LOAD_MODULES = istina

DRIVER = "zadano"

DEVICE = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Sada ponovno pokrenite Raspberry Pi:

sudo ponovno podizanje sustava

Korak 6: Python skripta za upravljanje televizorom

Otvorite novu terminalsku sesiju i stvorite 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. Nakon što pronađete datoteku koja podržava vaš televizor, 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đer provjerite podržavaju li konfiguracijske datoteke televizora TV naredbe; Možda ćete morati izmijeniti naredbe KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN i KEY_MUTE za ispravan rad s konfiguracijskom datotekom televizora:

iz flask import Flaskfrom flask_ask import Ask, statement, convert_errors uvoz RPi. GPIO kao GPIO uvoz log log 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či"]: 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 glasnoću']: 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 glasnoće na televizoru ") elif status u ['smanjivanje glasnoće']: 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 ('Smanjivanje glasnoće 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 statement (' Unmuting the TV ') else: return statement (' Remote function not found. ') if _name_ ==' _main_ ': port = 5000 app.run (host = '0.0.0.0', port = port)

Spremite i zatvorite datoteku.

Pokrenite poslužitelj flask 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 popis 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 upotrijebiti za aktiviranje vještine.

Pritisnite "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'.

U polje "Unesite vrijednosti" unesite sljedeće vrijednosti:

upaliti

isključiti promijeniti ulaz povećati jačinu zvuka smanjiti glasnoću utišati uključiti

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

GPIOControlIntent {status}

GPIOControlIntent {status} prema {amount}

Pritisnite "Dalje" za nastavak.

Odaberite "HTTPS" kao vrstu krajnje točke usluge i odaberite regiju. Unesite URL ngrok 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štine

Svjetla postavlja Alexa Alexa vještinu
Svjetla postavlja Alexa Alexa vještinu

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 upotrijebiti za aktiviranje vještine.

Pritisnite "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 "Unesite vrstu".

U polje "Unesite vrijednosti" unesite sljedeće vrijednosti:

na

isključeno

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

LightsControlIntent skrenite {status}

Pritisnite "Dalje" za nastavak. Odaberite "HTTPS" kao vrstu krajnje točke usluge i odaberite regiju. Unesite ngrok URL iz 2. koraka 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 Fan 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 upotrijebiti za aktiviranje vještine.

Pritisnite "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 "Unesite vrstu".

U polje "Unesite vrijednosti" unesite sljedeće vrijednosti:

na

isključeno

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

FANControlIntent skrenite {status}

Pritisnite "Dalje" za nastavak. Odaberite "HTTPS" kao vrstu krajnje točke usluge i odaberite regiju. Unesite ngrok URL iz 2. koraka 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 s Alexa mogu izgovoriti sljedeće naredbe za kontrolu vaše dnevne sobe.

Preporučeni: