1) Kodi no viene con el paquete RPi.GPIO instalado, así que toca instalarlo. Para ello entramos en: Sistema/Ajustes/Add-ons/Instalar desde repositorio/OpenELEC Add-ons (unofficial)/Add-ons de programa/RPi.GPIO.
Instalamos y habilitamos el plugin (esto debe descargarnos la última actualización, pero por si acaso podemos pulsar en actualizar por si hubiera alguna versión más nueva, en esta caso estamos trabajando con la v7.0.3)
2)Con el paquete de RPi.GPIO instalado, toca programar el script. Creamos el directorio donde guardaremos el script:
mkdir /storage/scripts
Creamos el archivo donde meteremos el script (shutdown.py):
nano /storage/scripts/shutdown.py
Introducimos el Script:
#!/usr/bin/python
# shutdown/reboot(/power on) Raspberry Pi with pushbutton
import sys
sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')
import RPi.GPIO as GPIO
import time
import os
from datetime import datetime
# pushbutton connected to this GPIO pin, using pin 5 also has the benefit of
# waking / powering up Raspberry Pi when button is pressed
shutdownPin = 5
# if button pressed for at least this long then shut down. if less then reboot.
rebootMinSeconds = 3
# button debounce time in seconds
debounceSeconds = 0.01
GPIO.setmode(GPIO.BOARD)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
buttonPressedTime = None
def buttonStateChanged(pin):
global buttonPressedTime
if not (GPIO.input(5)):
# button is down
if buttonPressedTime is None:
buttonPressedTime = datetime.now()
else:
# button is up
if buttonPressedTime is not None:
elapsed = (datetime.now() - buttonPressedTime).total_seconds()
buttonPressedTime = None
if elapsed >= rebootMinSeconds:
# button pressed for more than specified time, reboot
os.system("shutdown -r now")
elif elapsed >= debounceSeconds:
# button pressed for a shorter time, shutdown
os.system("shutdown -h now")
# subscribe to button presses
GPIO.add_event_detect(5, GPIO.BOTH, callback=buttonStateChanged)
while True:
print GPIO.input(5)
# sleep to reduce unnecessary CPU usage
time.sleep(1)
Pulsamos Ctrl+X y decimos Y para guardar.
Para que el script arranque al encender la RPI creamos el autostart.sh:
nano /storage/.config/autostart.sh
Y añadimos el siguiente código:
python /storage/scripts/shutdown.py &
Pulsamos Ctrl+X y decimos Y para guardar
Para los noobs como yo, el & hay que añadirlo, que es lo que hace que el script se ejecute en segundo plano. Con esto hemos terminado el script para la gestión de energía.
3)Ahora toca editar el config para apagar la gpio y que esta sepa que tiene un led conectado al que ha de pasarle la actividad: Por ello primero damos acceso para poder editar el config.txt
mount –o remount,rw /flash
Y editamos el config.txt
nano /flash/config.txt
Añadimos la siguiente línea de código para apagar la GPIO
#GPIO Poweroff
dtoverlay=gpio-poweroff
Y por último, la actividad del led:
#LED
dtoverlay=pi3-act-led,gpio=22
Pulsamos Ctrl+X y decimos Y para guardar
Y con esto deberíamos tener configurada la gestión de energía, para poder apagar con una pulsación corta y hacer reboot con una pulsación larga, que el led marque la actividad, y que se apague el led cuando apaguemos todo, ya sea a través de botón o desde kodi.