INHOUDSOPGAWE:
- Stap 1: Aanvanklike opstelling
- Stap 2: Stel Ngrok op
- Stap 3: Python -script vir beheer oor ligskakelaars
- Stap 4: Python -script vir waaierbeheer
- Stap 5: Installeer en konfigureer die LIRC -pakket
- Stap 6: Python -script vir TV -beheer
- Stap 7: Meld aan by AWS -rekening
- Stap 8: Opstel van TV -Alexa -vaardigheid
- Stap 9: Verlig Alexa Skill Setup
- Stap 10: Waaier Alexa Skill Setup
- Stap 11: Bou die Ciruit
- Stap 12: Alexa -opdragte
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
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
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
Skep of meld eers aan by u AWS -ontwikkelaarrekening en maak u lys met Alexa Skills oop.
Stap 8: Opstel van TV -Alexa -vaardigheid
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
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
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
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.