Spisu treści:
- Krok 1: Konfiguracja wstępna
- Krok 2: Skonfiguruj Ngrok
- Krok 3: Skrypt Pythona do sterowania przełącznikiem światła
- Krok 4: Skrypt Pythona do kontroli wentylatorów
- Krok 5: Instalacja i konfiguracja pakietu LIRC
- Krok 6: Skrypt Pythona do sterowania telewizorem
- Krok 7: Zaloguj się do konta AWS
- Krok 8: Konfiguracja umiejętności TV Alexa
- Krok 9: Włącza konfigurację umiejętności Alexa
- Krok 10: Konfiguracja umiejętności Fan Alexa
- Krok 11: Zbuduj obwód
- Krok 12: Polecenia Alexa
Wideo: Sterowanie salonem za pomocą Alexa i Raspberry Pi: 12 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:26
Steruj telewizorem w salonie, oświetleniem i wentylatorem za pomocą Alexy (Amazon Echo lub Dot) i GPIO Raspberry Pi.
Krok 1: Konfiguracja wstępna
Użyłem Raspberry Pi 2 i obrazu Raspbian Jessie pobranego z
Po zalogowaniu wprowadź następujące polecenia, aby zainstalować wymagane pakiety i biblioteki Pythona:
aktualizacja sudo apt-get && aktualizacja sudo apt-get -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc
Krok 2: Skonfiguruj Ngrok
Odwiedź https://ngrok.com/download i pobierz najnowszą wersję Linux ARM jako zip i rozpakuj w katalogu domowym:
rozpakuj /home/pi/ngrok-stable-linux-arm.zip
Otwórz nowy terminal i wprowadź następujące polecenie:
sudo./ngrok http 4000
Otwórz inny nowy terminal i wprowadź następujące polecenie:
sudo./ngrok http 4500
Otwórz trzeci nowy terminal i wprowadź następujące polecenie:
sudo./ngrok http 5000
Krok 3: Skrypt Pythona do sterowania przełącznikiem światła
Otwórz nową sesję terminala i utwórz nowy plik Pythona o nazwie light_control.py:
nano light_control.py
Skopiuj/wklej następujący kod do nowego pliku:
from flask import Flaskfrom flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logowanie 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 z wyjątkiem wyjątku jako e: return statement('Numer PIN jest nieprawidłowy.') GPIO.setup(pinNum, GPIO. OUT) jeśli status w ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) jeśli status w ['off', ' low']: GPIO.output(pinNum, GPIO. HIGH) return statement('Włączanie {} świateł w salonie'.format(status)) if _name_ == '_main_': port = 4000 app.run(host=' 0.0.0.0', port=port)
Zapisz i zamknij plik.
Uruchom serwer kolby za pomocą:
sudo python light_control.py
Pozostaw uruchomione zarówno ngrok, jak i light_control.py
Krok 4: Skrypt Pythona do kontroli wentylatorów
Otwórz nową sesję terminala i utwórz nowy plik Pythona o nazwie fan_control.py:
nano fan_control.py
Skopiuj/wklej następujący kod do nowego pliku:
z kolby importu Flask
from flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logowanie 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 z wyjątkiem Exception as: return statement('Pin number niepoprawne.') GPIO.setup(pinNum, GPIO. OUT) if status in ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) if status in ['off', 'low']: GPIO.output(pinNum, GPIO. HIGH) return statement('Włączanie {} Światła w salonie'.format(status)) if _name_ == '_main_': port = 4500 app.run(host='0.0.0.0 ', port=port)
Zapisz i zamknij plik.
Uruchom serwer kolby za pomocą:
sudo python fan_control.py
Pozostaw uruchomione ngrok, light_control.py i fan_control.py
Krok 5: Instalacja i konfiguracja pakietu LIRC
Aby sterować telewizorem, musisz skonfigurować pin na Raspberry Pi, aby generował sygnały podczerwieni (IR) dla konkretnego telewizora. Otwórz terminal i wprowadź następujące polecenie, aby zainstalować pakiet LIRC, który emuluje sygnały podczerwieni wielu pilotów.
sudo apt-get install lirc
Następnie musisz włączyć i skonfigurować moduł jądra lirc_rpi. Aby to zrobić, otwórz moduły w edytorze Nano
sudo nano /etc/moduły
Dodaj poniższe linie do pliku (upewnij się, że parametr gpio_out_pin wskazuje na pin sterujący diodą podczerwieni):
lirc_devlirc_rpi gpio_out_pin=17
Następnie otwórz plik hardware.conf w Nano jak poprzednio z sudo:
sudo nano /etc/lirc/hardware.conf
Dodaj następującą konfigurację do pliku:
LIRCD_ARGS="--uinput"LOAD_MODULES=prawda
DRIVER="domyślny"
URZĄDZENIE="/dev/lirc0"
MODUŁY="lirc_rpi"
LIRCD_CONF=""
LIRCMD_CONF=""
Teraz zrestartuj Raspberry Pi:
ponowne uruchomienie sudo
Krok 6: Skrypt Pythona do sterowania telewizorem
Otwórz nową sesję terminala i utwórz nowy plik Pythona o nazwie ir_control.py:
nano ir_control.py
Przejdź do
Znajdź pilota zgodnego z telewizorem. W moim przypadku mam telewizor Sanyo, który działa z plikiem konfiguracyjnym sanyo-tv01. Po znalezieniu pliku obsługującego telewizor otwórz go i przejrzyj opcje poleceń.
Skopiuj/wklej następujący kod do nowego pliku i zastąp sanyo-tv01 nazwą pliku, która działa z Twoim telewizorem. Upewnij się również, że polecenia telewizora są obsługiwane przez plik konfiguracyjny telewizora; Może być konieczne zmodyfikowanie poleceń KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN i KEY_MUTE, aby działały poprawnie z plikiem konfiguracyjnym telewizora:
from flask import Flaskfrom flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logowanie 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 ['włącz']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Włączanie telewizora') status elif w ['wyłącz']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Wyłączanie telewizora') elif status w ['change input']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") return statement('Zmiana wejścia w telewizorze') Status elif w ['zwiększ głośność']: os.system("Wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("Wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") return statement('Zwiększanie głośności telewizora') status elif w ['zmniejsz głośność']: os.system("wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("wyślij SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os. ") return statement('Zmniejszanie głośności telewizora') elif status w ['mute']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Wyciszanie telewizora') elif status in ['unmute ']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Wyłączenie wyciszenia telewizora') else: return statement('Nie znaleziono funkcji zdalnej.') if _name_ == '_main_': port = 5000 aplikacji.run(host='0.0.0.0', port=port)
Zapisz i zamknij plik.
Uruchom serwer kolby za pomocą:
sudo python ir_control.py
Pozostaw uruchomione wszystkie trzy okna terminala ngrok, light_control.py, fan_control.py i ir_control.py
Krok 7: Zaloguj się do konta AWS
Najpierw utwórz lub zaloguj się na swoje konto programisty AWS i otwórz listę umiejętności Alexa.
Krok 8: Konfiguracja umiejętności TV Alexa
Wybierz „Dodaj nową umiejętność”.
Ustaw nazwę umiejętności na „Trigger TV”, a nazwę wywołania na słowo (słowa), których chcesz użyć, aby aktywować umiejętność.
Naciśnij dalej by kontynuować.
Skopiuj/wklej następujące informacje w polu „Schemat intencji”:
{ "zamiar": [{
"slots": [{ "name": "status", "type": "TV_Function" }, { "name": "amount", "type": "AMAZON. NUMBER" }], "intent": "GPIOControlIntent " }] }
Następnie kliknij „Dodaj typ boksu”
Wpisz TV_Function w polu „Wprowadź typ”.
Wprowadź następujące wartości w polu „Wprowadź wartości”:
włączyć coś
wyłącz zmień wejście zwiększ głośność zmniejsz głośność wycisz wyłącz wyciszenie
Następnie skopiuj/wklej następujące elementy w polu „Przykładowe wypowiedzi”:
GPIOControlIntent {stan}
GPIOControlIntent {status} o {amount}
Naciśnij dalej by kontynuować.
Wybierz „HTTPS” jako Typ punktu końcowego usługi i wybierz region. Wprowadź adres URL ngrok z kroku 2 i kliknij „Dalej”. Adres URL powinien wyglądać mniej więcej tak:
ed6ea04d.ngrok.io
Kliknij 'Dalej', aby kontynuować i naciśnij 'Zapisz'.
Krok 9: Włącza konfigurację umiejętności Alexa
Zamknij otwartą umiejętność i wybierz „Dodaj nową umiejętność”.
Ustaw nazwę umiejętności na „Kontrola świateł”, a nazwę inwokacji na słowo (słowa), których chcesz użyć, aby aktywować umiejętność.
Naciśnij dalej by kontynuować. Skopiuj/wklej następujące informacje w polu „Schemat intencji”:
{
"intents": [{ "slots": [{ "name": "status", "type": "LIGHTS_CONTROL" }], "intent": "LightsControlIntent" }] }
Następnie kliknij „Dodaj typ gniazda”.
Wpisz „LIGHTS_CONTROL” w polu „Wprowadź typ”.
Wprowadź następujące wartości w polu „Wprowadź wartości”:
na
wyłączony
Następnie skopiuj/wklej następujące elementy w polu „Przykładowe wypowiedzi”:
LightsControlIntent skręć {status}
Naciśnij dalej by kontynuować. Wybierz „HTTPS” jako Typ punktu końcowego usługi i wybierz region. Wprowadź adres URL nrok z kroku 2 i kliknij 'Dalej'. Adres URL powinien wyglądać mniej więcej tak:
ed6ea04d.ngrok.io
Kliknij 'Dalej', aby kontynuować i naciśnij 'Zapisz'.
Krok 10: Konfiguracja umiejętności Fan Alexa
Zamknij otwartą umiejętność i wybierz „Dodaj nową umiejętność”.
Ustaw nazwę umiejętności na „Kontrola wentylatora”, a nazwę inwokacji na słowo (słowa), których chcesz użyć, aby aktywować umiejętność.
Naciśnij dalej by kontynuować.
Skopiuj/wklej następujące informacje w polu „Schemat intencji”:
{
"intents": [{ "slots": [{ "name": "status", "type": "FAN_CONTROL" }], "intent": "FANControlIntent" }] }
Następnie kliknij „Dodaj typ gniazda”.
Wpisz „FAN_CONTROL” w polu „Wprowadź typ”.
Wprowadź następujące wartości w polu „Wprowadź wartości”:
na
wyłączony
Następnie skopiuj/wklej następujące elementy w polu „Przykładowe wypowiedzi”:
FANControlIntent kolej {status}
Naciśnij dalej by kontynuować. Wybierz „HTTPS” jako Typ punktu końcowego usługi i wybierz region. Wprowadź adres URL nrok z kroku 2 i kliknij 'Dalej'. Adres URL powinien wyglądać mniej więcej tak:
ed6ea04d.ngrok.io
Kliknij 'Dalej', aby kontynuować i naciśnij 'Zapisz'.
Krok 11: Zbuduj obwód
Podłącz obwód jak pokazano na schemacie. Użyłem 8-kanałowego modułu przekaźnika DC 5 V firmy JBtek do podłączenia do mojego domu linii AC 120 V i uziemienia.
Krok 12: Polecenia Alexa
Teraz możesz wypowiedzieć następujące polecenia do Alexy, aby kontrolować Twój salon.
Zalecana:
Sterowanie oświetleniem domu za pomocą Asystenta Google za pomocą Arduino: 7 kroków
Sterowanie oświetleniem domu za pomocą Asystenta Google za pomocą Arduino: (Aktualizacja z 22 sierpnia 2020 r.: Ta instrukcja ma 2 lata i opiera się na niektórych aplikacjach innych firm. Wszelkie zmiany po ich stronie mogą uniemożliwić działanie tego projektu. Może lub nie pracować teraz, ale możesz śledzić to jako odniesienie i modyfikować zgodnie z
Sterowanie jasnością Sterowanie diodami LED w oparciu o PWM za pomocą przycisków, Raspberry Pi i Scratch: 8 kroków (ze zdjęciami)
Kontrola jasności Sterowanie diodami LED w oparciu o PWM za pomocą przycisków, Raspberry Pi i Scratch: Próbowałem znaleźć sposób, aby wyjaśnić moim uczniom, jak działa PWM, więc wyznaczyłem sobie zadanie kontrolowania jasności diody LED za pomocą 2 przycisków - jeden przycisk zwiększający jasność diody LED a drugi ją przyciemniający. Aby zaprogramować
Sterowanie radiowe RF 433MHZ za pomocą HT12D HT12E - Tworzenie pilota RF za pomocą HT12E i HT12D z 433mhz: 5 kroków
Sterowanie radiowe RF 433MHZ za pomocą HT12D HT12E | Tworzenie pilota RF za pomocą HT12E i HT12D z 433mhz: W tej instrukcji pokażę ci, jak zrobić pilota RADIO za pomocą modułu odbiornika nadajnika 433mhz z kodowaniem HT12E i amp; Dekoder HT12D IC. W tej instrukcji możesz wysyłać i odbierać dane za pomocą bardzo, bardzo tanich KOMPONENTÓW, TAKICH JAK: HT
Sterowanie bramą za pomocą Google Assistent za pomocą ESP8266 NodeMCU: 6 kroków
Sterowanie bramą za pomocą Google Assistent za pomocą ESP8266 NodeMCU: To mój pierwszy projekt dotyczący instrukcji, więc proszę o komentarz poniżej, jeśli są możliwe ulepszenia. Pomysł polega na użyciu asystenta Google do wysłania sygnału do tablicy kontrolnej bramy. Więc wysyłając polecenie, pojawi się przekaźnik, który zamknie
Sterowanie urządzeniami za pomocą poleceń głosowych za pomocą NodeMCU: 7 kroków (ze zdjęciami)
Kontrolowanie urządzeń za pomocą poleceń głosowych za pomocą NodeMCU: Chcę tylko przywitać się ze wszystkimi, to mój pierwszy raz, kiedy piszę instruktażowy projekt. Angielski nie jest moim językiem ojczystym, więc postaram się opisać jak najkrócej i jak najdokładniej. Sterowanie urządzeniami za pomocą poleceń głosowych nie jest niczym dziwnym