我有一个 DHT22 连接到我的树莓派 4 型号 B,连接如下:
我为树莓派写了一个小脚本,它应该得到温度和湿度。我通过本地网络的 IP 地址使该脚本可用。为此,我使用了两个库来试图找出错误:Flask 和 Jaymon/Endpoints。
在本地运行脚本时,一切正常。当我使用 Postman 调用端点时,我得到了预期的温度和湿度。但是,当我第二次调用同一个端点时,我收到以下错误:
RuntimeError: Timed out waiting for PulseIn message. Make sure libgpiod is installed.
发生这种情况时,我需要重新启动网络服务器并重新启动:我可以调用 api 一次并获得正确的结果,但在第二次尝试时失败。
这是我尝试过的脚本之一:
from endpoints import Controller
import adafruit_dht import board
class Default(Controller): def GET(self):
dht_device = adafruit_dht.DHT22(board.D4)
data = {
"temperature": dht_device.temperature,
"humidity": dht_device.humidity
}
return data
该问题在调用 dht_device.temperature/dht_device.humidity 时特别出现。当我忽略它时,我可以毫无问题地调用端点。
需要明确的是:我确实在 Raspberry Pi 上安装了 libgpiod。
编辑:我安装了libgpiod2
,作为建议的答案之一。
有人知道这里可能出现的问题吗?提前致谢!