raspberry dht11 python cpu temperature

dht11 - ¿Conseguir la temperatura de la CPU usando Python?



dht11 raspberry pi 3 python (10)

¿Cómo recupero la temperatura de mi CPU usando Python? (Suponiendo que estoy en Linux)


Como alternativa, puede instalar el paquete lm-sensores, luego instalar PySensors (un enlace python para libsensors).


Cuidar el pyspectator en pip

Requiere python3

>>> import psutil >>> psutil.sensors_temperatures() {''acpitz'': [shwtemp(label='''', current=47.0, high=103.0, critical=103.0)], ''asus'': [shwtemp(label='''', current=47.0, high=None, critical=None)], ''coretemp'': [shwtemp(label=''Physical id 0'', current=52.0, high=100.0, critical=100.0), shwtemp(label=''Core 0'', current=45.0, high=100.0, critical=100.0), shwtemp(label=''Core 1'', current=52.0, high=100.0, critical=100.0), shwtemp(label=''Core 2'', current=45.0, high=100.0, critical=100.0), shwtemp(label=''Core 3'', current=47.0, high=100.0, critical=100.0)]}


Dependiendo de su distribución de Linux, puede encontrar un archivo en /proc que contiene esta información. Por ejemplo, esta página sugiere /proc/acpi/thermal_zone/THM/temperature .



La lectura de archivos en / sys / class / hwmon / hwmon * / temp1_ * funcionó para mí, pero AFAIK no existen estándares para hacerlo de manera limpia. De todos modos, puedes intentar esto y asegurarte de que proporciona la misma cantidad de CPU que muestra la utilidad cmdline de " sensores ", en cuyo caso puedes asumir que es confiable.

from __future__ import division import os from collections import namedtuple _nt_cpu_temp = namedtuple(''cputemp'', ''name temp max critical'') def get_cpu_temp(fahrenheit=False): """Return temperatures expressed in Celsius for each physical CPU installed on the system as a list of namedtuples as in: >>> get_cpu_temp() [cputemp(name=''atk0110'', temp=32.0, max=60.0, critical=95.0)] """ # http://www.mjmwired.net/kernel/Documentation/hwmon/sysfs-interface cat = lambda file: open(file, ''r'').read().strip() base = ''/sys/class/hwmon/'' ls = sorted(os.listdir(base)) assert ls, "%r is empty" % base ret = [] for hwmon in ls: hwmon = os.path.join(base, hwmon) label = cat(os.path.join(hwmon, ''temp1_label'')) assert ''cpu temp'' in label.lower(), label name = cat(os.path.join(hwmon, ''name'')) temp = int(cat(os.path.join(hwmon, ''temp1_input''))) / 1000 max_ = int(cat(os.path.join(hwmon, ''temp1_max''))) / 1000 crit = int(cat(os.path.join(hwmon, ''temp1_crit''))) / 1000 digits = (temp, max_, crit) if fahrenheit: digits = [(x * 1.8) + 32 for x in digits] ret.append(_nt_cpu_temp(name, *digits)) return ret


Puede probar el módulo PyI2C , puede leer directamente desde el kernel.


Recientemente implementé esto en psutil solo para Linux.

from pyspectator import Cpu from time import sleep cpu = Cpu(monitoring_latency=1) while True: print (cpu.temperature) sleep(1)


Si su Linux es compatible con ACPI, leer pseudoarchivo /proc/acpi/thermal_zone/THM0/temperature (la ruta puede ser diferente, sé que es /proc/acpi/thermal_zone/THRM/temperature en algunos sistemas) debería hacerlo. Pero no creo que exista una manera que funcione en todos los sistemas Linux del mundo, ¡así que tendrás que ser más específico sobre qué Linux tienes exactamente! -)


Sysmon funciona bien. Bien hecho, hace mucho más que medir la temperatura de la CPU. Es un programa de línea de comandos y registra todos los datos que mide en un archivo. Además, es de código abierto y está escrito en python 2.7.

Sysmon: https://github.com/calthecoder/sysmon-1.0.1