Выпуск №1. Моя конфигурация MajorDoMo!
|
|
Этим выпуском я хочу, во-первых, выразить огромную благодарность и низкий поклон сообществу MajorDoMo, а в особенности разработчикам модулей и конечно же Сергею Джейгало – разработчику самой системы. За открытый код, за огромную базу знаний, за возможность повысить качество жизни ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО !!!
Во вторых, для тех, кто сомневается ставить или не ставить на raspberry pi, хочу описать как это работает на моей малинке и с какими проблемами я столкнулся, что пришлось дописывать.
В третьих, в текущем выпуске моя старая реализация голосового управления системой. В 2020 году я приобрел яндекс станцию и маршрутизатор Keenetic, и на данный момент умный дом управляется через голосовой помощник Яндекс Алиса.
Ссылка на сайт majordomo.
Кто не знаком с системой по этой ссылке демонстрационное видео работы системы.
Что у меня особенного в конфигурации:
- Система включает колонки и запускает плейлист соответственно команде. Например я говорю: Анжелика (система запускает скрипт распознования речи гуглом), музыка. Если колонки не были включены, включаются и играет музыка с папки «Музыка». У меня в расшаренной папке на raspberry вся музыка сгруппирована по таким папкам как «Детская», «Этника», «Релакс», «Мантры» и пр.
Реализовано это следующим образом: После того, как устройство распознавания ключевого слова (Анжелика) распознало и передало высокий сигнал на 2 пин Wemos D1 wi fi модуля, этот модуль, который является мини сервером, отправляет запрос на малинку http://192.168.0.101:80/objects/?script=commandRPI, по которому вызывается сценарий запускающий bash скрипт на распберри:
exec('sudo /home/pi/script/stt.sh');
Далее отрабатывается скрипт распознавания гуглом команды:
#!/bin/bash export AUDIODEV="hw:0" echo "speaking ..." arecord -B --buffer-time=1000000 -f S16_LE -r 16000 -d 5 -D plughw:1,0 /home/pi/script/send.wav echo "waw-flac" flac -f /home/pi/script/send.wav -o /home/pi/script/send.flac echo "Converting..." curl -X POST --data-binary @/home/pi/script/send.flac --header 'Content-Type: audio/x-flac; rate=16000;' 'https://www.google.com/speech-api/v2/recognize?output=json&lang=ru-ru&key=ВставьтеСвойКлючGoogleAPISpeech' | cut -d\" -f8 > stt value=`cat stt` arr=("$value") echo ${arr[@]} | cut -d ' ' --output-delimiter=' ' -f 1- > stt2 echo 'http://192.168.0.101/command.php?qry='> stt1 echo "`cat stt1``cat stt2`" > stt4 value2=`cat stt4` curl ${value2// /%20}
В этом скрипте распознанная гуглом команда добавляется к запросу '://192.168.0.101/command.php?qry=' и запускается шаблон соответствующий, сказанному слову. Более подробно о голосовом управлении написано в статье по этой ссылке.
Примеры моих шаблонов:
2. Как у меня на распберри запускаются плейлисты. К примеру я сказал лирика и отрабатывает код шаблона «лирика»:
if (getGlobal('Colonki'.'.'.'status')=='0') { callMethod('Colonki.turnon'); } say("включаю лирику"); file("http://:12345@192.168.0.101:8080/requests/status.xml?command=pl_empty"); file("http://:12345@192.168.0.101:8080/requests/status.xml?command=in_play&input=/share/lyrica/");
3. Другой пример – говорю «Перемотай вперед», запускается шаблон, который реагирует на следующие распознанные гуглом фразы (период/перемотай вперед/вперед/следующая) и отрабатывает код:
exec('sudo /home/pi/script/vlcnext.sh');
Как видим запускается bash- скрипт vlcnext.sh':
#bin bush curl -u :vlcremote http://192.168.0.101:8080/requests/status.xml?command=pl_next
4. Зарядник для планшета (монитор умного дома) включается через реле, которое как и реле колонок подключено к gpio интерфейсу распберри. Команду на включение/выключение зарядника дает планшет с запущенным на нем приложением«Tasker», в котором по событию «Процент заряда аккумулятора» меньше/больше … шлет запрос http://192.168.0.101:80/objects/?script=batOn ( или http://192.168.0.101/objects/?script=batOff) малинке, вызывающий сценарий:
exec('sudo /home/pi/script/relay01-01-up.sh'); say("Батарея разряжена!",2);
Код -скрипта «relay01-01-up.sh» включающий реле:
echo 18 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio18/direction echo 0 > /sys/class/gpio/gpio18/value
5. И еще, иногда, я включаю музыку и управляю плейлистами, громкостью и пр. через смарт-часы Pebble, но об этом подробнее в другой статье
Добавить комментарий (через VK):