Necesito script log temperatura

Soporte General para RetroPie
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

Buenas! Como ya sabeis ya he casi terminado de adaptar el pirossidisipador a la raspberry
Y necesitaria un script simple, que me creara un archivo log .txt de las temperaturas cada cierto tiempo.

He visto por internet pero estan preparados para modulos o para ir con ventiladores independientes.

Yo solo necesito que el script lea las temperatura de las cpus y las guarde en un texto cada cierto tiempo.

Mi idea es poder comprobar la estabilodad de la.temperatura con el disipador que he modificado.
Para ver la diferencia , y hacer.un poco de overclock.
Imagen
Avatar de Usuario
Kantabro
Pi Alpha
Pi Alpha
Mensajes: 24
Registrado: 14 Abr 2017, 13:28
Agradecido: 0
Agradecimiento recibido: 0

Añade un cronjob que ejecute el comando que lee la temperatura cada X tiempo y con el operador de salida >> lo añades al archivo que quieras.
Avatar de Usuario
cpa
Pi Beta
Pi Beta
Mensajes: 159
Registrado: 10 Mar 2017, 23:18
Agradecido: 0
Agradecimiento recibido: 1 vez

Script sencillito... aquí lo tienes:

Código: Seleccionar todo


#!/bin/bash
if [ $# -ne 1 ]; then
    echo $0: Uso: Capturatemp \<segundos\>
    exit 1
fi

clear
echo "Capturando muestra de temperatura cada $1 segundos"
echo "El fichero de salida es capturatemp.txt"

echo "Inicio de la grabación." > capturatemp.txt
echo "Capturando muestra de temperatura cada $1 segundos" >> capturatemp.txt

while true
do
   date >> capturatemp.txt
   vcgencmd measure_temp >> capturatemp.txt
   sleep $1
done
Lo llamas capturatemp y lo ejecutas como "capturatemp <segundos>", donde le indicas cada cuantos segundos quieres una toma de temperatura. Te generará un fichero llamado "capturatemp.txt" con una muestra cada x segundos, los especificados en la entrada de comandos.

Te lo he hecho muy simple, creo que lo entenderás. Para pararlo pulsa "control + c". Lo puedes correr en una screen o con un & para dejarlo en segundo plano. Puedes ir viendo el estado del fichero con tail -f capturatemp.txt.

Si tienes cualquier duda me consultas...
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

cpa escribió:Script sencillito... aquí lo tienes:

Código: Seleccionar todo


#!/bin/bash
if [ $# -ne 1 ]; then
    echo $0: Uso: Capturatemp \<segundos\>
    exit 1
fi

clear
echo "Capturando muestra de temperatura cada $1 segundos"
echo "El fichero de salida es capturatemp.txt"

echo "Inicio de la grabación." > capturatemp.txt
echo "Capturando muestra de temperatura cada $1 segundos" >> capturatemp.txt

while true
do
   date >> capturatemp.txt
   vcgencmd measure_temp >> capturatemp.txt
   sleep $1
done
Lo llamas capturatemp y lo ejecutas como "capturatemp <segundos>", donde le indicas cada cuantos segundos quieres una toma de temperatura. Te generará un fichero llamado "capturatemp.txt" con una muestra cada x segundos, los especificados en la entrada de comandos.

Te lo he hecho muy simple, creo que lo entenderás. Para pararlo pulsa "control + c". Lo puedes correr en una screen o con un & para dejarlo en segundo plano. Puedes ir viendo el estado del fichero con tail -f capturatemp.txt.

Si tienes cualquier duda me consultas...
Gracias compañero, muy bueno!! voy a probarlo en un rato!
estoy un pelin mas familiarizado con script phyton

meto por ejemplo capturetemp.sh en local/bin?

cuando te refieres a lo ejecutas como "capturatemp <segundos>
pongo: sudo local/bin/capturetemp.sh
o simplemente poniendo : sudo capturetemp <1> (dependiendo de en cuantos segundos quiero que capture)
o textualmente tal cual: sudo capturetemp <segundos>
ya valdria?
ando poco familiarizado con scipt en bash, un poco bastante perdido.
por ejemplo con los script en python directamente pongo : sudo (la ruta del archivo.py)
y ya se ejecuta el script, y despues si quiero hacer que se autoinicie lo añado a crontab o a rc.local con el & si quiero que se ejecute en segundo plano como comentas.
Imagen
Avatar de Usuario
cpa
Pi Beta
Pi Beta
Mensajes: 159
Registrado: 10 Mar 2017, 23:18
Agradecido: 0
Agradecimiento recibido: 1 vez

No hace falta correrlo con sudo. Si lo copias en /local/bin, al ser una ruta que está en el path, te valdría con poner el nombre que le hayas puesto al fichero (capturetemp.sh es cómo lo he pensado yo).

La forma de ejecutarlo sería:
Si está en el path:
capturetemp.sh 60 (si quieres una toma de temperatura cada minuto), o capturatemp.sh 600 (si lo quieres cada diez minutos, por ejemplo)
Si lo creas en el home del usuario, lo ejecutarías como ./capturatemp 60 (para el caso del minuto) o ./capturatemp 600 (para el caso de los diez minutos).

El fichero "capturatemp.txt" se creará en el path donde te encuentres al ejecutarlo, independientemente de donde lo hayas situado.

;-)
Avatar de Usuario
cpa
Pi Beta
Pi Beta
Mensajes: 159
Registrado: 10 Mar 2017, 23:18
Agradecido: 0
Agradecimiento recibido: 1 vez

Otra cosa, si lo quieres poner en el rc.local o en el script del local.start, lo que puedes hacer es fijar la ruta del fichero en el script. Si te fijas en el script, las redirecciones van así:

>> capturatemp.txt

Lo podrías variar como, por ejemplo:

>> /home/pi/capturatemp.txt

Y así el fichero siempre estaría en el home del usuario "pi" (en caso de que tu distro tenga dicho usuario, claro).

Nota que la primera redirección sólo tiene un ">", porque sirve para vaciar el fichero si ya existía. El resto son dobles ">>", para que añada contenido sin borrar lo anterior...
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

perfecto! ahora si me queda claro! en un rato lo pruebo y te comento, te lo agradezco a quedado super claro eres un grande!
Imagen
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

he probado tanto tu script, como otro y me pone permission denied en ambos..
los he metido en /home/pi/
el tuyo lo he llamado temperaturerasp.sh
y el otro temperature.sh

abro la ventana de comandos en la raspberry y pongo:
/home/pi/temperaturerasp.sh
y me pone: permission denied
si pongo:
sudo /home/pi/temperaturerasp.sh
me pone ; unknown command "o algo asi"
En cambio la cabrona de la raspberry si pongo:
sudo nano /home/pi/temperaturerasp.sh
si me lo abre para poder editarlo, por lo tanto la ubicacion es esa! lo he probado para ver que pasaba, por que no me cuadraba..
es raro que sin sudo me de permiso denegado y con sudo me diga que no lo reconoce.
Si pongo: temperaturerasp.sh (sin hubicacion) o temperaturerasp.sh 30
me da unknow command.

Ahora me dirás, que no tendrá permisos de lectura? no sabria si es por eso, no se como darselos tampoco se decirte que estoy haciendo mal, he probado con el comando sudo y sin sudo, pero nada.. no me lo pilla, eso si para editarlo si..

con los script en python esto no me pasaba, lo hacia de esta manera y me los ejecutaba, no se que estoy haciendo mal, a lo mejor para ti es algo obio.
Imagen
Avatar de Usuario
cpa
Pi Beta
Pi Beta
Mensajes: 159
Registrado: 10 Mar 2017, 23:18
Agradecido: 0
Agradecimiento recibido: 1 vez

Tienes que darle permiso de ejecución con chmod +x nombrearchivo
Luego, para ejecutarlo, o pones la ruta completa, o te vas hasta donde lo tienes y lo ejecutas con ./nombrearchivo

Enviado desde mi Nexus 5 mediante Tapatalk
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

cpa escribió:Tienes que darle permiso de ejecución con chmod +x nombrearchivo
Luego, para ejecutarlo, o pones la ruta completa, o te vas hasta donde lo tienes y lo ejecutas con ./nombrearchivo

Enviado desde mi Nexus 5 mediante Tapatalk
Gracias cpa, luego lo pruebo, no queria darte tanto la lata con el tema.
Como ves soy paqueton aun con esto de los comandos. :destroyer
Imagen
Avatar de Usuario
cpa
Pi Beta
Pi Beta
Mensajes: 159
Registrado: 10 Mar 2017, 23:18
Agradecido: 0
Agradecimiento recibido: 1 vez

Sin problemas!...
Ya me cuentas...

Recuerda, vete donde has creado el script y le pones:
chmod +x temperaturerasp.sh
y luego lo ejecutas como:
./temperaturerasp.sh

(no te olvides del punto y la barra del 7)
Avatar de Usuario
drewdty
Pi Destroyer
Pi Destroyer
Mensajes: 753
Registrado: 05 Dic 2016, 22:47
Agradecido: 0
Agradecimiento recibido: 4 veces

yo lo hago asi
si quieres ver la temperatura de tu raps pongo
/opt/vc/bin/vcgencmd measure_temp
pero es un engorro hacerlo cada vez pero le hago un alias editando el archivo bashrc

Código: Seleccionar todo

sudo nano .bashrc
colocando al final del archivo (siempre hacer copia de seguridad)

Código: Seleccionar todo

alias temp='/opt/vc/bin/vcgencmd measure_temp'
asi solo basta escribir ¨temp¨en el terminal y te muestra el resultado
Imagen
La madre de todas las ciencias es la paCIENCIA
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

drewdty escribió:yo lo hago asi
si quieres ver la temperatura de tu raps pongo
/opt/vc/bin/vcgencmd measure_temp
pero es un engorro hacerlo cada vez pero le hago un alias editando el archivo bashrc

Código: Seleccionar todo

sudo nano .bashrc
colocando al final del archivo (siempre hacer copia de seguridad)

Código: Seleccionar todo

alias temp='/opt/vc/bin/vcgencmd measure_temp'
asi solo basta escribir ¨temp¨en el terminal y te muestra el resultado
muy bueno lo del alias, no sabia que se podia crear un alias a un comando

nada cpa que no hay manera..
pongo : chmod +x temperaturerasp.sh
asta aqui bien, pero despues al poner

./temperaturerasp.sh

me sale esto, no para de repetirse y de bajar paginas con estas lineas de la imagen
Imagen

tampoco me funciona /home/pi/temperaturerasp.sh
ni tampoco lo mismo pero con sudo
y con el otro script en bash que tengo me pasa exactamente igual que con el tuyo :lol:
Imagen
Avatar de Usuario
cpa
Pi Beta
Pi Beta
Mensajes: 159
Registrado: 10 Mar 2017, 23:18
Agradecido: 0
Agradecimiento recibido: 1 vez

El script ahora te está funcionando, pero no encuentra los comandos de las líneas 16, 17 y 18, porque estén mal escritos o por algo raro.

Si tienes Telegram lo echamos un vistazo en vivo...

Enviado desde mi Nexus 5 mediante Tapatalk
Avatar de Usuario
cpa
Pi Beta
Pi Beta
Mensajes: 159
Registrado: 10 Mar 2017, 23:18
Agradecido: 0
Agradecimiento recibido: 1 vez

Es raro, porque comentó que tenía Raspbian, y el vcgencmd está en el path.
Quizá tenga mal puesto el encabezado del script (el #!/bin/bash), y no le esté cargando correctamente el entorno...
Igual si lo ejecuta como "sh temperaturerasp.sh 60" (sin las comillas, obviamente) le cargue bien el entorno, independientemente de cómo tenga el encabezado, y le funcione correctamente sin hacer más modificaciones... (captura cada 60 segundos en este ejemplo)
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

Lo primero agradeceros a los 2 la ayuda Cpa y drakkar.
gracias a los 2! :mrgreen:

Luego sigo probando, os comento
Creo que ayer ya puse:
Temperaturerasp.sh 10
Por ejemplo y creo que me daba unknow command.

En cuanto a lo de que comentas que tengo raspian, a lo mejor no eh, no recuerdo haberlo comentado, pero me suena que es debian, llevo la imagen attactMode+KodiPlusStarPremium me suena que es debian pero no lo se seguro.

Drakkar, probare el codigo con el cambio.

Ayer cuando probe, lo tenia exactamente asi digo exactamente asi por que lo que veis es del archivo temperaturerasp.sh que pase a /home/pi/
:

Código: Seleccionar todo

#!/bin/bash
if [ $# -ne 1 ]; then
    echo $0: Uso: Capturatemp \<segundos\>
    exit 1
fi

clear
echo "Capturando muestra de temperatura cada $1 segundos"
echo "El fichero de salida es capturatemp.txt"

echo "Inicio de la grabación." > capturatemp.txt
echo "Capturando muestra de temperatura cada $1 segundos" >> capturatemp.txt

while true
do
   date >> capturatemp.txt
   vcgencmd measure_temp >> capturatemp.txt
   sleep $1
donem
Pd: me acabo de fijar y tengo al final del.codigo puesto donem enved de done
:? :? :?
Asi que lo correjire y os hare caso .

Pero con otro codigo, me pasaba lo mismo de la.imagen que subi ayer.
Os dejo el codigo: :)

Código: Seleccionar todo

#!/bin/bash
cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp)
cpuTemp1=$(($cpuTemp0/1000))
cpuTemp2=$(($cpuTemp0/100))
cpuTempM=$(($cpuTemp2 % $cpuTemp1))
gpuTemp=$(/opt/vc/bin/vcgencmd measure_temp)

# Function to write the temperature into the log
function writeToLog() {
	# The direction of the file
	# you can put here another route
	file="/home/pi/temp.log"

	# Check if the file exists
	if [ ! -f "$file" ] ; then
         	# if not create the file
        	touch "$file"
     	fi

	echo "$1" >> "$file"
}

# Save the value
writeToLog "$(date): CPU temp - $cpuTemp1.$cpuTempM'C, GPU temp - $gpuTemp;"

# Check the temperature
if [ "$cpuTemp1" -gt  "70" ]
        then writeToLog "Shutdown.......;"; `shutdown -h now`
fi
Imagen
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

Pirossi escribió:Lo primero agradeceros a los 2 la ayuda Cpa y drakkar.
gracias a los 2! :mrgreen:

Luego sigo probando, os comento
Creo que ayer ya puse:
Temperaturerasp.sh 10
Por ejemplo y creo que me daba unknow command.

Lo que no he probado a sido lo.que me.comentas de:
Sh temperaturerasp.sh 60

Lo probare luego.

En cuanto a lo de que comentas que tengo raspian, a lo mejor no eh, no recuerdo haberlo comentado, pero me suena que es debian, llevo la imagen attactMode+KodiPlusStarPremium me suena que es debian pero no lo se seguro.

Drakkar, probare el codigo con el cambio.

Ayer cuando probe, lo tenia exactamente asi digo exactamente asi por que lo que veis es del archivo temperaturerasp.sh que pase a /home/pi/
:

Código: Seleccionar todo

#!/bin/bash
if [ $# -ne 1 ]; then
    echo $0: Uso: Capturatemp \<segundos\>
    exit 1
fi

clear
echo "Capturando muestra de temperatura cada $1 segundos"
echo "El fichero de salida es capturatemp.txt"

echo "Inicio de la grabación." > capturatemp.txt
echo "Capturando muestra de temperatura cada $1 segundos" >> capturatemp.txt

while true
do
   date >> capturatemp.txt
   vcgencmd measure_temp >> capturatemp.txt
   sleep $1
donem
Pd: me acabo de fijar y tengo al final del.codigo puesto donem enved de done
:? :? :?
Asi que lo correjire y os hare caso .

Pero con otro codigo, me pasaba lo mismo de la.imagen que subi ayer.
Os dejo el codigo: :)

Código: Seleccionar todo

#!/bin/bash
cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp)
cpuTemp1=$(($cpuTemp0/1000))
cpuTemp2=$(($cpuTemp0/100))
cpuTempM=$(($cpuTemp2 % $cpuTemp1))
gpuTemp=$(/opt/vc/bin/vcgencmd measure_temp)

# Function to write the temperature into the log
function writeToLog() {
	# The direction of the file
	# you can put here another route
	file="/home/pi/temp.log"

	# Check if the file exists
	if [ ! -f "$file" ] ; then
         	# if not create the file
        	touch "$file"
     	fi

	echo "$1" >> "$file"
}

# Save the value
writeToLog "$(date): CPU temp - $cpuTemp1.$cpuTempM'C, GPU temp - $gpuTemp;"

# Check the temperature
if [ "$cpuTemp1" -gt  "70" ]
        then writeToLog "Shutdown.......;"; `shutdown -h now`
fi
Imagen
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

.,..........Comentario duplicado sorry..............
Imagen
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

Drakkar escribió:Si no me e saltado ningun detalle lo tienes bien, solo una cosa , justo en la ultima linea tienes puesto donem, quitale la m, quedando así

Código: Seleccionar todo

done
Ejecuta

Código: Seleccionar todo

vcgencmd measure_temp
en la terminal, y si te da la temperatura, pues el script no tiene problemas y deberia funcionar, que te dá error, hazlo como lo modifique yo. Pruebas y nos cuentas. Por cierto, todo el merito lo tiene cpa, yo solo añadi un detallito, el creo el script.
Saludos :D
Gracias por la ayuda, por ciero mientras contestabas he ampliado el comentario anterior, que no me habia dado tiempo a terminar de editarlo que ya tenia tu respuesta segun veo, por si quieres echarle.un ojo!
Por que he añadido cosas nuevas, lo de donem tienes razon'
Probare todo lo que comentais y como siempre os cuento..
Imagen
Avatar de Usuario
Pirossi
Pi Destroyer
Pi Destroyer
Mensajes: 503
Registrado: 24 Ene 2017, 03:16
Agradecido: 0
Agradecimiento recibido: 1 vez

