Eu sei que você pode obter a temperatura usando a ferramenta vcgencmd, mas eu queria saber se existe alguma API que eu possa usar em C para obter a temperatura programaticamente sem ler o stdout do vcgencmd?
c
temperature
opc0de
fonte
fonte
Respostas:
Você pode ler o arquivo
/sys/class/thermal/thermal_zone0/temp
, conforme especificado nesta resposta . Trata-se de medir a partir da linha de comando, e o arquivo é lido comcat
. Mas você deve conseguir abrir o arquivo em C. A temperatura é retornada em mili-graus centígrados e como números ASCII. Talvez assim, não testado :)fonte
open()
eread()
em vez disso - mas YMMV. Há também um "libsysfs", mas foi abandonado e os desenvolvedores do kernel explicitamente disseram às pessoas para ficarem longe dele.Como a @Frepa disse, agora existe um driver térmico de kernel para o RaspberryPi, portanto a maneira mais fácil é usá-lo. Até onde eu sei, não é assim que
vgencmd
funciona. Foi capaz de ler a temperatura mesmo antes da existência do driver térmico do kernel. Ele está usando um mecanismo de comunicação especial disponível no RaspberryPi chamadomailbox
para se comunicar com o VideoCore OS em execução na GPU. Está parcialmente documentado aqui .fonte