Obsah:

Ovládejte obývací pokoj s Alexou a Raspberry Pi: 12 kroků
Ovládejte obývací pokoj s Alexou a Raspberry Pi: 12 kroků

Video: Ovládejte obývací pokoj s Alexou a Raspberry Pi: 12 kroků

Video: Ovládejte obývací pokoj s Alexou a Raspberry Pi: 12 kroků
Video: Backstage_obývací pokoj_Pure_Line 10s 2024, Září
Anonim
Ovládejte obývací pokoj pomocí Alexa a Raspberry Pi
Ovládejte obývací pokoj pomocí Alexa a Raspberry Pi

Ovládejte televizi, světla a ventilátor v obývacím pokoji pomocí Alexa (Amazon Echo nebo Dot) a Raspberry Pi GPIO.

Krok 1: Počáteční nastavení

Použil jsem Raspberry Pi 2 a obrázek Raspbian Jessie stažený z

Jakmile jste přihlášeni, zadejte následující příkazy a nainstalujte požadované balíčky a knihovny 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: Nastavení Ngrok

Nastavení Ngrok
Nastavení Ngrok

Navštivte https://ngrok.com/download a získejte nejnovější verzi Linux ARM jako zip a rozbalte v domovském adresáři:

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

Otevřete nový terminál a zadejte následující příkaz:

sudo./ngrok http 4000

Otevřete další nový terminál a zadejte následující příkaz:

sudo./ngrok http 4500

Otevřete třetí nový terminál a zadejte následující příkaz:

sudo./ngrok http 5000

Krok 3: Python Script pro ovládání přepínače světla

Otevřete novou relaci terminálu a vytvořte nový soubor pythonu s názvem light_control.py:

nano light_control.py

Zkopírujte/vložte následující kód do nového souboru:

z baňky import Flask z 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): try: pinNum = 27 kromě Exception as e: return statement („Číslo PIN není platné.“) GPIO.setup (pinNum, GPIO. OUT), pokud je stav v ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) pokud je stav v ['off', ' low ']: GPIO.output (pinNum, GPIO. HIGH) návratový pří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 zavřete soubor.

Spusťte bankový server pomocí:

sudo python light_control.py

Nechte ngrok i light_control.py spuštěné

Krok 4: Python Script pro ovládání ventilátoru

Otevřete novou relaci terminálu a vytvořte nový soubor pythonu s názvem fan_control.py:

nano fan_control.py

Zkopírujte/vložte následující kód do nového souboru:

z baňky import baňky

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 kromě Exception as e: return statement ('Pin number neplatné. ') GPIO.setup (pinNum, GPIO. OUT) pokud je stav v [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) pokud je stav v [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) návratový pří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 zavřete soubor.

Spusťte bankový server pomocí:

sudo python fan_control.py

Nechte ngrok, light_control.py a fan_control.py spuštěné

Krok 5: Instalace a konfigurace balíčku LIRC

Abyste mohli ovládat televizi, musíte na Raspberry Pi nakonfigurovat pin pro generování infračervených (IR) signálů pro vaši konkrétní televizi. Otevřete terminál a zadáním následujícího příkazu nainstalujte balíček LIRC, který emuluje infračervené signály mnoha dálkových ovladačů.

sudo apt-get install lirc

Dále musíte povolit a nakonfigurovat modul jádra lirc_rpi. Chcete -li to provést, otevřete moduly v editoru Nano

sudo nano /etc /modules

Přidejte do souboru následující řádky (Ujistěte se, že parametr gpio_out_pin ukazuje na pin ovládající IR LED):

lirc_devlirc_rpi gpio_out_pin = 17

Dále otevřete soubor hardware.conf v Nano jako dříve pomocí sudo:

sudo nano /etc/lirc/hardware.conf

Přidejte do souboru následující konfiguraci:

LIRCD_ARGS = "-uinput" LOAD_MODULES = true

DRIVER = "výchozí"

ZAŘÍZENÍ = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Nyní restartujte Raspberry Pi:

sudo restart

Krok 6: Python Script pro ovládání TV

Otevřete novou relaci terminálu a vytvořte nový soubor pythonu s názvem ir_control.py:

nano ir_control.py

Přejít na

Najděte dálkový ovladač, který je kompatibilní s vaší televizí. V mém případě mám televizor Sanyo, který pracuje s konfiguračním souborem sanyo-tv01. Jakmile najdete soubor, který podporuje váš televizor, otevřete jej a prohlédněte si možnosti příkazů.

Zkopírujte/vložte následující kód do nového souboru a nahraďte sanyo-tv01 názvem souboru, který funguje s vaší televizí. Zajistěte také, aby konfigurační soubor televizorů podporoval příkazy tv; Pravděpodobně budete muset upravit příkazy KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN a KEY_MUTE, aby správně fungovaly s konfiguračním souborem vaší televize:

