Spisu treści:

Sterowanie salonem za pomocą Alexa i Raspberry Pi: 12 kroków
Sterowanie salonem za pomocą Alexa i Raspberry Pi: 12 kroków

Wideo: Sterowanie salonem za pomocą Alexa i Raspberry Pi: 12 kroków

Wideo: Sterowanie salonem za pomocą Alexa i Raspberry Pi: 12 kroków
Wideo: Raspberry Pi 👉VNC👉Domoticz 👉Projekt👉Sterowania👉Monitoringu👉Open Source👉Jak to zrobić krok po kroku. 2024, Listopad
Anonim
Kontroluj salon za pomocą Alexa i Raspberry Pi
Kontroluj salon za pomocą Alexa i Raspberry Pi

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

Konfiguracja Ngroka
Konfiguracja Ngroka

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

Zaloguj się do konta AWS
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

Konfiguracja umiejętności Alexa w telewizorze
Konfiguracja umiejętności Alexa w telewizorze

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

Światła Alexa Skill Setup
Światła Alexa Skill Setup

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

Konfiguracja umiejętności Fan Alexa
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

Zbuduj obwód
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: