我有一个温度传感器连接到我的rpi并运行python脚本。我可以从cli启动python脚本,它将运行输出temps直到我停止它。
#!/usr/bin/env python
import os
def sensor():
for i in os.listdir('/sys/bus/w1/devices'):
if i != 'w1_bus_master1':
ds18b20 = i
return ds18b20
def read(ds18b20):
location = '/sys/bus/w1/devices/' + ds18b20 + '/w1_slave'
tfile = open(location)
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
celsius = temperature / 1000
farenheit = (celsius * 1.8) + 32
return celsius, farenheit
def loop(ds18b20):
while True:
if read(ds18b20) != None:
print "Current temperature : %0.3f C" % read(ds18b20)[0]
print "Current temperature : %0.3f F" % read(ds18b20)[1]
def kill():
quit()
if __name__ == '__main__':
try:
serialNum = sensor()
loop(serialNum)
except KeyboardInterrupt:
kill()
我已配置supervisor并运行临时配置。它在重新启动时启动并开始在文件中输出临时值,但最终会停止记录。我没有任何错误。
[supervisord]
nodaemon=true
[program:whelping-box-temp]
command=python /home/pi/workspace/my-donutz/whelping-box-temp-sensor.py
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/whelping-box-temp.err.log
stdout_logfile=/var/log/supervisor/whelping-box-temp.out.log
我假设我不想继续记录到rpi上的文件,因为它最终会耗尽空间并随着时间的推移而降级。
Current temperature : 24.750 C
Current temperature : 76.662 F
Current temperature : 24.750 C
Current temperature : 76.662 F
Current temperature : 24.750 C
Current temperature : 76.662 F
Current temperature : 24.750 C
Current temperature : 76.550 F
Current temperature : 24.812 C
Current temperature : 76.662 F
Current temperature : 24.812 C
Current temperature : 76.662 F
Current temp
最后一行不是输入错误,输出似乎停止了。如果我删除日志文件并重新启动它将在下次执行相同的操作。
我是否应该采用另一种方式在rpi上配置主管,甚至根本不使用主管?为什么它会在一段时间后停止记录?最终我会让rpi做一些其他的事情,当temp在某个地方,但我希望能够登录并查看已经发生的事情的某种历史。在rpi上执行此操作的正确方法是什么?