У меня есть DHT22, подключенный к моей raspberry pi 4 модели B, подключенный следующим образом: введите описание изображения здесь
И я написал небольшой скрипт для raspberry pi, который должен определять температуру и влажность. Я сделал этот скрипт доступным через 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.tempera / dht_device.humidity . Если я опущу это, я могу без проблем вызвать конечную точку.
Для ясности: я установил libgpiod на Raspberry Pi. РЕДАКТИРОВАТЬ : Я установил libgpiod2
, как было предложено в одном из ответов.
Кто-нибудь знает, в чем может быть проблема? Заранее спасибо!