Raspberry 4 GPIO DHT22
Модератор: immortal
Raspberry 4 GPIO DHT22
Здравствуйте, помогите подключить датчик DHT22 через GPIO.
Температуру и влажность показывает из консоли командой
python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py
как и чем данные подтянуть в MD?
Экспериментировал, читая ветку Raspberry 3 GPIO DHT22(AM2301). не получается
код файла AdafruitDHT.py:
import time
import board
import adafruit_dht
# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D18)
# you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
# This may be necessary on a Linux single board computer like the Raspberry Pi,
# but it will not work in CircuitPython.
# dhtDevice = adafruit_dht.DHT22(board.D18, use_pulseio=False)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(
"Temp: {:.1f} F / {:.1f} C Humidity: {}% ".format(
temperature_f, temperature_c, humidity
)
)
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
Спасибо
Температуру и влажность показывает из консоли командой
python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py
как и чем данные подтянуть в MD?
Экспериментировал, читая ветку Raspberry 3 GPIO DHT22(AM2301). не получается
код файла AdafruitDHT.py:
import time
import board
import adafruit_dht
# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D18)
# you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
# This may be necessary on a Linux single board computer like the Raspberry Pi,
# but it will not work in CircuitPython.
# dhtDevice = adafruit_dht.DHT22(board.D18, use_pulseio=False)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(
"Temp: {:.1f} F / {:.1f} C Humidity: {}% ".format(
temperature_f, temperature_c, humidity
)
)
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
Спасибо
-
- Сообщения: 1553
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Raspberry 4 GPIO DHT22
Что именно не получается?Gena писал(а): ↑Пт дек 11, 2020 7:59 pmЗдравствуйте, помогите подключить датчик DHT22 через GPIO.
Температуру и влажность показывает из консоли командой
python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py
как и чем данные подтянуть в MD?
Экспериментировал, читая ветку Raspberry 3 GPIO DHT22(AM2301). не получается
В принципе МДМ сейчас поддерживает сценарии, написанные на питоне (по крайней мере альфа-ветка)
Re: Raspberry 4 GPIO DHT22
Здравствуйте Уважаемый fandaymon
Подскажите, пожалуйста, правильно все ли я сделал:
1. в ThisComputer создал два свойства TempFromDHT22 и HumFromDHT22
2. тут же в "метод" - создал getTempFromDHT22 и вставил код:
$answer = shell_exec('python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py');
$matches = explode(' ',$answer);
setGlobal("TempSensor01.value",$matches[1]);
setGlobal("HumSensor01.value",$matches[0]);
3. в ClockChime - onNewMinute - вставил код:
if($m%5 == 0){
runScript('temphum');
}
и выполнил
в МДМ не отображается температура и влажность
ТempSensor01 - нет
HumSensor01 - нет
Подскажите, пожалуйста, алгоритм? Или ссылки, где про это все почитать?
Не судите строго. Я только начал изучать МДМ.
Заранее благодарен
Подскажите, пожалуйста, правильно все ли я сделал:
1. в ThisComputer создал два свойства TempFromDHT22 и HumFromDHT22
2. тут же в "метод" - создал getTempFromDHT22 и вставил код:
$answer = shell_exec('python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py');
$matches = explode(' ',$answer);
setGlobal("TempSensor01.value",$matches[1]);
setGlobal("HumSensor01.value",$matches[0]);
3. в ClockChime - onNewMinute - вставил код:
if($m%5 == 0){
runScript('temphum');
}
и выполнил
в МДМ не отображается температура и влажность
ТempSensor01 - нет
HumSensor01 - нет
Подскажите, пожалуйста, алгоритм? Или ссылки, где про это все почитать?
Не судите строго. Я только начал изучать МДМ.
Заранее благодарен
-
- Сообщения: 1553
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Raspberry 4 GPIO DHT22
Gena писал(а): ↑Пт дек 11, 2020 9:57 pmЗдравствуйте Уважаемый fandaymon
Подскажите, пожалуйста, правильно все ли я сделал:
1. в ThisComputer создал два свойства TempFromDHT22 и HumFromDHT22
2. тут же в "метод" - создал getTempFromDHT22 и вставил код:
$answer = shell_exec('python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py');
$matches = explode(' ',$answer);
setGlobal("TempSensor01.value",$matches[1]);
setGlobal("HumSensor01.value",$matches[0]);
3. в ClockChime - onNewMinute - вставил код:
if($m%5 == 0){
runScript('temphum');
}
и выполнил
в МДМ не отображается температура и влажность
ТempSensor01 - нет
HumSensor01 - нет
Подскажите, пожалуйста, алгоритм? Или ссылки, где про это все почитать?
Не судите строго. Я только начал изучать МДМ.
Заранее благодарен
Конечно не правильно. Какая-то каша несъедобная получилась. Надо создать 2 объекта - датчик температуры и датчик влажности. (Ну или один, у которого есть и температура и влажность) Проще всего создавать в Простых устройствах - Новое простое устройство, класс - Датчик температуры и поставить галочку создать объект автоматически. При этом добавятся объект Датчик температуры с какими-то именем - например TempSensor01 (но не обязательно имя будет таким). Потом добавить ещё одно простое устройство - Датчик влажности. У этих 2 объектов будут свойства value. Команда setGlobal заполняет свойство указанное справа от точки соответствующего объекта, указанного слева от точки - т.е. формат такой - объект.свойство. Если в команде sg объект не указан, тогда по умолчанию используется объект ThisComputer
Комнда runScript вызывает сценарий. Для того чтобы его вызывать, нужно этот сценарий создать и в него добавить весь этот код запускающий питон и т.д.
Начинать конечно лучше всего с Базы знаний и https://kb.mjdm.ru/faq/#toc37
- Рейтинг: 2.33%
Re: Raspberry 4 GPIO DHT22
Здравствуйте Уважаемый fandaymon
Как Вы и писали, создал в Простых устройствах - Новые простые устройства, класс - Датчик температуры и Датчик влажности ( создалось автоматически: Sensor_temp02 и Sensor_humidity02)
Затем создал сценарий файл temphum с кодом:
$answer = shell_exec('python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py');
$matches = explode(' ',$answer);
setGlobal("Sensor_temp02.value",$matches[1]);
setGlobal("Sensor_humidity02.value",$matches[0]);
в ClockChime - onNewMinute - вставил код:
if($m%5 == 0){
runScript('temphum');
}
В свойствах value этих объектов значения не отображаются ((src: /api.php/method/ClockChime.onNewMinute?m_c_s[0]=ClockChime.onNewMinute&r_s_m=1&no_session=1)), график - сплошная линия.
Я подозреваю, что проблема в коде файла AdafruitDHT.py
import time
import board
import adafruit_dht
# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D4)
# you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
# This may be necessary on a Linux single board computer like the Raspberry Pi,
# but it will not work in CircuitPython.
# dhtDevice = adafruit_dht.DHT22(board.D4, use_pulseio=False)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(
" {:.1f} C {}% ".format(
temperature_c, humidity
)
)
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
В консоли командой python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py значения отображаются
Подскажите, пожалуйста, в чем ошибка
Заранее благодарен
Как Вы и писали, создал в Простых устройствах - Новые простые устройства, класс - Датчик температуры и Датчик влажности ( создалось автоматически: Sensor_temp02 и Sensor_humidity02)
Затем создал сценарий файл temphum с кодом:
$answer = shell_exec('python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py');
$matches = explode(' ',$answer);
setGlobal("Sensor_temp02.value",$matches[1]);
setGlobal("Sensor_humidity02.value",$matches[0]);
в ClockChime - onNewMinute - вставил код:
if($m%5 == 0){
runScript('temphum');
}
В свойствах value этих объектов значения не отображаются ((src: /api.php/method/ClockChime.onNewMinute?m_c_s[0]=ClockChime.onNewMinute&r_s_m=1&no_session=1)), график - сплошная линия.
Я подозреваю, что проблема в коде файла AdafruitDHT.py
import time
import board
import adafruit_dht
# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D4)
# you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
# This may be necessary on a Linux single board computer like the Raspberry Pi,
# but it will not work in CircuitPython.
# dhtDevice = adafruit_dht.DHT22(board.D4, use_pulseio=False)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(
" {:.1f} C {}% ".format(
temperature_c, humidity
)
)
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
В консоли командой python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py значения отображаются
Подскажите, пожалуйста, в чем ошибка
Заранее благодарен
-
- Сообщения: 1553
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Raspberry 4 GPIO DHT22
Добавить в сценарий отображение ответа и запустить сценарий вручнуюGena писал(а): ↑Сб дек 12, 2020 1:21 pmЗдравствуйте Уважаемый fandaymon
Как Вы и писали, создал в Простых устройствах - Новые простые устройства, класс - Датчик температуры и Датчик влажности ( создалось автоматически: Sensor_temp02 и Sensor_humidity02)
Затем создал сценарий файл temphum с кодом:
$answer = shell_exec('python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py');
$matches = explode(' ',$answer);
setGlobal("Sensor_temp02.value",$matches[1]);
setGlobal("Sensor_humidity02.value",$matches[0]);
в ClockChime - onNewMinute - вставил код:
if($m%5 == 0){
runScript('temphum');
}
В свойствах value этих объектов значения не отображаются, график - сплошная линия.
Я подозреваю, что проблема в коде файла AdafruitDHT.py
import time
import board
import adafruit_dht
# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D4)
# you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
# This may be necessary on a Linux single board computer like the Raspberry Pi,
# but it will not work in CircuitPython.
# dhtDevice = adafruit_dht.DHT22(board.D4, use_pulseio=False)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(
" {:.1f} C {}% ".format(
temperature_c, humidity
)
)
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
В консоли командой python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py значения отображаются
Подскажите, пожалуйста, в чем ошибка
Заранее благодарен
Код: Выделить всё
$answer = shell_exec('python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py');
echo $answer;
$matches = explode(' ',$answer);
setGlobal("Sensor_temp02.value",$matches[1]);
setGlobal("Sensor_humidity02.value",$matches[0]);
- Рейтинг: 1.16%
Re: Raspberry 4 GPIO DHT22
Уважаемый fandaymon
Я может не правильно выразился
Данные видны в консоле Raspberry при вводе
pi@raspberrypi:~ $ python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py
19.0 C 56%
19.0 C 56%
И я прошу прощения, не могли бы Вы подсказать, как добавить в сценарий отображение ответа или посмотреть где-то пример
Не судите строго. Я уже говорил, что только начинаю изучать МДМ.
Заранее благодарен
Я может не правильно выразился
Данные видны в консоле Raspberry при вводе
pi@raspberrypi:~ $ python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py
19.0 C 56%
19.0 C 56%
И я прошу прощения, не могли бы Вы подсказать, как добавить в сценарий отображение ответа или посмотреть где-то пример
Не судите строго. Я уже говорил, что только начинаю изучать МДМ.
Заранее благодарен
-
- Сообщения: 1553
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Raspberry 4 GPIO DHT22
Я же добавил команду echo $answer; - при запуске сценария вручную она выведет что там вернул вызов скрипта на питонеGena писал(а): ↑Сб дек 12, 2020 3:34 pmУважаемый fandaymon
Я может не правильно выразился
Данные видны в консоле Raspberry при вводе
pi@raspberrypi:~ $ python3 Adafruit_CircuitPython_DHT/examples/AdafruitDHT.py
19.0 C 56%
19.0 C 56%
И я прошу прощения, не могли бы Вы подсказать, как добавить в сценарий отображение ответа или посмотреть где-то пример
Не судите строго. Я уже говорил, что только начинаю изучать МДМ.
Заранее благодарен
- Рейтинг: 1.16%
Re: Raspberry 4 GPIO DHT22
Уважаемый fandaymon
Извините, я не увидел изменения в коде
Я заменил свой код на Ваш - показаний нет
Sensor_temp02.value (H) - (src: /objects/?script=temphum)
Sensor_humidity02.value (H) - (src: /objects/?script=temphum)
Что делать? Не знаю.
Извините, я не увидел изменения в коде
Я заменил свой код на Ваш - показаний нет
Sensor_temp02.value (H) - (src: /objects/?script=temphum)
Sensor_humidity02.value (H) - (src: /objects/?script=temphum)
Что делать? Не знаю.