# Raspberry Pi LED & Button Control Sistema de gestión para el control de estado de un LED y monitorización de un botón físico para acciones de sistema (apagado/reinicio) utilizando `systemd` y la suite `libgpiod`. ## Estructura del Proyecto Los archivos deben estar localizados en el directorio `/opt/raspberry_scripts/`: * **`led_config.conf`**: Archivo centralizado de variables para definir los pines GPIO. * **`blink_led.sh`**: Script de parpadeo para identificación visual. * **`button_control.sh`**: Script que gestiona la lógica de pulsación del botón. * **`led-on.service`**: Servicio de sistema para encender el LED al inicio. * **`led-off.service`**: Servicio de sistema para apagar el LED al apagar/reiniciar. * **`button-monitor.service`**: Servicio persistente que ejecuta el script del botón. ## Configuración (`led_config.conf`) Edite este archivo para ajustar los pines a su hardware: ```bash CHIP=0 LINE=16 BTN_LINE=18 ``` ## Instalación Siga esta secuencia de comandos para integrar los scripts como servicios del sistema: ```bash # 1. Otorgar permisos de ejecución a los scripts sudo chmod +x /opt/raspberry_scripts/*.sh # 2. Instalar los archivos de servicio en systemd sudo cp /opt/raspberry_scripts/*.service /etc/systemd/system/ # 3. Ajustar permisos de los archivos de servicio sudo chmod 644 /etc/systemd/system/led-on.service sudo chmod 644 /etc/systemd/system/led-off.service sudo chmod 644 /etc/systemd/system/button-monitor.service # 4. Recargar el demonio de systemd sudo systemctl daemon-reload # 5. Habilitar el inicio automático de los servicios sudo systemctl enable led-on.service sudo systemctl enable led-off.service sudo systemctl enable button-monitor.service # 6. Iniciar el monitor de botón de forma inmediata sudo systemctl start button-monitor.service ``` ## Operación ### Control del Sistema (Botón) El script monitoriza eventos en el pin definido como `BTN_LINE`: * **Pulsación estándar**: Apaga la Raspberry Pi (`poweroff`). * **Pulsación prolongada (> 5 segundos)**: Reinicia la Raspberry Pi (`reboot`). ### Identificación Visual (LED) Para identificar físicamente la unidad, ejecute: ```bash /opt/raspberry_scripts/blink_led.sh ``` *El LED parpadeará hasta que se interrumpa el proceso (Ctrl+C), momento en el cual el LED volverá a estado encendido fijo automáticamente.* ## Verificación de Servicios Puede comprobar el estado del monitor en cualquier momento con: ```bash systemctl status button-monitor.service ```