Innholdsfortegnelse:
- Trinn 1: Første oppsett
- Trinn 2: Konfigurer Ngrok
- Trinn 3: Python -skript for lysbryterkontroll
- Trinn 4: Python -skript for viftekontroll
- Trinn 5: Installere og konfigurere LIRC -pakken
- Trinn 6: Python -skript for TV -kontroll
- Trinn 7: Logg på AWS -konto
- Trinn 8: TV Alexa Skill Setup
- Trinn 9: Lyser opp Alexa Skill Setup
- Trinn 10: Vift Alexa Skill Setup
- Trinn 11: Bygg sirenen
- Trinn 12: Alexa -kommandoer
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Kontroller stuen din TV, lys og vifte med Alexa (Amazon Echo eller Dot) og Raspberry Pi GPIO.
Trinn 1: Første oppsett
Jeg brukte et Raspberry Pi 2 og et Raspbian Jessie -bilde lastet ned fra
Når du er logget inn, skriver du inn følgende kommandoer for å installere de nødvendige pakkene og python -bibliotekene:
sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip installere kolbe kolbe-spør sudo apt-get install lirc
Trinn 2: Konfigurer Ngrok
Besøk https://ngrok.com/download og få den nyeste Linux ARM -versjonen som en zip og pakke ut i hjemmekatalogen:
pakke ut /home/pi/ngrok-stable-linux-arm.zip
Åpne en ny terminal og skriv inn følgende kommando:
sudo./ngrok http 4000
Åpne en ny terminal og skriv inn følgende kommando:
sudo./ngrok http 4500
Åpne den tredje nye terminalen og skriv inn følgende kommando:
sudo./ngrok http 5000
Trinn 3: Python -skript for lysbryterkontroll
Åpne en ny terminalsession og opprett en ny python -fil som heter light_control.py:
nano light_control.py
Kopier/lim inn følgende kode i den nye filen:
fra flaskeimport Flaskfrå flask_ask import Ask, statement, convert_errors import RPi. GPIO as 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): prøv: pinNum = 27 unntatt Unntak som e: returoppgave ('PIN -nummer er ikke gyldig.') GPIO.setup (pinNum, GPIO. OUT) hvis status i ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) hvis status i ['off', ' lav ']: GPIO.output (pinNum, GPIO. HIGH) returoppgave (' Slå {} Living Room Lights'.format (status)) hvis _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', port = port)
Lagre og lukk filen.
Start kolbe -serveren med:
sudo python light_control.py
La både ngrok og light_control.py være i gang
Trinn 4: Python -skript for viftekontroll
Åpne en ny terminaløkt og opprett en ny python -fil som heter fan_control.py:
nano fan_control.py
Kopier/lim inn følgende kode i den nye filen:
fra kolbeimport Flaske
fra flask_ask import Ask, statement, convert_errors import RPi. GPIO as 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 unntatt Unntak som e: returoppgave ('Pin -nummer) ikke gyldig. ') GPIO.setup (pinNum, GPIO. OUT) hvis status i [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) hvis status i [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) returerklæring ('Slå {} opplysningene i stuen'. Format (status)) hvis _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = port)
Lagre og lukk filen.
Start kolbe -serveren med:
sudo python fan_control.py
La både ngrok, light_control.py og fan_control.py være i gang
Trinn 5: Installere og konfigurere LIRC -pakken
For å kontrollere TV -en må du konfigurere en pin på Raspberry Pi for å generere infrarøde (IR) signaler for din spesifikke TV. Åpne terminalen og skriv inn følgende kommando for å installere en LIRC -pakke som emulerer de infrarøde signalene til mange fjernkontroller.
sudo apt-get install lirc
Deretter må du aktivere og konfigurere kjernemodulen lirc_rpi. For å gjøre det, åpne moduler i Nano -editoren
sudo nano /etc /modules
Legg til linjene nedenfor i filen (Sørg for at parameteren gpio_out_pin peker på pinnen som styrer IR -LED):
lirc_devlirc_rpi gpio_out_pin = 17
Deretter åpner du hardware.conf -filen i Nano som før med sudo:
sudo nano /etc/lirc/hardware.conf
Legg til følgende konfigurasjon i filen:
LIRCD_ARGS = "-uinput" LOAD_MODULES = true
DRIVER = "standard"
ENHET = "/dev/lirc0"
MODULES = "lirc_rpi"
LIRCD_CONF = ""
LIRCMD_CONF = ""
Start nå Raspberry Pi på nytt:
sudo omstart
Trinn 6: Python -skript for TV -kontroll
Åpne en ny terminaløkt og opprett en ny python -fil som heter ir_control.py:
nano ir_control.py
Gå til
Finn en fjernkontroll som er kompatibel med TV -en din. I mitt tilfelle har jeg en Sanyo TV som fungerer med konfigurasjonsfilen sanyo-tv01. Når du finner en fil som støtter TV -en din, åpner du den og ser gjennom kommandoalternativene.
Kopier/lim inn følgende kode i den nye filen og erstatt sanyo-tv01 med filnavnet som fungerer med TV-en. Sørg også for at TV -kommandoene støttes av konfigurasjonsfilen til TV -en din; Du må kanskje endre kommandoene KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN og KEY_MUTE for å fungere korrekt med TV -ens konfigurasjonsfil:
fra flaskeimport Flaskfrå flask_ask import Ask, statement, convert_errors import RPi. GPIO as 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): hvis status i ['slå på']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") returerklæring ('Slå på TVen') elif-status i ['slå av']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") returoppgave ('Slå av TV') elif-status i ['endre inngang']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") retur statement ('Endring av inngang på TV') elif-status i ['øk volum']: 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 ") returoppgave ('Økende volum på TV') elifstatus i ['reduser volum']: os.system (" send SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN ") 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_VOLUMEDOWN") os.system "tv" ") returoppgave ('Reduserende volum på TV-en') elif-status i ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") returoppgave ('dempet TV') elif-status i ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") returoppgave (' Unmuting the TV ') else: return statement (' Remote function not found. ') if _name_ ==' _main_ ': port = 5000 app.run (vert = '0.0.0.0', port = port)
Lagre og lukk filen.
Start kolbe -serveren med:
sudo python ir_control.py
La alle tre ngrok terminalvinduer, light_control.py, fan_control.py og ir_control.py være i gang
Trinn 7: Logg på AWS -konto
Opprett eller logg først på AWS -utviklerkontoen din og åpne listen over Alexa Skills.
Trinn 8: TV Alexa Skill Setup
Velg "Legg til en ny ferdighet".
Sett ferdighetsnavnet til 'Trigger TV' og påkallingsnavnet til ordene du vil bruke for å aktivere ferdigheten.
Klikk "Neste" for å fortsette.
Kopier/lim inn følgende i "Intens Schema" -boksen:
"slots": [{"name": "status", "type": "TV_Function"}, {"name": "amount", "type": "AMAZON. NUMBER"}], "intention": "GPIOControlIntent "}]}
Deretter klikker du på 'Legg til spiltype'
Skriv inn TV_Function i feltet "Skriv inn".
Skriv inn følgende verdier i feltet "Skriv inn verdier":
Slå på
slå av endre inngang øke volum redusere volum dempe unmute
Deretter kopierer/limer du inn følgende i "Eksempeluttalelser" -boksen:
GPIOControlIntent {status}
GPIOControlIntent {status} etter {amount}
Klikk "Neste" for å fortsette.
Velg 'HTTPS' som Service Endpoint Type og velg en region. Skriv inn ngrok URL fra trinn 2 og klikk 'Next'. Nettadressen skal være omtrent som:
ed6ea04d.ngrok.io
Klikk "Neste" for å fortsette og trykk "Lagre".
Trinn 9: Lyser opp Alexa Skill Setup
Lukk den åpne ferdigheten og velg "Legg til en ny ferdighet".
Sett ferdighetsnavnet til 'Lights Control' og påkallingsnavnet til ordene du vil bruke for å aktivere ferdigheten.
Klikk "Neste" for å fortsette. Kopier/lim inn følgende i "Intens Schema" -boksen:
{
"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "intention": "LightsControlIntent"}]}
Deretter klikker du på 'Legg til spiltype'.
Skriv inn "LIGHTS_CONTROL" i feltet "Skriv inn".
Skriv inn følgende verdier i feltet "Skriv inn verdier":
på
av
Deretter kopierer/limer du inn følgende i "Eksempeluttalelser" -boksen:
LightsControlIntent sving {status}
Klikk "Neste" for å fortsette. Velg 'HTTPS' som Service Endpoint Type og velg en region. Skriv inn ngrok URL fra trinn 2, og klikk "Neste". Nettadressen skal være omtrent som:
ed6ea04d.ngrok.io
Klikk "Neste" for å fortsette og trykk "Lagre".
Trinn 10: Vift Alexa Skill Setup
Lukk den åpne ferdigheten og velg "Legg til en ny ferdighet".
Sett ferdighetsnavnet til 'Fan Control' og påkallingsnavnet til ordene du vil bruke for å aktivere ferdigheten.
Klikk "Neste" for å fortsette.
Kopier/lim inn følgende i "Intens Schema" -boksen:
{
"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "intention": "FANControlIntent"}]}
Deretter klikker du på 'Legg til spiltype'.
Skriv inn "FAN_CONTROL" i feltet "Skriv inn".
Skriv inn følgende verdier i feltet "Skriv inn verdier":
på
av
Deretter kopierer/limer du inn følgende i "Eksempeluttalelser" -boksen:
FANControlIntent sving {status}
Klikk "Neste" for å fortsette. Velg 'HTTPS' som Service Endpoint Type og velg en region. Skriv inn ngrok -URL -en fra trinn 2 og klikk "Neste". Nettadressen skal være omtrent som:
ed6ea04d.ngrok.io
Klikk "Neste" for å fortsette og trykk "Lagre".
Trinn 11: Bygg sirenen
Koble til kretsen som vist i diagrammet. Jeg brukte en JBtek 8 -kanals DC 5V relemodul for å koble til hjemmet mitt AC 120v linje og jord.
Trinn 12: Alexa -kommandoer
Nå kan følgende kommandoer snakkes til Alexa for å kontrollere stua.