Indholdsfortegnelse:

Styr stue med Alexa og Raspberry Pi: 12 trin
Styr stue med Alexa og Raspberry Pi: 12 trin

Video: Styr stue med Alexa og Raspberry Pi: 12 trin

Video: Styr stue med Alexa og Raspberry Pi: 12 trin
Video: СВИСТОК СМЕРТИ ночью НА КЛАДБИЩЕ / Призрак ребёнка в видео / Aztec Death Whistle 2024, Juni
Anonim
Styr stue med Alexa og Raspberry Pi
Styr stue med Alexa og Raspberry Pi

Styr dit stue -tv, lys og ventilator med Alexa (Amazon Echo eller Dot) og Raspberry Pi GPIO.

Trin 1: Første opsætning

Jeg brugte et Raspberry Pi 2 og et Raspbian Jessie -billede downloadet fra

Når du er logget ind, skal du indtaste følgende kommandoer for at installere de nødvendige pakker og python -biblioteker:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Kolbe kolbe-spørg sudo apt-get install lirc

Trin 2: Konfigurer Ngrok

Opsætning af Ngrok
Opsætning af Ngrok

Besøg https://ngrok.com/download og få den nyeste Linux ARM -udgivelse som en zip og udpakning i hjemmebiblioteket:

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

Åbn en ny terminal, og indtast følgende kommando:

sudo./ngrok http 4000

Åbn en ny ny terminal, og indtast følgende kommando:

sudo./ngrok http 4500

Åbn den tredje nye terminal, og indtast følgende kommando:

sudo./ngrok http 5000

Trin 3: Python Script til Light Switch Control

Åbn en ny terminalsession, og opret en ny python -fil ved navn light_control.py:

nano light_control.py

Kopier/indsæt følgende kode i den nye fil:

fra kolbe import Kolbe fra kolbe_ask import Spørg, erklæring, konverteringsfejl importerer RPi. GPIO som GPIO import logning import os GPIO.setmode (GPIO. BCM) app = Kolbe (_ navn_) ask = Spørg (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): prøv: pinNum = 27 undtagen Undtagelse som e: returnering ('Pin -nummer er ikke gyldigt.') 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) returopgørelse (' Drej {} Living Room Lights'.format (status)) hvis _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', port = port)

Gem og luk filen.

Start kolbe serveren med:

sudo python light_control.py

Lad både ngrok og light_control.py køre

Trin 4: Python -script til ventilatorstyring

Åbn en ny terminalsession, og opret en ny python -fil ved navn fan_control.py:

nano fan_control.py

Kopier/indsæt følgende kode i den nye fil:

fra kolbe import Flask

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 undtagen Undtagelse som e: returnering ('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 ('Drejning af {} Living Room Lights'.format (status)) hvis _name_ ==' _main_ ': port = 4500 app.run (host =' 0.0.0.0 ', port = port)

Gem og luk filen.

Start kolbe serveren med:

sudo python fan_control.py

Lad både ngrok, light_control.py og fan_control.py køre

Trin 5: Installation og konfiguration af LIRC -pakken

For at styre tv'et skal du konfigurere en pin på Raspberry Pi til at generere infrarøde (IR) signaler til dit specifikke tv. Åbn terminal og indtast følgende kommando for at installere en LIRC -pakke, der efterligner de infrarøde signaler fra mange fjernbetjeninger.

sudo apt-get install lirc

Dernæst skal du aktivere og konfigurere kernelmodulet lirc_rpi. For at gøre det skal du åbne moduler i Nano -editoren

sudo nano /etc /modules

Føj linjerne herunder til filen (Sørg for, at parameteren gpio_out_pin peger på den pin, der styrer IR -lysdioden):

lirc_devlirc_rpi gpio_out_pin = 17

Åbn derefter hardware.conf -filen i Nano som før med sudo:

sudo nano /etc/lirc/hardware.conf

Tilføj følgende konfiguration til filen:

LIRCD_ARGS = "-uinput" LOAD_MODULES = sand

DRIVER = "standard"

ENHED = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Genstart nu Raspberry Pi:

sudo genstart

Trin 6: Python -script til tv -kontrol

Åbn en ny terminalsession, og opret en ny python -fil ved navn ir_control.py:

nano ir_control.py

Gå til

Find en fjernbetjening, der er kompatibel med dit tv. I mit tilfælde har jeg et Sanyo TV, der fungerer med konfigurationsfilen sanyo-tv01. Når du har fundet en fil, der understøtter dit tv, skal du åbne den og se kommandoindstillingerne igennem.

Kopier/indsæt følgende kode i den nye fil, og erstat sanyo-tv01 med det filnavn, der fungerer med dit tv. Sørg også for, at tv -kommandoerne understøttes af dine tv'ers konfigurationsfil; Du skal muligvis ændre kommandoerne KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN og KEY_MUTE for at fungere korrekt med dit fjernsyns konfigurationsfil:

fra kolbe import Kolbe fra kolbe_ask import Spørg, erklæring, konverteringsfejl importerer RPi. GPIO som GPIO import logning import os GPIO.setmode (GPIO. BCM) app = Kolbe (_ navn_) ask = Spørg (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status): hvis status i ['tænd']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") returerklæring ('Tænd for fjernsynet') elif-status i ['sluk']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") return statement ('Slukning af fjernsynet') elif status i ['change input']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return erklæring ('Ændring af input på fjernsynet') elif-status i ['øg lydstyrke']: 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 ") returopgørelse ('Øget lydstyrke på fjernsynet') elif-status i ['sænk volumen']: 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 ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system "tv" ") return statement ('Reducer lydstyrke på fjernsynet') elif status i ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") return statement ('Muting the TV') elif status in ['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)

Gem og luk filen.

Start kolbe serveren med:

sudo python ir_control.py

Lad alle tre ngrok terminalvinduer, light_control.py, fan_control.py og ir_control.py køre

Trin 7: Log ind på AWS -konto

Log ind på AWS -konto
Log ind på AWS -konto

Opret eller log først på din AWS -udviklerkonto, og åbn din liste over Alexa -færdigheder.

Trin 8: TV Alexa Skill Setup

Opsætning af tv -Alexa -færdigheder
Opsætning af tv -Alexa -færdigheder

Vælg "Tilføj en ny færdighed".

Indstil Færdighedsnavnet til 'Trigger TV' og Tilkaldelsesnavnet til de ord, du vil bruge til at aktivere færdigheden.

Klik på 'Næste' for at fortsætte.

Kopier/indsæt følgende i feltet 'Intent Schema':

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

Klik derefter på 'Tilføj slotstype'

Indtast TV_Function i feltet 'Enter Type'.

Indtast følgende værdier i feltet 'Indtast værdier':

tænde for

sluk ændre input øge lydstyrke reducere lydstyrke slå lyden fra

Kopier/indsæt derefter følgende i feltet 'Prøveudtalelser':

GPIOControlIntent {status}

GPIOControlIntent {status} efter {amount}

Klik på 'Næste' for at fortsætte.

Vælg 'HTTPS' som Service Endpoint Type, og vælg en region. Indtast ngrok URL fra trin 2, og klik på 'Næste'. URL'en skal være noget i retning af:

ed6ea04d.ngrok.io

Klik på 'Næste' for at fortsætte, og tryk på 'Gem'.

Trin 9: Tænder Alexa Skill Setup

Lyser Alexa Skill Setup
Lyser Alexa Skill Setup

Luk den åbne færdighed, og vælg "Tilføj en ny færdighed".

Indstil Færdighedsnavnet til 'Lights Control' og Invocation Name til de ord, du vil bruge til at aktivere færdigheden.

Klik på 'Næste' for at fortsætte. Kopier/indsæt følgende i feltet 'Intent Schema':

{

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

Klik derefter på 'Tilføj slotstype'.

Indtast "LIGHTS_CONTROL" i feltet "Enter Type".

Indtast følgende værdier i feltet 'Indtast værdier':

af

Kopier/indsæt derefter følgende i feltet 'Prøveudtalelser':

LightsControlIntent turn {status}

Klik på 'Næste' for at fortsætte. Vælg 'HTTPS' som Service Endpoint Type, og vælg en region. Indtast ngrok -URL'en fra trin 2, og klik på 'Næste'. URL'en skal være noget i retning af:

ed6ea04d.ngrok.io

Klik på 'Næste' for at fortsætte, og tryk på 'Gem'.

Trin 10: Fan Alexa Skill Setup

Fan Alexa Skill Setup
Fan Alexa Skill Setup

Luk den åbne færdighed, og vælg "Tilføj en ny færdighed".

Indstil Færdighedsnavnet til 'Fan Control' og Invocation Name til de ord, du vil bruge til at aktivere færdigheden.

Klik på 'Næste' for at fortsætte.

Kopier/indsæt følgende i feltet 'Intent Schema':

{

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

Klik derefter på 'Tilføj slotstype'.

Indtast "FAN_CONTROL" i feltet "Enter Type".

Indtast følgende værdier i feltet 'Indtast værdier':

af

Kopier/indsæt derefter følgende i feltet 'Prøveudtalelser':

FANControlIntent turn {status}

Klik på 'Næste' for at fortsætte. Vælg 'HTTPS' som Service Endpoint Type, og vælg en region. Indtast ngrok URL fra trin 2, og klik på 'Næste'. URL'en skal være noget i retning af:

ed6ea04d.ngrok.io

Klik på 'Næste' for at fortsætte, og tryk på 'Gem'.

Trin 11: Byg Ciruit

Byg Ciruit
Byg Ciruit

Tilslut kredsløbet som vist i diagrammet. Jeg brugte et JBtek 8 -kanals DC 5V relæmodul til at forbinde til mine hjem AC 120v -linje og jord.

Trin 12: Alexa -kommandoer

Nu kan følgende kommandoer tales til Alexa for at styre din stue.

Anbefalede: