Autor Tema: [Ayuda] BASH para reiniciar la RasPi  (Leído 13934 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado vixium

  • Newbie
  • *
  • Mensajes: 11
    • Ver Perfil
  • Estación: ESAND1100000011500E
[Ayuda] BASH para reiniciar la RasPi
« en: 12 de Noviembre del 2018, 12:50:15 pm »
Buenas tardes,

Tengo una PCE conectada a una RasPi y tengo un problema de desconexiones que se solucionan reiniciando todo. He conseguido que al reiniciar la RasPi se reinicie también la consola de la PCE, así que ya lo único que me queda para no perder los datos con estos cortes es automatizar el proceso.

Por ello, necesito ayuda para programar un bash en linux que se ejecute cada minuto (se mete en el crontab) y que éste compare el fichero realtime.txt que utiliza cumulusMX. Detallo más la teoría:

- Tengo un fichero realtime.txt que contiene la fecha, la hora y todos los valores registrados por la estación.
- Este fichero se sobreescribe con datos nuevos cada minuto.

La idea es guardar los datos de los 3 últimos ficheros (3 minutos) y comparar si la velocidad del viento, temperatura, humedad, etc son idénticos.

--> Si son idénticos: la estación ha perdido señal y el realtime solo está actualizando la hora, pero no los datos de sensores, porque se ha quedado con el último valor. Por lo tanto: reboot.
--> Si son diferentes: no hacer nada.

Ya digo, la teoría es facil, pero no tengo ni tiempo ni conocimiento para hacerlo. ¿alguien que controle me puede ayudar?¿a alguien se le ocurre otra solución?

Gracias!!

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #1 en: 12 de Noviembre del 2018, 21:02:12 pm »
Hola vixium

Sí se puede hacer... en programación prácticamente todo es posible... he creado el bash con lo poco que me sé (y googleando un rato  *+* *+*) y debo de decir que probándolo funciona...

El problema es que hay que restringir muuuucho los campos a leer del realtime.txt que genera Cumulus… explico... algunos campos aunque se pierda la señal del viento pueden ir siendo alterados (o tardar tiempo en serlo) por Cumulus como el Rain rate o la velocidad media del viento por lo que no serían exactamente "iguales".

El script es este:

Código: [Seleccionar]
#!/bin/bash

realtime='/etc/CumulusMX/realtime.txt'
check='/home/pi/cumuluscheck.txt'

cat $realtime | cut -d ' ' -f 3-5,7-8 >> $check
lineas=$(wc -l < $check)
lineas2=$(uniq $check | wc -l)
if [[ $lineas == 4 ]]
then sed -i '1d' $check
elif [[ $lineas -lt 3 ]]
then exit
fi
if [[ $lineas2 == 1 ]]
then rm $check
     reboot
fi

Te lo comento un poco.

al principio en realtime= y en check= aparecen las rutas (siempre éstas entre comillas) donde se encuentra el archivo realtime de Cumulus MX (depende de dónde lo hayas puesto) y del archivo que servirá para comparar líneas que se ubicará por defecto en /home/pi

Comparará sólo los campos de temperatura, humedad, punto de rocío y velocidad y dirección del viento. El peligro de esto es que si por ejemplo tu estación está 3 minutos con la misma temperatura, humedad y por ejemplo el viento está a 0 km/h que puede fácilmente darse en situaciones de inversión térmica en las que no hay casi variación el script haría que se reiniciase la raspi.

Yo, en vez de cada minuto pondría que cada 3 ó cada 5 minutos comparase los 3 registros (se puede variar el número de registros a comparar)

Si creas el archivo con nano hazlo con sudo delante para que sea propiedad de root y ponle permisos de ejecución con sudo chmod +x nombredelarchivo (que deberá terminar en extensión .sh)

Ponlo en el crontab de root (sudo crontab -e), por ejemplo */3 * * * * rutadelarchivobash ejecutaría el script cada 3 minutos por lo que si en esos 9 minutos esos valores son inguales en todas las líneas reiniciaría la Raspi.

Si tienes alguna duda o quieres saber algo por aquí estoy

saludos
« Última modificación: 13 de Noviembre del 2018, 13:14:03 pm por jmviper »


Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado vixium

  • Newbie
  • *
  • Mensajes: 11
    • Ver Perfil
  • Estación: ESAND1100000011500E
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #2 en: 16 de Noviembre del 2018, 12:28:38 pm »
Acabo de verlo, estoy pendiente de probarlo en cuanto tenga un hueco libre (este finde pretendo ponerme un rato con este tema).

Muchísimas gracias!! os comentaré las novedades!

Un saludo

Desconectado vixium

  • Newbie
  • *
  • Mensajes: 11
    • Ver Perfil
  • Estación: ESAND1100000011500E
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #3 en: 16 de Noviembre del 2018, 18:02:59 pm »
Probado y funcionando.

He modificado algunas cosas, he metido más variables (6 en total: temperatura, humedad, punto de rocío, velocidad media, racha máxima y dirección de viento)

También he modificado el número de líneas a escribir en el fichero (de 3 a 5).

En resumen, se ejecuta cada 2 minutos y guardo las 5 últimas ejecuciones del script. Si todas son iguales (10 minutos con las mismas medidas de las 6 variables), reinicio.

Gracias a todos y en especial a jmviper!
Un saludo

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #4 en: 16 de Noviembre del 2018, 20:21:26 pm »
Ok puedes modificarlo a tu gusto.

La velocidad media del viento se quedaría al cabo de poco tiempo igual a la racha actual si ésta se quedase estancada.

En cuanto a ponerlo a 5 registros habrás tenido que modificar los condicionales del script de esta manera:

Código: [Seleccionar]
if [[ $lineas == 6 ]]
then sed -i '1d' $check
elif [[ $lineas -lt 5 ]]
then exit
fi
if [[ $lineas2 == 1 ]]
then rm $check
     reboot
fi

Que te funcione como se espera  ;)

