Если подключать raspberry pi 2 к телевизору, то думаю будет удобно иметь несколько кнопок для переключения между приложениями. То есть нажал физическую кнопку, запустился Kodi, нажал вторую кнопку и запустился графический интерфейс LXDE. Эксперименты будем проводить на raspberry pi 2 и установленным на нём Raspbian. Все действия Вы выполняете на свой страх и риск и ответственность несёте сами.
Подключаем кнопку №1 для запуска LXDE в Raspbian к GPIO12 (пин 32) и GPIO16 (пин 36).
Подключаем кнопку №2 для запуска мультимедиа плеера Kodi к GPIO13 (пин 33) и GPIO19 (пин 35).
Распиновку GPIO можно посмотреть здесь.
п/п № | GPIO | in/out | устройство |
32 | 12 | out | кнопка запуска LXDE |
36 | 16 | in | |
33 | 13 | out | кнопка запуска kodi |
35 | 19 | in |
Делаем 2-а скрипта. Первый для запуска LXDE.
sudo nano /script/gpio/lxde.sh
Содержимое скрипта вписываем:
#!/bin/bash echo "12" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio12/direction echo "1" > /sys/class/gpio/gpio12/value echo "16" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio16/direction ret=$(ps aux | grep [l]ightdm | wc -l) while [ "$ret" -eq 0 ] do if [ "$ret" -eq 0 ] && [ $(</sys/class/gpio/gpio16/value) == 1 ] then { sudo killall "/usr/lib/kodi/kodi.bin" sudo killall kodi sudo /etc/init.d/lightdm stop clear /etc/init.d/lightdm start } fi; sleep 0.02 done
и второй для запуска Kodi.
sudo nano /script/gpio/kodi.sh
Содержимое вписать следующее:
#!/bin/bash echo "13" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio13/direction echo "1" > /sys/class/gpio/gpio13/value echo "19" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio19/direction ret=$(ps aux | grep [k]odi.bin | wc -l) while [ "$ret" -eq 0 ] do # если запущено 0 программ kodi и если кнопка нажата if [ "$ret" -eq 0 ] && [ $(</sys/class/gpio/gpio19/value) == 1 ] then { sudo killall kodi.bin sudo killall kodi sudo /etc/init.d/lightdm stop clear sudo /usr/bin/kodi -fs && sleep 2 && chvt 1 } fi; sleep 0.02 done
Делаем их исполняемыми:
sudo chmod +x /script/gpio/lxde.sh
sudo chmod +x /script/gpio/kodi.sh
Готовые скрипты можно скачать здесь(тык txt) и здесь(тык txt).
Для автозапуска закидываем их в /etc/rc.local :
sudo nano /etc/rc.local
вписываем:
sudo /script/gpio/kodi.sh &
sudo /script/gpio/lxde.sh &
Перезагружаем малинку:
sudo reboot
и одной кнопкой ВЫключаем Kodi и Включаем LXDE , а второй кнопкой наоборот ВЫключаем LXDE и Включаем Kodi.
Теперь можно к LXDE прикрутить VNC, настроить рабочий стол, софт и подключать к ТВ, но это отдельная история.
P.S. Я не профи по написанию скриптов, но у меня они работают, если кто желает поделиться своими наработками, то добро пожаловать. Буду рад дополнениям/исправлениям.
Небольшой бонус, чтобы не публиковать короткую запись. Сделаем быстренько ещё и третью кнопку, выключающую Kodi и LXDE, таким образом мы вернёмся в консоль.
Кнопку №3 я подключил к GPIO23(пин №16) и GPIO24(пин №18).
Создаём скрипт:
sudo nano /script/gpio/cons.sh
с таким содержимым:
#!/bin/bash echo "23" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio23/direction echo "1" > /sys/class/gpio/gpio23/value echo "24" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio24/direction mess=$(hostname -I) while [ true ] do # Если кнопка нажата, то есть получила 1 if [ $(</sys/class/gpio/gpio24/value) == 1 ] # то then { sudo killall kodi.bin sudo killall kodi sudo /etc/init.d/lightdm stop clear printf "My IP address is %s\n" "$mess" && chvt 1 } fi; sleep 0.02 done
Делаем его исполняемым:
sudo chmod +x /script/gpio/cons.sh
Скачать его можно тут и тут.
Закидываем его в автозапуск дописав в /etc/rc.local перед «exit 0» строку:
sudo /script/gpio/cons.sh &
Для проверки, перезагружаем raspberry pi:
sudo reboot
Радуемся ещё одной рабочей кнопке.