z baňky import Flask z 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): 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ý příkaz ('Vypnutí TV') stav elif v ['změnit vstup']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") návrat prohlášení ('Změna vstupu na TV') stav elif v ['zvýšit hlasitost']: 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ý příkaz (" Zvýšení hlasitosti v televizi ") stav elif v ['snížení 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_OYENCEOL ") návratový příkaz ('Snížení hlasitosti na TV') stav elif v ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") návratový příkaz ('Ztlumení TV') stav elif v ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return return (' Unmuting the TV ') else: return statement (' Remote function not found. ') if _name_ ==' _main_ ': port = 5000 app.run (host = '0.0.0.0', port = port)

Uložte a zavřete soubor.

Spusťte bankový server pomocí:

sudo python ir_control.py

Nechte spuštěna všechna tři okna terminálu ngrok, light_control.py, fan_control.py a ir_control.py

Krok 7: Přihlaste se k účtu AWS

Přihlaste se k účtu AWS
Přihlaste se k účtu AWS

Nejprve si vytvořte nebo se přihlaste ke svému účtu vývojáře AWS a otevřete seznam Alexa Skills.

Krok 8: Nastavení dovednosti TV Alexa

Nastavení dovednosti TV Alexa
Nastavení dovednosti TV Alexa

Vyberte „Přidat novou dovednost“.

Nastavte název dovednosti na „Trigger TV“a název vyvolání na slova, která chcete použít k aktivaci dovednosti.

Pokračujte kliknutím na 'Další'.

Do pole 'Schéma záměru' zkopírujte/vložte následující:

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

Dále klikněte na 'Přidat typ slotu'

Do pole „Zadejte typ“zadejte funkci TV_Function.

Do pole „Zadat hodnoty“zadejte následující hodnoty:

zapnout

vypnout změnit vstup zvýšit hlasitost snížit hlasitost ztlumit zrušit ztlumení

Dále zkopírujte/vložte následující do pole „Ukázkové výpovědi“:

GPIOControlIntent {status}

GPIOControlIntent {status} o {amount}

Pokračujte kliknutím na 'Další'.

Jako typ koncového bodu služby vyberte 'HTTPS' a vyberte oblast. Zadejte adresu ngrok z kroku 2 a klikněte na 'Další'. Adresa URL by měla být něco jako:

ed6ea04d.ngrok.io

Pokračujte kliknutím na „Další“a poté na „Uložit“.

Krok 9: Rozsvítí nastavení dovednosti Alexa

Rozsvítí nastavení dovednosti Alexa
Rozsvítí nastavení dovednosti Alexa

Zavřete otevřenou dovednost a vyberte „Přidat novou dovednost“.

Nastavte název dovednosti na „Ovládání světel“a Název vyvolání na slova, která chcete použít k aktivaci dovednosti.

Pokračujte kliknutím na 'Další'. Do pole 'Schéma záměru' zkopírujte/vložte následující:

{

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

Dále klikněte na „Přidat typ slotu“.

Do pole „Zadejte typ“zadejte „LIGHTS_CONTROL“.

Do pole „Zadat hodnoty“zadejte následující hodnoty:

na

vypnuto

Dále zkopírujte/vložte následující do pole „Ukázkové výpovědi“:

LightsControlIntent otočit {status}

Pokračujte kliknutím na 'Další'. Jako typ koncového bodu služby vyberte 'HTTPS' a vyberte oblast. Zadejte adresu ngrok z kroku 2 a klikněte na 'Další'. Adresa URL by měla být něco jako:

ed6ea04d.ngrok.io

Pokračujte kliknutím na „Další“a poté na „Uložit“.

Krok 10: Nastavení dovednosti fanouška Alexa

Nastavení dovednosti fanouška Alexa
Nastavení dovednosti fanouška Alexa

Zavřete otevřenou dovednost a vyberte „Přidat novou dovednost“.

Nastavte název dovednosti na „Ovládání fanouškem“a Název vyvolání na slova, která chcete použít k aktivaci dovednosti.

Pokračujte kliknutím na 'Další'.

Do pole 'Schéma záměru' zkopírujte/vložte následující:

{

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

Dále klikněte na „Přidat typ slotu“.

Do pole „Zadejte typ“zadejte „FAN_CONTROL“.

Do pole „Zadat hodnoty“zadejte následující hodnoty:

na

vypnuto

Dále zkopírujte/vložte následující do pole „Ukázkové výpovědi“:

FANControlIntent otočit {status}

Pokračujte kliknutím na 'Další'. Jako typ koncového bodu služby vyberte 'HTTPS' a vyberte oblast. Zadejte adresu ngrok z kroku 2 a klikněte na 'Další'. Adresa URL by měla být něco jako:

ed6ea04d.ngrok.io

Pokračujte kliknutím na „Další“a poté na „Uložit“.

Krok 11: Vybudujte obvod

Vybudujte obvod
Vybudujte obvod

Zapojte obvod podle schématu. Použil jsem JBtek 8 kanálový DC 5V reléový modul pro připojení k domovu AC 120V vedení a uzemnění.

Krok 12: Příkazy Alexa

Nyní můžete s Alexou vyslovit následující příkazy, abyste mohli ovládat váš obývací pokoj.

Doporučuje: