Obsah:

Ovládajte obývačku pomocou Alexa a Raspberry Pi: 12 krokov
Ovládajte obývačku pomocou Alexa a Raspberry Pi: 12 krokov

Video: Ovládajte obývačku pomocou Alexa a Raspberry Pi: 12 krokov

Video: Ovládajte obývačku pomocou Alexa a Raspberry Pi: 12 krokov
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Septembra
Anonim
Ovládajte obývačku pomocou Alexa a Raspberry Pi
Ovládajte obývačku pomocou Alexa a Raspberry Pi

Ovládajte televízor, svetlá a ventilátor v obývačke pomocou Alexa (Amazon Echo alebo Dot) a Raspberry Pi GPIO.

Krok 1: Počiatočné nastavenie

Použil som Raspberry Pi 2 a obrázok Raspbian Jessie stiahnutý z

Po prihlásení zadajte nasledujúce príkazy na inštaláciu požadovaných balíkov a knižníc pythonu:

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

Krok 2: Nastavte program Ngrok

Nastavte Ngrok
Nastavte Ngrok

Navštívte https://ngrok.com/download a získajte najnovšie vydanie Linux ARM ako zip a rozbaľte v domovskom adresári:

rozbaliť /home/pi/ngrok-stable-linux-arm.zip

Otvorte nový terminál a zadajte nasledujúci príkaz:

sudo./ngrok http 4000

Otvorte ďalší nový terminál a zadajte nasledujúci príkaz:

sudo./ngrok http 4500

Otvorte tretí nový terminál a zadajte nasledujúci príkaz:

sudo./ngrok http 5000

Krok 3: Skript Python na ovládanie prepínača svetla

Otvorte novú reláciu terminálu a vytvorte nový súbor pythonu s názvom light_control.py:

nano light_control.py

Skopírujte/prilepte nasledujúci kód do nového súboru:

z banky import flask_ask "). setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27 except Exception as e: return statement („Číslo PIN nie je platné.“) GPIO.setup (pinNum, GPIO. OUT), ak je stav v ['zapnutý', 'vysoký']: GPIO.output (pinNum, GPIO. LOW) ak je stav v ['vypnutý', ' nízka ']: GPIO.output (pinNum, GPIO. HIGH) návratový príkaz (' Turning {} the Living Room Lights'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0,0.0,0 ', port = port)

Uložte a zatvorte súbor.

Spustite bankový server pomocou:

sudo python light_control.py

Nechajte ngrok aj light_control.py spustené

Krok 4: Skript Python na ovládanie ventilátora

Otvorte novú reláciu terminálu a vytvorte nový súbor pythonu s názvom fan_control.py:

nano fan_control.py

Skopírujte/prilepte nasledujúci kód do nového súboru:

z importu banky Banka

from 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 except Exception as e: return statement ('Pin number neplatné. ') GPIO.setup (pinNum, GPIO. OUT), ak je stav v [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) ak je stav v [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) návratový príkaz ('Turning {} the Living Room Lights'.format (status)) if _name_ ==' _main_ ': port = 4500 app.run (host =' 0.0.0.0 ', port = port)

Uložte a zatvorte súbor.

Spustite bankový server pomocou:

sudo python fan_control.py

Nechajte ngrok, light_control.py a fan_control.py spustené

Krok 5: Inštalácia a konfigurácia balíka LIRC

Aby ste mohli ovládať televízor, musíte na Raspberry Pi nakonfigurovať kolík na generovanie infračervených (IR) signálov pre váš konkrétny televízor. Otvorte terminál a zadaním nasledujúceho príkazu nainštalujte balík LIRC, ktorý emuluje infračervené signály mnohých diaľkových ovládačov.

sudo apt-get install lirc

Ďalej musíte povoliť a nakonfigurovať modul jadra lirc_rpi. Ak to chcete urobiť, otvorte moduly v editore Nano

sudo nano /etc /modules

Pridajte do súboru nasledujúce riadky (uistite sa, že parameter gpio_out_pin ukazuje na pin ovládajúci IR LED):

lirc_devlirc_rpi gpio_out_pin = 17

Potom otvorte súbor hardware.conf v Nano ako predtým pomocou sudo:

sudo nano /etc/lirc/hardware.conf

Pridajte do súboru nasledujúcu konfiguráciu:

LIRCD_ARGS = "-uinput" LOAD_MODULES = true

DRIVER = "predvolené"

DEVICE = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Teraz reštartujte Raspberry Pi:

sudo reštart

Krok 6: Python Script na ovládanie televízora

Otvorte novú reláciu terminálu a vytvorte nový súbor pythonu s názvom ir_control.py:

nano ir_control.py

Prejdite na stránku

Nájdite diaľkové ovládanie, ktoré je kompatibilné s vašim televízorom. V mojom prípade mám televízor Sanyo, ktorý pracuje s konfiguračným súborom sanyo-tv01. Akonáhle nájdete súbor, ktorý podporuje váš televízor, otvorte ho a prezrite si možnosti príkazov.

Skopírujte/prilepte nasledujúci kód do nového súboru a nahraďte sanyo-tv01 názvom súboru, ktorý funguje s vašim televízorom. Zaistite tiež, aby konfiguračné súbory vašich televízorov podporovali televízne príkazy; Možno budete musieť upraviť príkazy KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN a KEY_MUTE, aby správne pracovali s konfiguračným súborom vášho televízora:

