我可以使用 python 命令获取树莓派的温度:
os.popen("vcgencmd measure_temp").readline()
但是,当我在设备上部署的 greengrass 上的 lambda 函数(python 2.7)中运行此命令时,它给了我错误:
VCHI 初始化失败
我相信这是因为在容器中运行的 lambda 函数并不知道它正在运行的树莓派。
如何从在 greengrass 上运行的 lambda 函数获取树莓派的温度?
我可以使用 python 命令获取树莓派的温度:
os.popen("vcgencmd measure_temp").readline()
但是,当我在设备上部署的 greengrass 上的 lambda 函数(python 2.7)中运行此命令时,它给了我错误:
VCHI 初始化失败
我相信这是因为在容器中运行的 lambda 函数并不知道它正在运行的树莓派。
如何从在 greengrass 上运行的 lambda 函数获取树莓派的温度?
有两种方法可以读取 CPU 温度 - 一种使用vcgencmd
文件接口,另一种使用文件接口。可能是 greengrass 阻止您运行 vcgencmd,也可能是它也不允许您访问文件接口,但值得一试。该文件位于/sys/class/thermal/thermal_zone0/temp
.
一种方法是使用gpiozero 的CPUTemperature
类:
from gpiozero import CPUTemperature
cpu = CPUTemperature()
print(cpu.temperature)
或者,直接读取文件,并提取温度(正如 gpiozero 在下面所做的那样):
def cpu_temp():
sensor_file = '/sys/class/thermal/thermal_zone0/temp'
with io.open(sensor_file, 'r') as f:
return float(f.readline().strip()) / 1000
print(cpu_temp())