我有一个DHT22连接到我的raspberry pi 4型号B,连接方式如下:
我为树莓圆周率写了一个小脚本,应该可以得到温度和湿度。我通过本地网络的ip地址提供了这个脚本。为此,我使用了两个库试图找出错误:Flask和Jaymon/Endpoints
在本地运行脚本时,一切都很好。当我使用Postman调用端点时,我得到了预期的温度和湿度。但是,当我第二次调用同一端点时,我收到以下错误:
RuntimeError: Timed out waiting for PulseIn message. Make sure libgpiod is installed.
当这种情况发生时,我需要重新启动Web服务器,它会重新启动:我可以调用一次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.湿度时会出现此问题。如果不考虑这一点,我可以毫无问题地调用端点
明确地说:我确实在Raspberry Pi上安装了libgpiod。
编辑:我安装了libgpiod2
,这是答案之一
有人知道这里可能有什么问题吗?提前谢谢
你写道:
你需要像这样的东西:
您遇到的问题是,每次调用端点时都会创建一个新实例。第一个实例已正确创建并可以访问信息,但第二个和连续的实例被第一个实例阻止
我在RaspberryPi的Raspbian stretch OS中遇到了这个错误。 使用以下步骤解决
您可以尝试使用下面的命令安装libgpiod2软件包
如果您得到的错误为“E:无法找到程序包libgpiod2”
那么, 使用deb软件包安装软件包
包url:https://packages.debian.org/buster/libgpiod2
如果由于与libgpiod1的包冲突而出现错误,请卸载libgpiod1包
然后尝试安装该软件包
通过安装libgpiod2,Pi3的其他地方解决了这一问题:
https://github.com/adafruit/Adafruit_Blinka/issues/259
相关问题 更多 >
编程相关推荐