z banky import flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status): if status in ['turn on']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return return ('Turning on the TV') elif status in ['turn off']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") návratový príkaz (" Vypnutie televízora ") stav vypnutia v ['zmeniť vstup']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") návrat vyhlásenie („Zmena vstupu v televízore“) stav vypnutia v ['zvýšenie hlasitosti']: 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 ") návratový príkaz (" zvýšenie hlasitosti v televízore ") stav zdvihnutia v ['zníženie hlasitosti']: 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") s_oEENOOL ") vyhlásenie o návrate ('Zníženie hlasitosti v televízore') zrušenie stavu v ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") návratový príkaz ('Stlmenie TV') stav zrušenia v ['zrušiť stlmenie ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") návratový príkaz (' Zrušenie stlmenia televízora ') else: návratový príkaz (' Vzdialená funkcia sa nenašla. ') if _name_ ==' _main_ ': port = 5000 app.run (hostiteľ = '0.0.0.0', port = port)

Uložte a zatvorte súbor.

Spustite bankový server pomocou:

sudo python ir_control.py

Nechajte spustené všetky tri okná terminálu ngrok, light_control.py, fan_control.py a ir_control.py

Krok 7: Prihláste sa do účtu AWS

Prihláste sa do účtu AWS
Prihláste sa do účtu AWS

Najprv si vytvorte alebo sa prihláste k svojmu účtu vývojára AWS a otvorte zoznam svojich schopností Alexa.

Krok 8: Nastavenie zručnosti TV Alexa

Nastavenie zručnosti televízora Alexa
Nastavenie zručnosti televízora Alexa

Vyberte položku „Pridať novú zručnosť“.

Nastavte názov zručnosti na „Spúšťač TV“a vyvolávací názov na slová, ktoré chcete použiť na aktiváciu zručnosti.

Pokračujte kliknutím na „Ďalej“.

Skopírujte/prilepte nasledujúce do poľa „Schéma zámeru“:

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

Potom kliknite na „Pridať typ slotu“

Do poľa „Zadajte typ“zadajte funkciu TV_Function.

Do poľa „Zadať hodnoty“zadajte nasledujúce hodnoty:

zapnúť

vypnúť zmeniť vstup zvýšiť hlasitosť znížiť hlasitosť vypnúť zvuk stlmiť

Ďalej skopírujte/prilepte nasledujúce do poľa „Ukážkové výpovede“:

GPIOControlIntent {status}

GPIOControlIntent {status} od {amount}

Pokračujte kliknutím na „Ďalej“.

Ako typ koncového bodu služby vyberte „HTTPS“a vyberte oblasť. Zadajte adresu ngrok z kroku 2 a kliknite na „Ďalej“. Adresa URL by mala byť nasledovná:

ed6ea04d.ngrok.io

Pokračujte kliknutím na „Ďalej“a potom na „Uložiť“.

Krok 9: Osvetlenie Alexa Skill Setup

Osvetlenie Alexa Skill Setup
Osvetlenie Alexa Skill Setup

Zatvorte otvorenú zručnosť a zvoľte „Pridať novú zručnosť“.

Nastavte názov zručnosti na „Ovládanie svetiel“a vyvolávací názov na slová, ktoré chcete použiť na aktiváciu zručnosti.

Pokračujte kliknutím na „Ďalej“. Skopírujte/prilepte nasledujúce do poľa „Schéma zámeru“:

{

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

Potom kliknite na položku „Pridať typ slotu“.

Do poľa „Zadajte typ“zadajte „LIGHTS_CONTROL“.

Do poľa „Zadať hodnoty“zadajte nasledujúce hodnoty:

na

vypnuté

Ďalej skopírujte/prilepte nasledujúce do poľa „Ukážkové výpovede“:

LightsControlIntent odbočiť {status}

Pokračujte kliknutím na „Ďalej“. Ako typ koncového bodu služby vyberte „HTTPS“a vyberte oblasť. Zadajte adresu ngrok z kroku 2 a kliknite na „Ďalej“. Adresa URL by mala byť nasledovná:

ed6ea04d.ngrok.io

Pokračujte kliknutím na „Ďalej“a potom na „Uložiť“.

Krok 10: Nastavenie zručnosti ventilátora Alexa

Nastavenie zručnosti ventilátora Alexa
Nastavenie zručnosti ventilátora Alexa

Zatvorte otvorenú zručnosť a zvoľte „Pridať novú zručnosť“.

Nastavte názov zručnosti na „Ovládanie fanúšikom“a vyvolávací názov na slová, ktoré chcete použiť na aktiváciu zručnosti.

Pokračujte kliknutím na „Ďalej“.

Skopírujte/prilepte nasledujúce do poľa „Schéma zámeru“:

{

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

Potom kliknite na položku „Pridať typ slotu“.

Do poľa „Zadajte typ“zadajte „FAN_CONTROL“.

Do poľa „Zadať hodnoty“zadajte nasledujúce hodnoty:

na

vypnuté

Ďalej skopírujte/prilepte nasledujúce do poľa „Ukážkové výpovede“:

FANControlIntent zase {status}

Pokračujte kliknutím na „Ďalej“. Ako typ koncového bodu služby vyberte „HTTPS“a vyberte oblasť. Zadajte adresu ngrok z kroku 2 a kliknite na „Ďalej“. Adresa URL by mala byť nasledovná:

ed6ea04d.ngrok.io

Pokračujte kliknutím na „Ďalej“a potom na „Uložiť“.

Krok 11: Zostavte obvod

Vybudujte si okruh
Vybudujte si okruh

Pripojte obvod podľa schémy. Na pripojenie k domácemu vedeniu 120 V AC a uzemneniu som použil 8 -kanálový reléový modul DC 5 V JBtek.

Krok 12: Príkazy Alexa

Teraz môžete Alexovi nahovoriť nasledujúce príkazy na ovládanie obývačky.

Odporúča: