Кнопки переключения между Kodi и LXDE

Если подключать 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

Радуемся ещё одной рабочей кнопке.

Добавить комментарий