Raspberry 3 GPIO DHT22(AM2301)

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение Yashalta » Сб фев 16, 2019 11:50 am

Подскажите не понимаю!
Я создал 2 свойства "ThisComputer.HumFromDHT22" и "ThisComputer.TempFromDHT22" и они прекрасно получают сведения с датчика "DHT22".
А как теперь эти свойства привязать к простым устройствам "TempSensor01" и "HumSensor01" я не понимаю! Все мои мысли сводятся к написанию "костыля", что не есть правильно! :(
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение fandaymon » Сб фев 16, 2019 4:02 pm

Yashalta писал(а):
Сб фев 16, 2019 11:50 am
Подскажите не понимаю!
Я создал 2 свойства "ThisComputer.HumFromDHT22" и "ThisComputer.TempFromDHT22" и они прекрасно получают сведения с датчика "DHT22".
А как теперь эти свойства привязать к простым устройствам "TempSensor01" и "HumSensor01" я не понимаю! Все мои мысли сводятся к написанию "костыля", что не есть правильно! :(
А зачем привязывать свойства к ПУ? Передавай температуру и влажность прямо в TempSensor01 и HumSensor01
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение Yashalta » Сб фев 16, 2019 8:23 pm

fandaymon писал(а):
Сб фев 16, 2019 4:02 pm
А зачем привязывать свойства к ПУ? Передавай температуру и влажность прямо в TempSensor01 и HumSensor01
Я может не правильно выразился...
Вот тут у меня и проблема не знаю как прямо TempSensor01 и HumSensor01 передавать данные с "ThisComputer.HumFromDHT22" и "ThisComputer.TempFromDHT22" или может не нужно создавать свойства "ThisComputer.HumFromDHT22" и "ThisComputer.TempFromDHT22" а как-то сразу передавать температуру и влажность в TempSensor01 и HumSensor01?
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение fandaymon » Сб фев 16, 2019 8:29 pm

Yashalta писал(а):
Сб фев 16, 2019 8:23 pm
fandaymon писал(а):
Сб фев 16, 2019 4:02 pm
А зачем привязывать свойства к ПУ? Передавай температуру и влажность прямо в TempSensor01 и HumSensor01
Я может не правильно выразился...
Вот тут у меня и проблема не знаю как прямо TempSensor01 и HumSensor01 передавать данные с "ThisComputer.HumFromDHT22" и "ThisComputer.TempFromDHT22" или может не нужно создавать свойства "ThisComputer.HumFromDHT22" и "ThisComputer.TempFromDHT22" а как-то сразу передавать температуру и влажность в TempSensor01 и HumSensor01?
Код, который по ссылочке, заносит данные в TempSensor01 и HumSensor01
http://majordomo.smartliving.ru/forum/v ... 976#p69168
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение Yashalta » Сб фев 16, 2019 11:05 pm

fandaymon писал(а):
Сб фев 16, 2019 8:29 pm
Код, который по ссылочке, заносит данные в TempSensor01 и HumSensor01
http://majordomo.smartliving.ru/forum/v ... 976#p69168
я добавил код который вы указали в свой скрипт, на python и мне выдает ошибку

Код: Выделить всё

root@majordomo:/home/pi/scripts# python dht22.py 
Temp=24.0*C  Humidity=21.3%
Traceback (most recent call last):
  File "dht22.py", line 53, in <module>
    f=urllib.urlopen(link)
NameError: name 'urllib' is not defined
root@majordomo:/home/pi/scripts#
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение fandaymon » Вс фев 17, 2019 12:24 am

Yashalta писал(а):
Сб фев 16, 2019 11:05 pm
fandaymon писал(а):
Сб фев 16, 2019 8:29 pm
Код, который по ссылочке, заносит данные в TempSensor01 и HumSensor01
http://majordomo.smartliving.ru/forum/v ... 976#p69168
я добавил код который вы указали в свой скрипт, на python и мне выдает ошибку

Код: Выделить всё

root@majordomo:/home/pi/scripts# python dht22.py 
Temp=24.0*C  Humidity=21.3%
Traceback (most recent call last):
  File "dht22.py", line 53, in <module>
    f=urllib.urlopen(link)
NameError: name 'urllib' is not defined
root@majordomo:/home/pi/scripts#
В начале скрипта надо написать import urllib
За это сообщение автора fandaymon поблагодарил:
Yashalta (Вс фев 17, 2019 11:29 am)
Рейтинг: 1.16%
Аватара пользователя
omship
Сообщения: 8
Зарегистрирован: Вс июн 11, 2017 11:07 am
Откуда: Краснодар
Благодарил (а): 6 раз
Поблагодарили: 0

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение omship » Чт янв 30, 2020 12:37 am

Я создал скрипт temphum, добавил код

Код: Выделить всё

$answer = shell_exec('/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 20');
$pattern = '(\d+\.*\d*)';
preg_match_all($pattern, $answer, $matches);
setGlobal("TempSensor03.value",$matches[0][1]);
setGlobal("HumSensor01.value",$matches[0][0]);
, добавил в onNewMinute

Код: Выделить всё

if($m%5 == 0){
runScript('temphum'); 
}
, теперь каждые 5 минут заносит данные в TempSensor03 и HumSensor01
#ЗасебяизаСашку!
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение fandaymon » Чт янв 30, 2020 1:20 am

omship писал(а):
Чт янв 30, 2020 12:37 am
Я создал скрипт temphum, добавил код

Код: Выделить всё

$answer = shell_exec('/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 20');
$pattern = '(\d+\.*\d*)';
preg_match_all($pattern, $answer, $matches);
setGlobal("TempSensor03.value",$matches[0][1]);
setGlobal("HumSensor01.value",$matches[0][0]);
, добавил в onNewMinute

Код: Выделить всё

if($m%5 == 0){
runScript('temphum'); 
}
, теперь каждые 5 минут заносит данные в TempSensor03 и HumSensor01
Можно конечно и так, но это какое-то извращение - вычленять шаблоном результат, вместо того чтобы просто его отправить в МДМ 8-) Если хочется работать со стороны МДМ, можно же просто поменять вывод программы AdafruitDHT.py, чтобы она выводила 2 числа, разделенных пробелом и воспользоватся

Код: Выделить всё

explode(' ',$answer);
За это сообщение автора fandaymon поблагодарил:
omship (Чт янв 30, 2020 11:14 pm)
Рейтинг: 1.16%
Аватара пользователя
omship
Сообщения: 8
Зарегистрирован: Вс июн 11, 2017 11:07 am
Откуда: Краснодар
Благодарил (а): 6 раз
Поблагодарили: 0

Re: Raspberry 3 GPIO DHT22(AM2301)

Сообщение omship » Чт янв 30, 2020 11:13 pm

в файле AdafruitDHT.py эту строку

Код: Выделить всё

print('Temp={0:0.1f}*  Humidity={1:0.1f}%'.format(temperature, humidity))
изменил на эту

Код: Выделить всё

print('{0:0.1f} {1:0.1f}'.format(temperature, humidity))
в скрипте temphum изменил на

Код: Выделить всё

$answer = shell_exec('/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 20');
$matches = explode(' ',$answer);
setGlobal("TempSensor03.value",$matches[1]);
setGlobal("HumSensor01.value",$matches[0]); 
теперь все четко мана...
#ЗасебяизаСашку!
Ответить