2014-3-9 13:40:26 [显示全部楼层]
4965浏览
查看: 4965|回复: 0

用Python小程序获取树莓派的CPU和GPU温度

[复制链接]
本文由 极客范 - Boyd Wang 翻译自 rollcode。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。

在这篇文章里我将为你展示如何使用Python做一个简单的程序来监视你的树莓派温度。可能你还不知道,树莓派内置了一个传感器你可以用来获取树莓派的CPU和GPU温度。

这对于保护你的设备非常有用,举个例子:你可以在树莓派温度过高的时候关掉它或者在温度过热的时候报警。

首先,要获取树莓派的温度,你可以用下面的Python小程序:

[backcolor=rgb(248, 248, 255) !important]












[color=rgb(170, 170, 170) !important]1

[color=rgb(170, 170, 170) !important]2

[color=rgb(170, 170, 170) !important]3

[color=rgb(170, 170, 170) !important]4

[color=rgb(170, 170, 170) !important]5

[color=rgb(170, 170, 170) !important]6

[color=rgb(170, 170, 170) !important]7

[color=rgb(170, 170, 170) !important]8

[color=rgb(170, 170, 170) !important]9

[color=rgb(170, 170, 170) !important]10

[color=rgb(170, 170, 170) !important]11

[color=rgb(170, 170, 170) !important]12

[color=rgb(170, 170, 170) !important]13

[color=rgb(170, 170, 170) !important]14

[color=rgb(170, 170, 170) !important]15

[color=rgb(170, 170, 170) !important]16

[color=rgb(170, 170, 170) !important]17

[color=rgb(170, 170, 170) !important]18

[color=rgb(170, 170, 170) !important]19

[color=rgb(170, 170, 170) !important]20

[color=rgb(170, 170, 170) !important]21

[color=rgb(170, 170, 170) !important]22


[color=teal !important]import [color=teal !important]commands

[color=teal !important]def [color=teal !important]get_cpu_temp[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important]    [color=rgb(0, 45, 122) !important]tempFile[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]open[color=rgb(51, 51, 51) !important]([color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"/sys/class/thermal/thermal_zone0/temp"[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important]    [color=rgb(0, 45, 122) !important]cpu_temp[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]tempFile[color=rgb(51, 51, 51) !important].[color=teal !important]read[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important]    [color=rgb(0, 45, 122) !important]tempFile[color=rgb(51, 51, 51) !important].[color=teal !important]close[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important]    return[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]float[color=rgb(51, 51, 51) !important](cpu_temp[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]/[color=rgb(0, 153, 153) !important]1000
[color=rgb(0, 111, 224) !important]    [color=rgb(184, 92, 0) !important]# Uncomment the next line if you want the temp in Fahrenheit
[color=rgb(0, 111, 224) !important]    [color=rgb(184, 92, 0) !important]#return float(1.8*cpu_temp)+32

[color=teal !important]def [color=teal !important]get_gpu_temp[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important]    [color=rgb(0, 45, 122) !important]gpu_temp[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]commands[color=rgb(51, 51, 51) !important].[color=teal !important]getoutput[color=rgb(51, 51, 51) !important]([color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'/opt/vc/bin/vcgencmd measure_temp'[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]replace[color=rgb(51, 51, 51) !important]([color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'temp='[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]''[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]replace[color=rgb(51, 51, 51) !important]([color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'\'C'[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]''[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important]    return[color=rgb(0, 111, 224) !important]  [color=rgb(128, 0, 128) !important]float[color=rgb(51, 51, 51) !important](gpu_temp[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important]    [color=rgb(184, 92, 0) !important]# Uncomment the next line if you want the temp in Fahrenheit
[color=rgb(0, 111, 224) !important]    [color=rgb(184, 92, 0) !important]# return float(1.8* gpu_temp)+32

[color=teal !important]def [color=teal !important]main[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important]    print[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"CPU temp: "[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=teal !important]str[color=rgb(51, 51, 51) !important]([color=teal !important]get_cpu_temp[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important]    print[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"GPU temp: "[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=teal !important]str[color=rgb(51, 51, 51) !important]([color=teal !important]get_gpu_temp[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])

if[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]__name__[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]==[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'__main__'[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important]    [color=teal !important]main[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])



这里面有两个方法:get_cpu_tempget_gpu_temp。它们俩都返回一个float型的摄氏温度值。(如果你想使用华氏温度,打开里面的两行注释)。现在,让我们把所有信息输出到树莓派LCD屏上吧。

结果是这样的:

原作者已经把完整的Python程序上传到了dropbox上:
https://www.dropbox.com/s/e04v8vnus1hwrm0/rpy_cpu_gpu_temp.py



原文链接: rollcode 翻译: 极客范- Boyd Wang

译文链接: http://www.geekfan.net/6317/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail