Enviar notificación pushover cuando se inicia MotionEyeOS

Ahora que tengo algunas cámaras basadas en MotionEyeOS en la casa, quería una manera más fácil de saber cuándo se reiniciaron y también tener un enlace en mi teléfono para que sea más fácil acceder a la transmisión de la cámara. Tengo la excelente aplicación Pushover en mi teléfono, así que decidí que MotionEyeOS enviara una notificación de Pushover cada vez que se reiniciara. La notificación indica cuál es la dirección IP y proporciona un enlace útil para hacer clic.

¿Qué es una notificación pushover?

Las notificaciones Pushover se ven así:

con una notificación Pushover individual que se parece a:

Servicio de empuje

Para usar Pushover, debe registrarse para obtener una cuenta en Pushover.net e instalar la aplicación móvil. La aplicación cuesta dinero, pero es un costo único y estaba feliz de pagar. Dentro del panel de control de su cuenta de usuario, encontrará un «token» de usuario. Se pueden crear nuevas «aplicaciones» y cada una tendrá un «token API» único. Creé una aplicación llamada «MotionEyeOS» y usé su token para mis dos cámaras.

Puede usar Pushover para otros proyectos y es compatible con cualquier lenguaje de programación que pueda llamar a una URL web.

Reenvío de puertos

La notificación Pushover proporciona la dirección IP de la red como se ve desde el exterior. El «reenvío de puertos» del enrutador se puede usar para dirigir solicitudes desde fuera de la red al Pi específico que ejecuta MotionEyeOS. Su red solo tendrá una dirección IP externa, pero muchos dispositivos y puertos permiten comunicarse con cada uno.

En los ejemplos de esta publicación, estoy usando el puerto 40001 y mi enrutador está redirigiendo esto al Pi en mi red. El enrutador redirige todo el tráfico entrante al puerto 40001 a la dirección IP interna de mi Pi (por ejemplo, 192.168.0.11) utilizando el número de puerto definido como «Puerto HTTP» en la «Configuración de experto» del administrador de MotionEyeOS. Internamente uso http://192.168.0.11:80 para acceder a mi cámara Garden pero externamente uso http://123.123.123.123:40001.

Entonces, la notificación incluye un enlace a «http://123.123.123.123:40001». Al configurar varias reglas, puede acceder a diferentes instalaciones de MotionEyeOS en la misma red. Solo dales a cada uno un puerto diferente. Una segunda cámara podría usar 40002 y el enrutador simplemente redirigiría a la dirección IP interna adecuada (por ejemplo, 192.168.0.12).

Si no está seguro de cómo configurar su enrutador, busque en Google «reenvío de puertos netgear r8000», pero reemplace «netgear r8000» con la marca y el modelo de su enrutador. Alguien, en algún lugar habrá escrito una guía para explicarlo.

Cargas de archivos SSH

Para obtener los scripts en su Raspberry Pi, puede usar un cliente SSH como WinSCP, FileZilla o MobaXterm. Hay dos técnicas.

Método 1: Subir a Pi

Descargue los dos archivos de script que se describen a continuación en su PC. Edite userinit.sh y agregue sus claves Pushover. Luego cárguelo a Raspberry Pi usando el cliente SSH.

Método 2: descarga directa a Pi

Conéctese a Raspberry Pi mediante SSH o un cliente que proporcione una interfaz de línea de comandos. Navegue al directorio apropiado y descargue el archivo de script directamente desde BitBucket usando el comando curl. Use nano para editar userinit.sh y agregue sus claves Pushover.

Guión bash – userinit.sh

Para que MotionEyeOS ejecute algunos comandos personalizados en el arranque, deberá colocar el archivo userinit.sh en el directorio /data/etc/. Esta es una función integrada y se puede utilizar para muchos otros propósitos.

user="replace_me_with_your_user_key" token="replace_me_with_your_api_token" port="40001" sleep 15 ip=€(curl -s https://api.ipify.org) ip="€ip:€port" python /data/pushover_boot.py €ip €user €token > /var/log/pushover &

No es necesario agregar un shebang (es decir, #!/bin/sh) al principio del archivo y no es necesario hacerlo ejecutable.

Puede encontrar una copia de un ejemplo de userinit.sh en mi repositorio de BitBucket.

Si está utilizando una línea de comando, puede navegar al directorio correcto usando:

cd /data/etc

Luego se puede descargar directamente a su Pi usando el comando «curl»:

curl https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/motionEyeOS/userinit.sh --output userinit.sh

Asegúrese de que este script termine en el directorio /data/etc.

Si está utilizando una línea de comando, puede editar el contenido para agregar sus teclas Pushover usando nano:

nano userinit.sh

Use CTRL-X, Y, ENTER para guardar los cambios y volver a la línea de comando.

Nota: es fundamental que cambie las variables «usuario» y «token» con su propio usuario y tokens api. Si no haces esto, no funcionará.

Secuencia de comandos Python – pushover_boot.py

Cuando el sistema arranque, el script «userinit.sh» esperará quince segundos, obtenga la dirección IP de Internet utilizando el servicio ipify.org y luego ejecute el script «pushover_boot.py». El script «pushover_boot.py» debe colocarse en el directorio /data/.

Este script envía los tokens, el título, el mensaje y la URL para incluir en el mensaje a Pushover. Si tiene éxito, la notificación se enviará a su teléfono y aparecerá en la aplicación.

Puede encontrar una copia de pushover_boot.py en mi repositorio de BitBucket.

Si está utilizando una línea de comando, puede navegar al directorio correcto usando:

cd /data/

Luego se puede descargar directamente a su Pi usando el comando «curl»:

curl https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/motionEyeOS/pushover_boot.py --output pushover_boot.py

¡Este script debe estar en el directorio /data/!

Inicio sesión

Cualquier declaración de «impresión» en el script de Python se dirigirá al archivo «/var/log/pushover». Puede ver el contenido de este archivo cuando el sistema haya arrancado usando:

cat /var/log/pushover

Por el momento, solo imprime el título de la notificación, pero puede mejorar la secuencia de comandos de Python para imprimir información más detallada y tal vez una marca de tiempo.

Solución de problemas

Para que este mecanismo funcione, todo debe estar correctamente configurado. Si te equivocas en un paso, probablemente no funcionará en absoluto. Aquí hay algunas cosas para verificar:

  • Su sistema MotionEyeOS debería estar funcionando y la interfaz web disponible en su red local.
  • Debe tener una cuenta Pushover activa con la aplicación móvil instalada.
  • Dentro de Pushover, debe tener una aplicación creada que le dará un «token/clave de API».
  • El script pushover_boot.py debería existir en /data/
  • pushover_boot.py debe coincidir exactamente con el script en mi repositorio de BitBucket.
  • El script userinit.sh debe existir en /data/etc/
  • userinit.sh debe coincidir exactamente con el script en mi repositorio de BitBucket, pero debe usar su clave de usuario Pushover, clave API y número de puerto.
  • Su enrutador debe asignar el número de puerto entrante utilizado en userinit.sh al «Puerto HTML» definido en la «Configuración avanzada» de MotionEyeOS.