Оглавление:
- Шаг 1: Начальная настройка
- Шаг 2: Настройте Ngrok
- Шаг 3: скрипт Python для управления переключателем света
- Шаг 4: скрипт Python для управления вентилятором
- Шаг 5: Установка и настройка пакета LIRC
- Шаг 6: скрипт Python для управления телевизором
- Шаг 7. Войдите в учетную запись AWS
- Шаг 8: настройка навыков TV Alexa
- Шаг 9: Освещение настройки навыков Alexa
- Шаг 10: настройка навыка Fan Alexa
- Шаг 11: соберите Ciruit
- Шаг 12: команды Alexa
Видео: Управляйте гостиной с помощью Alexa и Raspberry Pi: 12 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:47
Управляйте телевизором, освещением и вентилятором в гостиной с помощью Alexa (Amazon Echo или Dot) и Raspberry Pi GPIO.
Шаг 1: Начальная настройка
Я использовал Raspberry Pi 2 и образ Raspbian Jessie, загруженный с
После входа в систему введите следующие команды для установки необходимых пакетов и библиотек Python:
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
Шаг 2: Настройте Ngrok
Посетите https://ngrok.com/download и получите последнюю версию Linux ARM в виде zip-архива и распакуйте его в домашний каталог:
разархивируйте /home/pi/ngrok-stable-linux-arm.zip
Откройте новый терминал и введите следующую команду:
sudo./ngrok http 4000
Откройте еще один новый терминал и введите следующую команду:
sudo./ngrok http 4500
Откройте третий новый терминал и введите следующую команду:
sudo./ngrok http 5000
Шаг 3: скрипт Python для управления переключателем света
Откройте новый сеанс терминала и создайте новый файл python с именем light_control.py:
нано light_control.py
Скопируйте / вставьте следующий код в новый файл:
from flask import Flaskfrom 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 except Exception as e: return statement ('Номер пина недействителен.') GPIO.setup (pinNum, GPIO. OUT), если статус в ['on', 'high']: GPIO.output (pinNum, GPIO. LOW), если статус в ['off', ' low ']: GPIO.output (pinNum, GPIO. HIGH) оператор return (' Включение {} света в гостиной'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', порт = порт)
Сохраните и закройте файл.
Запустите флеш-сервер с помощью:
sudo python light_control.py
Оставьте запущенными ngrok и light_control.py
Шаг 4: скрипт Python для управления вентилятором
Откройте новый сеанс терминала и создайте новый файл python с именем fan_control.py:
нано fan_control.py
Скопируйте / вставьте следующий код в новый файл:
из фляги импорт фляги
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 за исключением Exception as e: return statement ('Pin number недействительно. ') GPIO.setup (pinNum, GPIO. OUT), если статус в [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) if status in [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) оператор return ('Turnning {} the Living Room Lights'.format (status)) if _name_ ==' _main_ ': port = 4500 app.run (host =' 0.0.0.0 ', порт = порт)
Сохраните и закройте файл.
Запустите флеш-сервер с помощью:
sudo python fan_control.py
Оставьте запущенными ngrok, light_control.py и fan_control.py
Шаг 5: Установка и настройка пакета LIRC
Чтобы управлять телевизором, вы должны настроить вывод на Raspberry Pi для генерации инфракрасных (ИК) сигналов для вашего конкретного телевизора. Откройте терминал и введите следующую команду, чтобы установить пакет LIRC, который имитирует инфракрасные сигналы многих пультов дистанционного управления.
sudo apt-get install lirc
Далее вам нужно включить и настроить модуль ядра lirc_rpi. Для этого откройте модули в редакторе Nano.
Судо нано / и т.д. / модули
Добавьте в файл следующие строки (убедитесь, что параметр gpio_out_pin указывает на вывод, управляющий ИК-светодиодом):
lirc_devlirc_rpi gpio_out_pin = 17
Затем откройте файл hardware.conf в Nano, как и раньше, с помощью sudo:
sudo nano /etc/lirc/hardware.conf
Добавьте в файл следующую конфигурацию:
LIRCD_ARGS = "- uinput" LOAD_MODULES = true
ДРАЙВЕР = "по умолчанию"
УСТРОЙСТВО = "/ dev / lirc0"
МОДУЛИ = "lirc_rpi"
LIRCD_CONF = ""
LIRCMD_CONF = ""
Теперь перезагрузите Raspberry Pi:
перезагрузка sudo
Шаг 6: скрипт Python для управления телевизором
Откройте новый сеанс терминала и создайте новый файл python с именем ir_control.py:
нано ir_control.py
Перейдите на
Найдите пульт, совместимый с вашим телевизором. В моем случае у меня есть телевизор Sanyo, который работает с файлом конфигурации sanyo-tv01. Как только вы найдете файл, поддерживающий ваш телевизор, откройте его и просмотрите параметры команды.
Скопируйте / вставьте следующий код в новый файл и замените sanyo-tv01 именем файла, которое подходит для вашего телевизора. Также убедитесь, что команды tv поддерживаются файлом конфигурации вашего телевизора; Возможно, вам придется изменить команды KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN и KEY_MUTE для правильной работы с файлом конфигурации вашего телевизора:
from flask import Flaskfrom 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 ['включить']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") оператор возврата ('Включение телевизора') статус elif в ['выключить']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") оператор возврата ('Выключение телевизора') статус elif в ['изменить ввод']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return оператор ('Изменение ввода на телевизоре') статус elif в ['увеличить громкость']: 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 ") оператор возврата ('Увеличение громкости на телевизоре') статус elif в ['уменьшение громкости']: 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») ") return statement ('Decreasing Volume on the TV') elif status in ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") return statement ('Muting the TV') elif status in ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") оператор return (' Включение звука телевизора ') else: оператор return (' Удаленная функция не найдена. ') if _name_ ==' _main_ ': port = 5000 app.run (хост = '0.0.0.0', порт = порт)
Сохраните и закройте файл.
Запустите флеш-сервер с помощью:
sudo python ir_control.py
Оставьте все три окна терминала ngrok, light_control.py, fan_control.py и ir_control.py запущенными
Шаг 7. Войдите в учетную запись AWS
Сначала создайте или войдите в свою учетную запись разработчика AWS и откройте свой список навыков Alexa.
Шаг 8: настройка навыков TV Alexa
Выберите «Добавить новый навык».
Установите имя навыка на «Trigger TV» и имя вызова для слова (слов), которое вы хотите использовать для активации навыка.
Нажмите «Далее», чтобы продолжить.
Скопируйте / вставьте следующее в поле "Intent Schema":
"slots": [{"name": "status", "type": "TV_Function"}, {"name": "amount", "type": "AMAZON. NUMBER"}], "intent": "GPIOControlIntent "}]}
Затем нажмите «Добавить тип слота».
Введите TV_Function в поле «Введите тип».
Введите следующие значения в поле «Введите значения»:
включить
выключить изменить вход увеличить громкость уменьшить громкость включить звук
Затем скопируйте / вставьте следующее в поле «Образцы высказываний»:
GPIOControlIntent {статус}
GPIOControlIntent {status} на {amount}
Нажмите «Далее», чтобы продолжить.
Выберите «HTTPS» в качестве типа конечной точки службы и выберите регион. Введите URL-адрес ngrok из шага 2 и нажмите «Далее». URL-адрес должен быть примерно таким:
ed6ea04d.ngrok.io
Нажмите «Далее», чтобы продолжить, и нажмите «Сохранить».
Шаг 9: Освещение настройки навыков Alexa
Закройте открытый навык и выберите «Добавить новый навык».
Установите имя навыка на «Управление светом», а имя вызова - на слова, которые вы хотите использовать для активации навыка.
Нажмите «Далее», чтобы продолжить. Скопируйте / вставьте следующее в поле "Intent Schema":
{
"намерения": [{"слоты": [{"имя": "статус", "тип": "LIGHTS_CONTROL"}], "намерение": "LightsControlIntent"}]}
Затем нажмите «Добавить тип слота».
Введите «LIGHTS_CONTROL» в поле «Введите тип».
Введите следующие значения в поле «Введите значения»:
на
выключенный
Затем скопируйте / вставьте следующее в поле «Образцы высказываний»:
LightsControlIntent повернуть {status}
Нажмите «Далее», чтобы продолжить. Выберите «HTTPS» в качестве типа конечной точки службы и выберите регион. Введите URL-адрес ngrok из шага 2 и нажмите «Далее». URL-адрес должен быть примерно таким:
ed6ea04d.ngrok.io
Нажмите «Далее», чтобы продолжить, и нажмите «Сохранить».
Шаг 10: настройка навыка Fan Alexa
Закройте открытый навык и выберите «Добавить новый навык».
Установите имя навыка на «Fan Control», а в качестве имени вызова - слова, которые вы хотите использовать для активации навыка.
Нажмите «Далее», чтобы продолжить.
Скопируйте / вставьте следующее в поле "Intent Schema":
{
"намерения": [{"слоты": [{"имя": "статус", "тип": "FAN_CONTROL"}], "намерение": "FANControlIntent"}]}
Затем нажмите «Добавить тип слота».
Введите «FAN_CONTROL» в поле «Введите тип».
Введите следующие значения в поле «Введите значения»:
на
выключенный
Затем скопируйте / вставьте следующее в поле «Образцы высказываний»:
FANControlIntent Turn {status}
Нажмите «Далее», чтобы продолжить. Выберите «HTTPS» в качестве типа конечной точки службы и выберите регион. Введите URL-адрес ngrok из шага 2 и нажмите «Далее». URL-адрес должен быть примерно таким:
ed6ea04d.ngrok.io
Нажмите «Далее», чтобы продолжить, и нажмите «Сохранить».
Шаг 11: соберите Ciruit
Подключите схему, как показано на схеме. Я использовал 8-канальный релейный модуль постоянного тока 5 В JBtek для подключения к линии 120 В переменного тока и заземлению в моем доме.
Шаг 12: команды Alexa
Теперь следующие команды могут быть переданы Alexa для управления вашей гостиной.
Рекомендуемые:
Управляйте двигателем EV3 с помощью Alexa: 9 шагов
Управляйте своим мотором EV3 с помощью Alexa: хотите управлять своим LEGO EV3 с помощью голосовых команд? В этом проекте вы можете попробовать переместить двигатель EV3, поговорив с Алекса. Все, что вам нужно, это Amazon Echo Dot, плата Arduino Nano 33 IoT и EV3 с ключом WiFi и мотором. Идея состоит в том, чтобы построить
Управляйте камином с помощью HomeKit и Alexa: 7 шагов
Управляйте своим камином с помощью HomeKit и Alexa: недавно у меня был установлен газовый камин с пультом дистанционного управления. И, увидев несколько примеров того, как люди интегрируют свои камины в систему управления домом, я начал искать то же самое. У моего камина есть пульт
Управляйте роботизированной рукой с помощью Zio с помощью контроллера PS2: 4 шага
Управляйте роботизированной рукой с помощью Zio с помощью контроллера PS2: эта запись в блоге является частью серии Zio Robotics. Введение Это последняя часть публикации «Управление роботизированной рукой с помощью Zio». В этом уроке мы добавим еще одну деталь к нашей роботизированной руке. Предыдущие руководства не включают основы для
Управляйте лабиринтом баланса с помощью Alexa: 6 шагов (с изображениями)
Управляйте лабиринтом баланса с помощью Alexa: Управляйте лабиринтом баланса с помощью Alexa Перемещайте лабиринт голосом. Прежде всего, посмотрите видео - это краткое описание работы. Поговорите с Алекса (Raspberry Pi + AVS) СКАЗЫВАЙТЕ: Alexa Start Навыки СКАЗАТЬ: BARANSU MEIRO WO KIDOU SHITE Настроить навыки СКАЗАТЬ: 1 DO, UE N
СВЕТОДИОДНЫЙ НАВОДНИК В МОЕЙ ГОСТИНОЙ !!!: 6 шагов
СВЕТОДИОДНЫЙ НАВОДНИК В МОЕЙ ГОСТИНОЙ !!!: 18 светодиодных лампочек для "экстра" яркость