Drakkar escribió:
Pirossi escribió:
Pero con otro codigo, me pasaba lo mismo de la.imagen que subi ayer.
Os dejo el codigo: :)

Código: Seleccionar todo

#!/bin/bash
cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp)
cpuTemp1=$(($cpuTemp0/1000))
cpuTemp2=$(($cpuTemp0/100))
cpuTempM=$(($cpuTemp2 % $cpuTemp1))
gpuTemp=$(/opt/vc/bin/vcgencmd measure_temp)

# Function to write the temperature into the log
function writeToLog() {
	# The direction of the file
	# you can put here another route
	file="/home/pi/temp.log"

	# Check if the file exists
	if [ ! -f "$file" ] ; then
         	# if not create the file
        	touch "$file"
     	fi

	echo "$1" >> "$file"
}

# Save the value
writeToLog "$(date): CPU temp - $cpuTemp1.$cpuTempM'C, GPU temp - $gpuTemp;"

# Check the temperature
if [ "$cpuTemp1" -gt  "70" ]
        then writeToLog "Shutdown.......;"; `shutdown -h now`
fi
Este codigo está correcto también, solo fijate en el detalle que tu usuario se pi en la imagen, si no te saltará error. Compruebalo así, ejecutando en la terminal.

Código: Seleccionar todo

echo $USER
Si tu usuario no es pi, cambias esta linea

Código: Seleccionar todo

file="/home/pi/temp.log"
Y reemplazas pi, por el usuario que te dio con el anterior comando.
Se nota que estas acostumbrado a escribir codigo, madre de dios lo rapido que escribes!
Cuando he actualizado la pagina ya tenia tu comentario 8-)

Mi usuario es pi.

Gracias por responder a la velocidad de la luz !

A la tarde pruebo todo. Thanks !
Imagen
Responder