Necesito script log temperatura
- Pirossi
- 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.
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.

- cpa
- Pi Beta
- Mensajes: 159
- Registrado: 10 Mar 2017, 23:18
- Agradecido: 0
- Agradecimiento recibido: 1 vez
Script sencillito... aquí lo tienes:
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...
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
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...
- Pirossi
- Pi Destroyer
- Mensajes: 503
- Registrado: 24 Ene 2017, 03:16
- Agradecido: 0
- Agradecimiento recibido: 1 vez
Gracias compañero, muy bueno!! voy a probarlo en un rato!cpa escribió:Script sencillito... aquí lo tienes:
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.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
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...
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.

- cpa
- 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.
;-)
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.
;-)
- cpa
- 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...
>> 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...
- Pirossi
- 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.
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.

- cpa
- 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
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
- Pirossi
- Pi Destroyer
- Mensajes: 503
- Registrado: 24 Ene 2017, 03:16
- Agradecido: 0
- Agradecimiento recibido: 1 vez
Gracias cpa, luego lo pruebo, no queria darte tanto la lata con el tema.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
Como ves soy paqueton aun con esto de los comandos.


- cpa
- 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)
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)
- drewdty
- 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
colocando al final del archivo (siempre hacer copia de seguridad)
asi solo basta escribir ¨temp¨en el terminal y te muestra el resultado
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
Código: Seleccionar todo
alias temp='/opt/vc/bin/vcgencmd measure_temp'

La madre de todas las ciencias es la paCIENCIA
- Pirossi
- Pi Destroyer
- Mensajes: 503
- Registrado: 24 Ene 2017, 03:16
- Agradecido: 0
- Agradecimiento recibido: 1 vez
muy bueno lo del alias, no sabia que se podia crear un alias a un comandodrewdty 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 bashrccolocando al final del archivo (siempre hacer copia de seguridad)Código: Seleccionar todo
sudo nano .bashrc
asi solo basta escribir ¨temp¨en el terminal y te muestra el resultadoCódigo: Seleccionar todo
alias temp='/opt/vc/bin/vcgencmd measure_temp'
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

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:

- cpa
- 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
Si tienes Telegram lo echamos un vistazo en vivo...
Enviado desde mi Nexus 5 mediante Tapatalk
- cpa
- 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)
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)
- Pirossi
- 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!
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/
:
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:
gracias a los 2!

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



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

- Pirossi
- 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!![]()
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/
:Pd: me acabo de fijar y tengo al final del.codigo puesto donem enved de doneCó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
![]()
![]()
![]()
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

- Pirossi
- Pi Destroyer
- Mensajes: 503
- Registrado: 24 Ene 2017, 03:16
- Agradecido: 0
- Agradecimiento recibido: 1 vez
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!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íEjecutaCódigo: Seleccionar todo
done
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.Código: Seleccionar todo
vcgencmd measure_temp
Saludos
Por que he añadido cosas nuevas, lo de donem tienes razon'
Probare todo lo que comentais y como siempre os cuento..

- Pirossi
- Pi Destroyer
- Mensajes: 503
- Registrado: 24 Ene 2017, 03:16
- Agradecido: 0
- Agradecimiento recibido: 1 vez
Se nota que estas acostumbrado a escribir codigo, madre de dios lo rapido que escribes!Drakkar escribió: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.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
Si tu usuario no es pi, cambias esta lineaCódigo: Seleccionar todo
echo $USER
Y reemplazas pi, por el usuario que te dio con el anterior comando.Código: Seleccionar todo
file="/home/pi/temp.log"
Cuando he actualizado la pagina ya tenia tu comentario

Mi usuario es pi.
Gracias por responder a la velocidad de la luz !
A la tarde pruebo todo. Thanks !
