gpt4 book ai didi

linux - 帮助创建温度湿度脚本

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:18 25 4
gpt4 key购买 nike

我是一个完全没有经验的 A 级学生,试图掌握 python 来完成作业。我有一周的时间来完成它——我对做什么知之甚少,也没有编码经验——我真的被困住了,在他论坛上的人看来可能很愚蠢。

我必须使用树莓派和 DHT22 传感器创建一个温度和湿度记录器。我要编写一个脚本来生成一个休眠 10 秒的循环 - 我将运行该脚本两天以收集足以生成图表的数据。到目前为止,我拥有的代码是这样的,但它不起作用 - 可能出于某些明显的原因 - 数据需要在 leafpad 文件的两列中出现。

# Assign header details to STRING variables - change manually 
txt_studentid = '999'
txt_pi_location = '999.99999'
txt_pi_latitude = '999.99999'
txt_pi_longitude = '999.99999'

import Adafruit_DHT
pin = 4
sensor = Adafruit_DHT.DHT22
# Import Time module import time
# open file to write
f = open('/home/pi/y_data.txt','w')
f.write(txt_studentid)
f.write('\n')
f.write(txt_pi_location)
f.write('\n')
f.write(txt_pi_latitude)
f.write('\n')
f.write(txt_pi_longitude)
f.write('\n')
f.close()

while True:
# store off the date and time details for this
sample num_month = time.localtime().tm_mon
num_day = time.localtime().tm_mday
num_hour = time.localtime().tm_hour
num_min = time.localtime().tm_min
num_sec = time.localtime().tm_sec
num_humidity, num_temperature = Adafruit_DHT.read_retry(sensor, pin)

txt_month = str(num_month)
txt_day = str(num_day)
txt_hour = str(num_hour)
txt_min = str(num_min)
txt_sec = str(num_sec)
txt_humidity = str(num_humidity)
txt_temperature = str(num_temperature)

f = open('('/home/pi/my_data.txt','a')
f.write(txt_month)
f.write(',')
f.write(txt_day)
f.write(',')
f.write(txt_hour)
f.write(',')
f.write(txt_min)
f.write(',')
f.write(txt_sec)
f.write(',')
# write the temperature and humidity to file
f,write(txt_humidity)
f.write(',')
f,write(txt_temperature)
f.write(',')
# write new line
f.write('\n')
# close the file
f.close()
# wait for ten seconds
time.sleep(10)

最佳答案

你快到了。您编写的代码有点不必要地长,但如果您是新手并且不知道技巧和正确的功能,那是正常的 ;)
但是,它仍在进行一些小的更改!
您需要在读取传感器的行之后缩进所有内容。否则它不会包含在您的循环中,您会继续读取值但不会写入它们。
然后两条评论搞砸了,首先你评论了你绝对需要的 import time,然后在 while True: 你移动了 sample 之后的评论> 进入下一行。
您还写了两次 f,write(...。请注意 , 而不是
最后,您对 open 的最后一次调用仍然包含 Lambert 已经在谈论的 ('
最后三个问题是语法问题,其实应该由python自己指出。

我还建议将文件路径放入顶部某处自己的变量中,这样您就可以更轻松地更改它。
此外,没有必要为时间戳的所有部分的数字和字符串版本都保留一个变量。只需获取时间一次,然后在格式字符串中读取其属性。参见 format string syntax看看我的代码。

这就是我编写脚本的方式:

import time
import Adafruit_DHT

# Assign header details to STRING variables - change manually
txt_studentid = '999'
txt_pi_location = '999.99999'
txt_pi_latitude = '999.99999'
txt_pi_longitude = '999.99999'

filepath = '/home/pi/my_data.txt'
pin = 4
sensor = Adafruit_DHT.DHT22
# Import Time module import time
# open file to write
with open(filepath, 'w') as f:
f.write(txt_studentid + '\n')
f.write(txt_pi_location + '\n')
f.write(txt_pi_latitude + '\n')
f.write(txt_pi_longitude + '\n')

line_template = ('{time.tm_mon},{time.tm_mday},{time.tm_hour},{time.tm_min},' +
'{time.tm_sec},{hum},{temp}\n')
while True:
# get current time
sampletime = time.localtime()
# sample sensor values
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
# append time and values to file
with open(filepath, 'a') as f:
f.write(line_template.format(time=sampletime,
hum=humidity,
temp=temperature))
# wait 10 seconds
time.sleep(10)

关于linux - 帮助创建温度湿度脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com