【发布时间】:2020-10-12 11:13:51
【问题描述】:
第一次发帖,我遇到了这个问题。
(一些背景) 我有一个树莓派 PiZero,我正在开发一个气象站,到目前为止它记录温度、湿度和压力,并将数据发送到 windy.com API。最近我添加了一个翻斗式雨量计。 这有 2 根电线连接到 GPIO,当水桶倾斜时,它会立即与电路竞争,基本上是按下按钮!
这里的目标是每小时计算一次小费,然后重新设置。在重置之前,将此数据发送到日志文件 + Windy API。这是我正在努力解决的部分。
我很擅长 python,但我正处于真正的写作障碍时刻,这是我从 sn-ps 拼凑而成的一个小程序,它计算了测试技巧
/usr/bin/python3
import requests
from gpiozero import Button
import time
rain_sensor = Button(27)
bucket_size = 0.2794
count = 0
def bucket_tipped():
global count
count = count + 1
print(count * bucket_size)
def reset_rainfall():
global count
count = 0
#display and log results
def timed_loop():
reset_rainfall
timeout = time.monotonic() + 3600 # 1 hour from now
while True:
if time.monotonic() > timeout: # break if timeout time is reached
rain_sensor.when_pressed = bucket_tipped
time.sleep(1) # Short sleep so loop can be interupted
continue
print count
# close the log file and exit nicely
GPIO.cleanup()
【问题讨论】:
-
您的代码每 5 秒只记录/打印一次。 GPI add_event_detect 可能会增加,但您每 5 秒只记录一次。我不确定的一件事是“按钮按下”是如何工作的。可能是您正在监听一个从未发生过的事件。如果 add_event_detect 回调从未发生,那么您将每 5 秒记录一次 0。
-
谢谢,如果我在 t 运行时手动操作存储桶,我会收到一个值。然而,它然后重置回 0。我如何在特定的人身上累积这个然后重置?
-
我建议不要预先计算每小时总和或类似的东西。我建议存储原始数据并从该数据中得出降雨率。您可以使用带有 groupby 的 pandas 来计算每小时小费。
标签: python weather raspberry-pi4 raspberry-pi-zero