Голосовое управление светом через Алексу
Друзья, настала весна, а значит, пришло время хакнуть радиорозетки и привязать к ним голосовое управление Алексой. :) Как вы знаете, дома я не использую беспроводное соединение, поэтому розетки с WiFi отпадают автоматически. Будем использовать радиорозетки на 433.92МГц, сканировать коды их пульта, а потом все это соединим с Алексой. На данном этапе у Вас уже должна быть установлена операционная система Raspbian Buster Lite и скомпилирована Алекса из AVS SDK. Как это сделать можно прочитать в инструкции “Голосовой помощник Alexa на Raspberry Pi”.
Вам понадобится:
- Радиорозетки Rexant, 433.92МГц – 3шт.
- Приёмник 433.92МГц, модель RWS-371F V1.00 — 1шт.
- Передатчик, 433.92МГц, модель TWS-BS V1.02 – 1шт.
- Коннектор SMA x гнездо под пайку – 1шт.
- Антенна, 433МГц – 1шт.
- Кабель RG316 для антенны — 1шт.
- Соединительные провода Jumper Wires Female x Female – 3 шт.
- Электрическая дрель — 1шт.
- Сверло диаметром 6.5мм — 1шт.
- Термоклей
Шаг 1 : Сканирование кодов пульта
Подключаем приёмник к RPi согласно схеме:
Включаем RPi и заходим на неё через SSH:
ssh pi@192.168.0.XXX
Далее, установим программу rpi-rf. В терминале вводим:
sudo pip3 install rpi-rf
По умолчанию программа использует GPIO17 для передатчика и GPIO27 для приёмника.
Запускаем программу для приёма кодов пульта:
rpi-rf_receive
Она скажет:
[INFO] rpi-rf_receive: Listening for codes on GPIO 27
Направляем пульт от розеток на приёмник и нажимаем кнопки On и Off для каждой розетки, записывая их коды. В терминале вы должны увидеть что-то подобное:
[INFO] receive: 5330691 [pulselength 174, protocol 1]
Скопируйте эти данные для каждой розетки и сохраните в файл.
Все, на этом сканирование кодов розеток завершено, выключаем RPi и снимаем приёмник. Он нам больше не понадобится.
Шаг 2 : Установка передатчика 433.92МГц
Подсоединяем передатчик согласно схеме:
Также, в боковой решётке моего корпуса RPi я просверлил отверстие диаметром 6.5мм и закрепил в нем коннектор SMA. Далее, отрезаем кабель RG316 нужной длины и один конец припаиваем к SMA коннектору, а другой к антенному выходу на передатчике. Саму микросхему передатчика можно приклеить к внутренней стороне корпуса RPi на термоклей, а провода связать хомутами. Также промажьте термоклеем места пайки антенного кабеля. Аккуратно закрываем корпус RPI и прикручиваем антенну к SMA коннектору. Включаем RPi и заходим на неё через SSH:
ssh pi@192.168.0.XXX
По умолчанию rpi-rf использует GPIO17 для передатчика, но у меня он уж был занят, поэтому я его изменил на GPIO22. Чтобы это сделать, вводим команду в терминале:
sudo nano /usr/local/bin/rpi-rf_send
И заменяем данную строку:
parser.add_argument('-g', dest='gpio', type=int, default=17, help="GPIO pin (Default: 17)")
на
parser.add_argument('-g', dest='gpio', type=int, default=22, help="GPIO pin (Default: 22)")
Вставляем радиорозетку в сеть 220 вольт и к ней подключаем настольную лампу. Пробуем её включить командой в терминале:
rpi-rf_send -p 174 -t 1 5330691
Где 174 — pulselength, 1 – protocol, а 5330691 – сам код розетки на включение.
После нажатия Enter розетка должна включиться.
Проверим выключение розетки. В терминале вводим:
rpi-rf_send -p 174 -t 1 5330694
Проделайте тоже самое для 2-й и 3-й розетки, чтобы убедиться, что всё работает.
Шаг 3 : Привязываем голосовое управление Алексой
Первой розетке я назначил управление настольной лампой и на PHP написал такой код:
<? if (isset($_POST['code'])) $code = $_POST['code']; else $code = ""; $code_lamp_light_on = "UKfX1aAC"; $code_lamp_light_off = "zPEGnFPz"; $cmd_lamp_light_on = "rpi-rf_send -p 174 -t 1 5330691"; $cmd_lamp_light_off = "rpi-rf_send -p 174 -t 1 5330694"; if ($code == $code_lamp_light_on) exec($cmd_lamp_light_on); if ($code == $code_lamp_light_off) exec($cmd_lamp_light_off); ?>
Далее заходим на IFTTT и создаём персональные апплеты для управления розетками. О том как это сделать, можно прочитать в инструкции “Я есть универсальный ИК-пульт с голосовым управлением Алексой…”.
Теперь лампу можно включить командой: «Alexa, trigger light on…»
Profit :)
Понравилась инструкция? Тогда поделитесь ей со своими друзьями или попробуйте написать свою собственную!