saludos


Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado meteoalcolea

  • Jr. Member
  • **
  • Mensajes: 73
    • Ver Perfil
  • Estación: Alcolea ESAND1400000014610B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #5 en: 12 de Octubre del 2020, 18:40:26 pm »
Como ya he puesto en otro hilo del foro, estoy teniendo cortes de señal entre el sensor exterior y la consola de la PCE. La única forma de solucionarlo es apagando la consola y volviéndola a encender. ¿Se podría hacer algo similar a lo anterior para que cuando weewx detecte que no recibe datos de la consola la reinicie? No sé si puede ayudar, pero en el fichero index.html los datos de temperatura, humedad,....... aparecen como N/A.

Gracias!

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #6 en: 12 de Octubre del 2020, 22:57:21 pm »
Hola meteoalcolea

Prueba esto:

Código: [Seleccionar]
#!/bin/bash

rutaplantilla=/var/www/html/weewx/meteoclimatic/meteoclimatic.htm
temp=$(cat $rutaplantilla | grep TMP)
temp="${temp// /}"
if [[ $temp == "*TMP=N/A" ]]
then reboot now
fi


Te lo dejo como adjunto en mi mensaje como weewxcheck.sh

Solo debes de mirar que rutaplantilla= tenga la ruta absoluta a la plantilla de meteoclimatic.

Independientemente de donde la pongas (lo normal sería en /home/pi) le das permisos de ejecución con sudo chmod +x weewxcheck.sh

Una vez hecho entras en el crontab de root con sudo crontab -e y al final del mismo en una nueva línea pones */5 * * * * /home/pi/weewxcheck.sh
si lo has puesto en /home/pi

Reiniciará la raspi si encuentra en el campo de temperatura de la plantilla *TMP=N/A



Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado meteoalcolea

  • Jr. Member
  • **
  • Mensajes: 73
    • Ver Perfil
  • Estación: Alcolea ESAND1400000014610B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #7 en: 12 de Octubre del 2020, 23:05:35 pm »
Hola jmviper.

Muchas gracias por tu respuesta!!

Esto también me reiniciará la consola? Es que si no se reinicia no vuelve a coger señal del sensor exterior.

Saludos!

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #8 en: 12 de Octubre del 2020, 23:34:27 pm »
Eso solo reinicia la raspi y por lo tanto weewx, no la consola de la estación.

En weewx hay documentación al respecto y dice que no hay más alternativa que reiniciar la consola manualmente (quitar pilas etc etc) pero que hay unas líneas que se pueden poner en weewx.conf para evitar, en la medida de lo posible, esos cuelgues:

https://github.com/weewx/weewx/wiki/FineOffset%20USB%20lockup


Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado meteoalcolea

  • Jr. Member
  • **
  • Mensajes: 73
    • Ver Perfil
  • Estación: Alcolea ESAND1400000014610B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #9 en: 12 de Octubre del 2020, 23:45:17 pm »
Pero mi consola no deja de comunicarse con la raspi por USB. El problema es que deja de recibir datos del sensor exterior. Y hasta que no se reinicia la consola, no vuelve a recibir datos. Se podría apagar y volver a encender el USB de la raspi? Con esto reiniciaria la consola, no?

Muchas gracias por tu ayuda!!
« Última modificación: 12 de Octubre del 2020, 23:53:45 pm por meteoalcolea »

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #10 en: 13 de Octubre del 2020, 00:11:59 am »
No creo que se pueda reiniciar la consola desde el USB.

De todas maneras espera a ver si alguien que la tenga sepa de algo que funcione al respecto aunque va a ser difícil.

Saludos


Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado meteoalcolea

  • Jr. Member
  • **
  • Mensajes: 73
    • Ver Perfil
  • Estación: Alcolea ESAND1400000014610B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #11 en: 13 de Octubre del 2020, 08:56:51 am »
En el primer mensaje, vixium decía "He conseguido que al reiniciar la RasPi se reinicie también la consola de la PCE". Eso sería perfecto para solucionar mi problema. Pero no sé cómo hacerlo. Cuando reinicio la raspi, la consola no se reinicia (estando sin pilas, claro está).

Saludos!

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #12 en: 13 de Octubre del 2020, 09:45:24 am »
Faltaría saber cómo lo hizo posible.

De las pocas soluciones que se me ocurren estaría ponerle un relé gobernado por el GPIO de la raspi que reiniciase la consola.

Por aquí hay alguno barato barato.

La cuestión sería cacharrear y conseguir alguna librería o script que trabaje con él.


Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado meteoalcolea

  • Jr. Member
  • **
  • Mensajes: 73
    • Ver Perfil
  • Estación: Alcolea ESAND1400000014610B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #13 en: 13 de Octubre del 2020, 12:25:34 pm »

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:[Ayuda] BASH para reiniciar la RasPi
« Respuesta #14 en: 13 de Octubre del 2020, 13:13:20 pm »
Ahí hablan de resetear el puerto USB pero lo que hay que hacer es resetear la consola de su fuente de alimentación, ya sea pilas o corriente o las dos cosas a la vez.
El quitar el cable USB que transmite los datos a la raspi no va a resetear la consola sino solamente la comunicación consola - raspi y no consola - sensores.



Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es