Por mi experiencia, la mayoría de los problemas de estos dispositivos vienen de la alimentación, ya que las fuentes que utilizamos no son precisamente demasiado estables.
Yo mismo sufro de vez en cuando parones en la OPI PC en el servicio networking, que dejan a la OPI PC aislada, pero funcionando por lo que el problema se circunscribe a la salida ethernet.
Para solucionarlo me cree un script, que ya compartí hace mucho tiempo por estas tierras.
En /etc/crontab
# Comprueba cada 5 minutos que la red funcione, si no funciona, reinicia networking o reboot
#*/5 * * * * root /etc/weewx/checknet
Y luego en /etc/weewx/checknet
#!/bin/bash
# Este script comprueba la conexión a internet mediante pings a google.com
# Si la conexión a internet está OK, el script finaliza
# Si no está OK, se reinicia el servicio de internet
# Si después de reiniciar el servicio de internet sigue igual, se reinicia la Orange Pi
# Debe incluirse en /etc/crontab con la periodicidad que se elija
# Uso del script
# No hay que pasar ningún parámetro al script
# Declara la direccion IP o dominio del dispositivo a comprobar
objetivo="192.168.0.1"
# Define el numero de pings que se van a enviar al dispositivo
pings=5
# Define el tiempo en segundos entre reinicios del servicio de red
espera=30
# Define el número de intentos de reinicio de networking
let intentos=5
let bucle=0
while [ $bucle -lt $intentos ]; do
resultado="true"
# Realiza un ping sobre objetivo. Si el resultado es incorrecto cambia a false variable objetivo
(! ping -c$pings $objetivo 2>&1) && resultado="false"
# Si el resultado del ping es correcto, finaliza el script
if [ $resultado == "true" ]
then
echo "Dispositivo online. Fin del Script"
break
fi
# Si el ping no es correcto, continua el script
# A continuacion se reinicia el servicio de internet
# Despues de encender, se esperan 120 segundos para reintentar y se eleva el contador bucle
/etc/init.d/networking restart
sleep $espera
let bucle=bucle+1
done
# A continuacion se vuelve a hacer un ping.
# Si el resultado es correcto se envia un mensaje a un grupo de Telegram mediante /home/admin/telegram
# Si el resultado no es correcto se reinicia la Orange Pi
if [ $bucle -gt 0 ]
then
resultado="true"
(! ping -c$pings $objetivo 2>&1) && resultado="false"
if [ $resultado == "false" ]
then
echo "Reiniciando"
shutdown -r now
else
mensaje="La Orange Pi PC (Weewx-Davis), se había desconectado de la red. Ha quedado en servicio después de $bucle reinicios del servicio networking."
export mensaje
/etc/weewx/telegram
fi
fi
/etc/weewx/telegram es otro script que me manda un mensaje a la aplicación Telegram
#!/bin/bash
# Bibliografia
# https://blog.angelinux-slack.net/2017/01/10/usar-un-bot-de-telegram-para-enviar-mensajes-en-nuestros-sistemas-con-php-bash-y-python/
# Ligeros retoques hechos por mi, en realidad por pura intuicion
# Bash Pocket Reference. Arnold Robbins. Editorial O'Really 2nd Edition
USERID="IdDelUsuariooCanalAqui"
KEY="TokenAqui"
URL="https://api.telegram.org/bot$KEY/sendMessage"
MSG=$mensaje
curl -s --max-time 10 -d "chat_id=$USERID&disable_web_page_preview=1&text=$MSG" $URL
Saludos de j guay del paraguay