Obsah:
- Krok 1: Počáteční nastavení
- Krok 2: Nastavení Ngrok
- Krok 3: Python Script pro ovládání přepínače světla
- Krok 4: Python Script pro ovládání ventilátoru
- Krok 5: Instalace a konfigurace balíčku LIRC
- Krok 6: Python Script pro ovládání TV
- Krok 7: Přihlaste se k účtu AWS
- Krok 8: Nastavení dovednosti TV Alexa
- Krok 9: Rozsvítí nastavení dovednosti Alexa
- Krok 10: Nastavení dovednosti fanouška Alexa
- Krok 11: Vybudujte obvod
- Krok 12: Příkazy Alexa
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
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
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
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
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
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
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
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.