INHOUDSOPGAWE:

Beheer woonkamer met Alexa en Framboos Pi: 12 stappe
Beheer woonkamer met Alexa en Framboos Pi: 12 stappe

Video: Beheer woonkamer met Alexa en Framboos Pi: 12 stappe

Video: Beheer woonkamer met Alexa en Framboos Pi: 12 stappe
Video: Broadlink RM plus - integreer in Domoticz, creëer een database met IR- en RF-codes 2024, November
Anonim
Beheer woonkamer met Alexa en Framboos Pi
Beheer woonkamer met Alexa en Framboos Pi

Beheer u woonkamer -TV, ligte en waaier met Alexa (Amazon Echo of Dot) en Raspberry Pi GPIO.

Stap 1: Aanvanklike opstelling

Ek het 'n Raspberry Pi 2 en 'n Raspbian Jessie -prent gebruik wat afgelaai is van

Sodra u aangemeld het, voer die volgende opdragte in om die vereiste pakkette en python -biblioteke te installeer:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip installeer Fleskolf-vra sudo apt-get install lirc

Stap 2: Stel Ngrok op

Stel Ngrok op
Stel Ngrok op

Besoek https://ngrok.com/download en kry die nuutste Linux ARM -weergawe as 'n zip en pak dit uit in die tuisgids:

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

Maak 'n nuwe terminale oop en voer die volgende opdrag in:

sudo./ngrok http 4000

Maak nog 'n nuwe terminale oop en voer die volgende opdrag in:

sudo./ngrok http 4500

Maak die derde nuwe terminale oop en voer die volgende opdrag in:

sudo./ngrok http 5000

Stap 3: Python -script vir beheer oor ligskakelaars

Maak 'n nuwe terminalsessie oop en skep 'n nuwe python -lêer met die naam light_control.py:

nano light_control.py

Kopieer/plak die volgende kode in die nuwe lêer:

van fles invoer Kolf van flask_ask invoer Vra, verklaring, omskakel foute invoer RPi. GPIO as GPIO invoer logboek invoer os GPIO.setmode (GPIO. BCM) app = Flask (_ naam_) ask = Vra (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): probeer: pinNum = 27 behalwe Uitsondering as e: retourstelling ('Speldnommer nie geldig nie.') GPIO.setup (pinNum, GPIO. OUT) as status in ['aan', 'hoog']: GPIO.output (pinNum, GPIO. LOW) as status in ['af', ' laag ']: GPIO.output (pinNum, GPIO. HIGH) opgaweverklaring (' Draai {} die Living Room Lights'.formaat (status)) as _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', poort = poort)

Stoor en maak die lêer toe.

Begin die kolfbediener met:

sudo python light_control.py

Laat beide ngrok en light_control.py aan die gang

Stap 4: Python -script vir waaierbeheer

Maak 'n nuwe terminalsessie oop en skep 'n nuwe python -lêer met die naam fan_control.py:

nano fan_control.py

Kopieer/plak die volgende kode in die nuwe lêer:

van fles invoer Flask

vanaf flask_ask import Vra, statement, convert_errors invoer RPi. GPIO as GPIO import logging invoer os GPIO.setmode (GPIO. BCM) app = Flask (_ naam_) ask = Ask (app, '/') logging.getLogger ("flask_ask").setLevel (aanmelding. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): probeer: pinNum = 22 behalwe Uitsondering as e: retourstelling ('Pin -nommer') nie geldig nie. ') GPIO.setup (pinNum, GPIO. OUT) as status in [' aan ',' hoog ']: GPIO.output (pinNum, GPIO. LOW) as status in [' af ',' laag ']: GPIO.output (pinNum, GPIO. HIGH) opgaweverklaring ('Draai {} die woonkamerligte'.formaat (status)) as _name_ ==' _main_ ': port = 4500 app.run (host =' 0.0.0.0 ', poort = poort)

Stoor en maak die lêer toe.

Begin die kolfbediener met:

sudo python fan_control.py

Laat beide ngrok, light_control.py en fan_control.py aan die gang

Stap 5: Installeer en konfigureer die LIRC -pakket

Om die TV te beheer, moet u 'n pen op die Raspberry Pi instel om infrarooi (IR) seine vir u spesifieke TV te genereer. Maak terminale oop en voer die volgende opdrag in om 'n LIRC -pakket te installeer wat die infrarooi seine van baie afstandsbedienings naboots.

sudo apt-get installeer lirc

Vervolgens moet u die lirc_rpi kernmodule aktiveer en konfigureer. Om dit te doen, maak modules oop in die Nano -redakteur

sudo nano /etc /modules

Voeg die onderstaande lyne by die lêer (maak seker dat die parameter gpio_out_pin wys na die pen wat die IR -LED beheer):

lirc_devlirc_rpi gpio_out_pin = 17

Open vervolgens die hardware.conf -lêer in Nano soos voorheen met sudo:

sudo nano /etc/lirc/hardware.conf

Voeg die volgende opset by die lêer:

LIRCD_ARGS = "-uinput" LOAD_MODULES = waar

DRIVER = "verstek"

TOESTEL = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Herlaai nou die Raspberry Pi:

sudo herlaai

Stap 6: Python -script vir TV -beheer

Maak 'n nuwe terminalsessie oop en skep 'n nuwe python -lêer met die naam ir_control.py:

nano ir_control.py

Gaan na

Soek 'n afstandsbediening wat met u TV versoenbaar is. In my geval het ek 'n Sanyo TV wat werk met die sanyo-tv01 config lêer. Sodra u 'n lêer gevind het wat u TV ondersteun, maak dit oop en kyk deur die opdragopsies.

Kopieer/plak die volgende kode in die nuwe lêer en vervang sanyo-tv01 met die lêernaam wat met u TV werk. Maak ook seker dat die TV -opdragte deur u konfig -lêer vir u TV's ondersteun word; Miskien moet u die KEY_POWER-, KEY_VIDEO-, KEY_VOLUMEUP-, KEY_VOLUMEDOWN- en KEY_MUTE -opdragte verander om korrek te werk met die konfigurasie -lêer van u TV:

van fles invoer Kolf van flask_ask invoer Vra, verklaring, omskakel foute invoer RPi. GPIO as GPIO invoer logboek invoer os GPIO.setmode (GPIO. BCM) app = Flask (_ naam_) ask = Vra (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status): as status in ['aanskakel']: os.system ("stuur SEND_ONCE sanyo-tv01 KEY_POWER") opgaweverklaring ('Skakel die TV aan') elif-status in ['afskakel']: os.system ("stuur SEND_ONCE sanyo-tv01 KEY_POWER ") opgaweverklaring ('Skakel die TV af') elif-status in ['verander insette']: os.system (" stuur SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" stuur SEND_ONCE sanyo-tv01 KEY_VIDEO ") terug verklaring ('Verander insette op die TV') elifstatus in ['volume verhoog']: os.system ("stuur SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("stuur SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("stuur SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") os.system (" stuur SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") opgaweverklaring ('Verhoog volume op die TV') elifstatus in ['verlaag volume']: os.system (" stuur SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN ") os.system ("stuur SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("stuur SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("stuur SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system " ") opgaweverklaring ('Afnemende volume op die TV') elifstatus in ['demp']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") opgaweverklaring ('demp die TV') elifstatus in ['demp' ']: os.system ("stuur SEND_ONCE sanyo-tv01 KEY_MUTE") opgaweverklaring (' Ontdemp die TV ') anders: opgaafverklaring (' Afstandsfunksie nie gevind nie. ') as _name_ ==' _main_ ': port = 5000 app.run (gasheer = '0.0.0.0', poort = poort)

Stoor en maak die lêer toe.

Begin die kolfbediener met:

sudo python ir_control.py

Laat al drie die ngrok -terminale vensters, light_control.py, fan_control.py en ir_control.py aan die gang

Stap 7: Meld aan by AWS -rekening

Meld aan by AWS -rekening
Meld aan by AWS -rekening

Skep of meld eers aan by u AWS -ontwikkelaarrekening en maak u lys met Alexa Skills oop.

Stap 8: Opstel van TV -Alexa -vaardigheid

TV -vaardigheidsopstelling van TV
TV -vaardigheidsopstelling van TV

Kies 'Voeg 'n nuwe vaardigheid by'.

Stel die vaardigheidsnaam in op 'Trigger TV' en die aanroepingsnaam op die woord (e) wat u wil gebruik om die vaardigheid te aktiveer.

Klik op 'Volgende' om voort te gaan.

Kopieer/plak die volgende in die 'Intent Schema' -boks:

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

Klik vervolgens op 'Voeg gleuftipe by'

Voer TV_Function in die veld 'Enter Type' in.

Voer die volgende waardes in die veld 'Tik waardes' in:

sit aan

skakel verander insette verhoog volume verlaag volume demp demp

Kopieer/plak die volgende in die boks 'Voorbeelduitsprake':

GPIOControlIntent {status}

GPIOControlIntent {status} volgens {amount}

Klik op 'Volgende' om voort te gaan.

Kies 'HTTPS' as die tipe eindpunt van die diens en kies 'n streek. Voer die ngrok -URL in vanaf stap 2 en klik op 'Volgende'. Die URL moet iets soos:

ed6ea04d.ngrok.io

Klik op 'Volgende' om voort te gaan en druk op 'stoor'.

Stap 9: Verlig Alexa Skill Setup

Steek Alexa Skill Setup op
Steek Alexa Skill Setup op

Sluit die oop vaardigheid en kies 'Voeg 'n nuwe vaardigheid by'.

Stel die vaardigheidsnaam in op 'Lights Control' en die aanroepingsnaam op die woord (e) wat u wil gebruik om die vaardigheid te aktiveer.

Klik op 'Volgende' om voort te gaan. Kopieer/plak die volgende in die 'Intent Schema' -boks:

{

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

Klik vervolgens op 'Voeg gleuftipe by'.

Voer "LIGHTS_CONTROL" in die 'Enter Type' veld in.

Voer die volgende waardes in die veld 'Voer waardes in' in:

op

af

Kopieer/plak die volgende in die boks 'Voorbeelduitsprake':

LightsControlIntent draai {status}

Klik op 'Volgende' om voort te gaan. Kies 'HTTPS' as die tipe diens eindpunt en kies 'n streek. Voer die ngrok -URL in vanaf stap 2 en klik op 'Volgende'. Die URL moet iets soos:

ed6ea04d.ngrok.io

Klik op 'Volgende' om voort te gaan en druk op 'stoor'.

Stap 10: Waaier Alexa Skill Setup

Aanhanger van Alexa Skill -opstelling
Aanhanger van Alexa Skill -opstelling

Sluit die oop vaardigheid en kies 'Voeg 'n nuwe vaardigheid by'.

Stel die vaardigheidsnaam in op 'waaierbeheer' en die aanroepingsnaam op die woord (e) wat u wil gebruik om die vaardigheid te aktiveer.

Klik op 'Volgende' om voort te gaan.

Kopieer/plak die volgende in die 'Intent Schema' -boks:

{

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

Klik vervolgens op 'Voeg gleuftipe by'.

Voer "FAN_CONTROL" in die veld 'Tik tipe' in.

Voer die volgende waardes in die veld 'Tik waardes' in:

op

af

Kopieer/plak die volgende in die boks 'Voorbeelduitsprake':

FANControlIntent draai {status}

Klik op 'Volgende' om voort te gaan. Kies 'HTTPS' as die tipe diens eindpunt en kies 'n streek. Voer die ngrok -URL in vanaf stap 2 en klik op 'Volgende'. Die URL moet iets soos:

ed6ea04d.ngrok.io

Klik op 'Volgende' om voort te gaan en druk op 'stoor'.

Stap 11: Bou die Ciruit

Bou die Ciruit
Bou die Ciruit

Verbind die stroombaan soos in die diagram getoon. Ek het 'n JBtek 8 -kanaals DC 5V -aflosmodule gebruik om aan te sluit by my huise AC 120v -lyn en -grond.

Stap 12: Alexa -opdragte

Nou kan die volgende opdragte met Alexa gepraat word om u woonkamer te beheer.

Aanbeveel: