Добавляем датчик температуры DHT11/DHT22, AM2302 через GPIO в Domoticz

15 декабря 2018, 17:49

Добавим датчики температуры и влажности которые подключаются через GPIO Raspberry Pi

Напишем скрипт и добавим автоматический запуск для считывания показаний, приступим...

Что такое GPIO?

Аббревиатура с английского расшифровывается как: General-purpose Input/Output. Это интерфейс ввода/вывода общего назначения, к которым можно подключать разнообразные датчики, исполнительные устройства, дисплеи, контроллеры, и т.д и т.п

Как выглядит интерфейс GPIO?

Это разъем, который содержит набор из пинов и размещен непосредственно на плате Raspberry Pi:

  • В старых моделях (A и B) - 26 шт. (+8 шт. отдельным разъемом);
  • В новых моделях (A+, B+ и B2) - 40 шт. (показан на скриншоте)

Распиновка разъема GPIO в Raspberry Pi A+, B+

Пины в GPIO могут выполнять 3 функции:

  • подача электричества определенного напряжения;
  • заземление;

  • прием/отправка сигналов;

Добавим виртуальный датчик, нужен будет IDX - это номер который присвоит ему система умного дома Domoticz

  1. Настройка-Оборудование
  2. В разделе Тип: выбираете - Dummy (Does nothing, use for only virtual switch), указываете имя

  3. Нажимайте добавить, появится новая запись

  4. Выберите создать виртуальные датчики

  5. Указываете имя, Тип датчика: Температура и влажность - OK

  6. Переходим в Настройка-Устройства в открывшемся окне находим созданный вами датчик и запоминаем его IDX

Инструкция в картинках

Подключение датчика DHT11

Так как все эти датчики практически одинаковые, рассматривать будем на примере DHT11

  • Отключите питание Raspberry Pi во избежание проблем
  • Подключаем датчик к пинам GPIO:

  • Пин №1 это 3v

  • Пин №7 это сигнальный порт (GPIO4) через него и будем получать данные
  • Пин №9 это Ground

Схема подключения датчика DHT11

Установка плагина

sudo apt-get update
sudo apt-get install build-essential python-dev python-openssl
  • Скачиваем библиотеку Adafruit Python DHT с Github и переходим в папку:
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
  • Запускаем установку
sudo python setup.py install
  • Переходим в папку
cd Adafruit_Python_DHT/examples
  • Проверяем работу датчика DHT11
sudo ./AdafruitDHT.py 11 4
  • Проверяем работу датчика DHT22
sudo ./AdafruitDHT.py 22 4
  • Проверяем работу датчика AM2302
sudo ./AdafruitDHT.py 2302 4

Пояснение: в конце команды указана модель датчика и номер (GPIO4) = пин порядковый №7 куда он подключен.

Создаем скрипт python

Создаем файл, введите в консоли:

sudo nano dht11.py
  • Вставляете код указав свой IP-адрес:порт Domoticz и IDX=датчика который создали ранее
#!/usr/bin/python

import sys
import requests
import Adafruit_DHT


# Parse command line parameters.
sensor_args = { '11': Adafruit_DHT.DHT11,
                '22': Adafruit_DHT.DHT22,
                '2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
    sensor = sensor_args[sys.argv[1]]
    pin = sys.argv[2]
else:
    print('usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#')
    print('example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4')
    sys.exit(1)

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

if humidity is not None and temperature is not None:
   print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))
   cmd = ('http://127.0.0.1:3333/json.htm?type=command&param=udevice&idx=ВАШ_ДАТЧИК&nvalue=0&svalue=' + '{0:0.1f}'.format(temperature) + ';' + '{0:0.0f}'.format(humidity) + ';0')
   requests.get(cmd)
else:
   print('Failed to get reading. Try again!')
   sys.exit(1)
  • Сохраняем файл, нажимаем на клавиатуре Ctrl+O=>Enter=>Ctrl+X
  • Добавляем права файлу

sudo chmod +x dht11.py
  • Проверяем работу
sudo ./dht11.py 11 4
  • Если все сделали правильно у вас в Domoticz обновятся показания датчика

Автозапуск считывания показаний с помощью crontab

Создаем файл, вводим в консоли:

sudo nano dht11.sh
  • В открывшемся окне вставляем
#! /bin/sh
cd /home/pi/Adafruit_Python_DHT/examples/
python /home/pi/Adafruit_Python_DHT/examples/dht11.py 11 4
  • Сохраняем файл, нажимаем на клавиатуре Ctrl+O=>Enter=>Ctrl+X
  • Добавляем права файлу

sudo chmod +x dht11.sh
  • Что бы получать показания с датчиков каждую минуту, добавляем в crontab (планировщик заданий)
sudo crontab -e
  • В открывшемся окне, спускаемся в самый вниз и вводим:
* * * * * /home/pi/Adafruit_Python_DHT/examples/dht11.sh

Итог: Мы создали скрипт и запускаем автоматическое обновление показаний датчика в Domoticz, каждую минуту


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

  1. (motomax)
    (motomax) 7 месяцев назад

    Спасибо!Отличная статья.Всё подробно описано -понятно даже для новичков.Так держать!

  2. (dobi)
    (dobi) отредактировано 6 месяцев назад

    Здравствуйте, не могли бы вы помочь мне?

    Я сделал все, но я не получаю показ температуры в Domoticz.

    спасибо

    pi@raspberrypi:~/Adafruit_Python_DHT/examples $ sudo ./dht22.py 22 4

    Temp=16.3* Humidity=1.0%



    #!/usr/bin/python

    import sys

    import requests

    import Adafruit_DHT

    # Parse command line parameters.

    sensor_args = { '11': Adafruit_DHT.DHT11,

    '22': Adafruit_DHT.DHT22,

    '2302': Adafruit_DHT.AM2302 }

    if len(sys.argv) == 3 and sys.argv[1] in sensor_args:

    sensor = sensor_args[sys.argv[1]]

    pin = sys.argv[2]

    else:

    print('usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#')

    print('example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4')

    sys.exit(1)

    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

    if humidity is not None and temperature is not None:

    print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))

    cmd = ('http://192.168.178.29:8080/json.htm?type=command¶m=udevice&idx=20&nvalue=0&svalue=' + '{0:0.1f}'.format(temperature) + ';' + '{0:0.0f}'.format(humidity)$

    requests.get(cmd)

    else:

    print('Failed to get reading. Try again!')

    sys.exit(1)

  3. (dobi)
    (dobi) 6 месяцев назад


    Я сделал все. Но он ничего не показывает в Domoticz

    • Александр Сульженко (Zver)
      Александр Сульженко (Zver) отредактировано 6 месяцев назад

      idx соответствует созданному датчику? при проверке   sudo ./dht22.py 22 4 у вас состояние должно изменится на созданном датчике.  адрес  http://192.168.178.29 это адрес вашего домотикза?

  4. (dobi)
    (dobi) отредактировано 6 месяцев назад

    да idx 20 который на Domoticz. Да ето адрес Domoticz 

  5. Александр Сульженко (Zver)
    Александр Сульженко (Zver) отредактировано 6 месяцев назад

    Попробуйте еще прописать  в Domoticz  Настройка-Настройки-

    Локальные сети (без имени/пароля):

    127.0.0.*;192.168.178.*

    и что сейчас выводит 

     sudo ./dht22.py 22 4

  6. (dobi)
    (dobi) 6 месяцев назад

    не изменился, температура не отображается

  7. (dobi)
    (dobi) 6 месяцев назад

    pi@raspberrypi:~/Adafruit_Python_DHT/examples $ sudo ./dht22.py 22 4

    Temp=16.7* Humidity=1.0%

    • Александр Сульженко (Zver)
      Александр Сульженко (Zver) отредактировано 6 месяцев назад

      у вас влажность не меняется у вас по моему беда с самим датчиком подуйте на него и проведите замеры. Если у вас на датчике 4 ноги, out попробуйте сменить на другой свободный

  8. (dobi)
    (dobi) 6 месяцев назад

    pi@raspberrypi:~/Adafruit_Python_DHT/examples $ sudo ./dht22.py 22 4

    Temp=29.2* Humidity=99.9%

  9. (dobi)
    (dobi) 6 месяцев назад
    на Домотике нет указаний
  10. (dobi)
    (dobi) 6 месяцев назад


    но в консоли меняется температура

  11. (dobi)
    (dobi) 6 месяцев назад

    хорошо я попробую 

  12. (dobi)
    (dobi) 6 месяцев назад
    Я написал в
    Локальные сети (без имени/пароля):
    127.0.0.*;192.168.178.*, теперь температура отображается.
    спасибо
    
К списку статей

Похожие статьи

14 ноября 2018, 06:43
Плагин для интеграции в Athom Homey дочерних zigbee-устройств, подключенных на координаторы deCONZ - RaspBee или ConBee.
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.
26 ноября 2018, 12:35
Выключение и включение компьютера через HomeBridge, а так-же через HomeAssistant
11 мая 2018, 17:40
Данное руководство предназначено для тех, кто хочет самостоятельно развернуть RASPBIAN STRETCH LITE на Raspberry pi3 и установить HomeBridge.
30 сентября 2018, 19:52
Razberry - первый старт
12 ноября 2018, 20:49
То, что поможет завести камеры с RTSP-потоком в HomeKit через Homebridge на Raspberry Pi
02 ноября 2018, 09:32
установка ioBroker на ОС Linux
06 ноября 2018, 09:44
Обезопасим себя от внезапной потери данных MicroSD карты на Raspberry Pi. Делаем ежедневный автоматический бэкап