Neutrino es una herramienta simple en Python diseñada para monitorear el estado de la energía de la Red y un Generador de Respaldo. Te alerta vía Telegram si el Generador falla en arrancar dentro de un tiempo específico después de una falla de la Red.
- Monitoreo de Red: Hace ping a un dispositivo que solo está en línea cuando hay energía de la Red.
- Monitoreo de Generador: Hace ping a un dispositivo que solo está en línea cuando el Generador está funcionando.
- Validación (Debounce): Para evitar falsos positivos por fallos temporales de red, un dispositivo solo se considera "ARRIBA" o "ABAJO" después de 3 pings consecutivos con el mismo resultado.
- Alertas:
- Envía alertas informativas cuando la Red o el Generador cambian de estado (Arriba/Abajo).
- Si la Red cae y el Generador no arranca dentro de 5 minutos (configurable), se envía una alerta crítica.
- La alerta crítica se repite cada 1 minuto durante los primeros 10 minutos, y luego cada 10 minutos.
- Todas las alertas incluyen el nombre de la ubicación configurada.
-
Clonar el repositorio (o copiar los archivos):
git clone <tu-repo> cd neutrino
-
Crear un entorno virtual (opcional pero recomendado):
python3 -m venv .venv source .venv/bin/activate -
Instalar dependencias:
pip install -r requirements.txt
-
Configuración: Copia
.env.examplea.envy completa tus datos:cp .env.example .env
Edita el archivo
.env:GRID_IP: Dirección IP del dispositivo alimentado por la Red.GENERATOR_IP: Dirección IP del dispositivo alimentado por el Generador.LOCATION_NAME: Nombre de la ubicación (ej. "Sitio Central") para identificar las alertas.TELEGRAM_BOT_TOKEN: Tu Token del Bot de Telegram.TELEGRAM_CHAT_ID: Tu ID de Chat de Telegram.CHECK_INTERVAL: Intervalo en segundos entre pings (por defecto: 5).TIMEOUT_MINUTES: Tiempo de espera antes de alertar (por defecto: 5).
sudo python main.pyNota: A menudo se requiere sudo (o privilegios de administrador) para operaciones de ping ICMP dependiendo de tu sistema operativo.
Para que Neutrino se ejecute automáticamente al iniciar el sistema y se reinicie si falla, puedes configurarlo como un servicio de systemd.
-
Crear el archivo de servicio: Crea un archivo llamado
/etc/systemd/system/neutrino.service:sudo nano /etc/systemd/system/neutrino.service
-
Pegar el siguiente contenido (Asegúrate de ajustar las rutas y el usuario):
[Unit] Description=Neutrino Generator Monitor After=network.target [Service] Type=simple User=root WorkingDirectory=/ruta/a/tu/neutrino ExecStart=/ruta/a/tu/neutrino/.venv/bin/python main.py Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
- Reemplaza
/ruta/a/tu/neutrinocon la ruta absoluta donde clonaste el proyecto (ej./home/usuario/neutrino). - Asegúrate de que
ExecStartapunte al ejecutable de python dentro de tu entorno virtual (o el del sistema si no usaste venv). - Se usa
User=rootporquepingsuele requerir privilegios. Si has configurado permisos especiales para ping, puedes cambiar el usuario.
- Reemplaza
-
Recargar systemd y habilitar el servicio:
sudo systemctl daemon-reload sudo systemctl enable neutrino sudo systemctl start neutrino -
Verificar el estado:
sudo systemctl status neutrino
-
Ver logs:
journalctl -u neutrino -f
- Python 3.x
ping3python-dotenvrequests