Оглавление: Domoticz, установкаDomoticz, настройки после установки. Добавление первого датчика.
Domoticz добавление шлюза XiaomiDomoticz полуумное управление Livolo, BroadlinkРадио в Domoticz, виртуальные переключатели Bluetooth в Domoticz, Xiaomi Flower Care, Mijia SensorУмная розетка Mijia Smart Wi-Fi и Philips Smart Bulb добавляем в Domoticz
Добавляем Xiaomi Mi Robot Vacuum Cleaner в Domoticz
Yeelight режим разработчика, DomoticzBroadlink MP1 управляем из Domoticz
Добавим датчики температуры и влажности которые подключаются через GPIO Raspberry Pi
Напишем скрипт и добавим автоматический запуск для считывания показаний, приступим...
Что такое GPIO?
Аббревиатура с английского расшифровывается как: General-purpose Input/Output. Это интерфейс ввода/вывода общего назначения, к которым можно подключать разнообразные датчики, исполнительные устройства, дисплеи, контроллеры, и т.д и т.п
Как выглядит интерфейс GPIO?
Это разъем, который содержит набор из пинов и размещен непосредственно на плате Raspberry Pi:
- В старых моделях (A и B) - 26 шт. ( 8 шт. отдельным разъемом);
В новых моделях (A , B и B2) - 40 шт. (показан на скриншоте)
Пины в GPIO могут выполнять 3 функции:
- подача электричества определенного напряжения;
заземление;
прием/отправка сигналов;
Добавим виртуальный датчик, нужен будет IDX - это номер который присвоит ему система умного дома Domoticz
- Настройка-Оборудование
В разделе Тип: выбираете - Dummy (Does nothing, use for only virtual switch), указываете имя
Нажимайте добавить, появится новая запись
Выберите создать виртуальные датчики
Указываете имя, Тип датчика: Температура и влажность - OK
Переходим в Настройка-Устройства в открывшемся окне находим созданный вами датчик и запоминаем его IDX
Инструкция в картинках
Подключение датчика DHT11
Так как все эти датчики практически одинаковые, рассматривать будем на примере DHT11
- Отключите питание Raspberry Pi во избежание проблем
Подключаем датчик к пинам GPIO:
Пин №1 это 3v
- Пин №7 это сигнальный порт (GPIO4) через него и будем получать данные
Пин №9 это Ground
Установка плагина
Подключитесь по SSH с помощью программы Putty к вашей Raspberry PI
Для установки библиотеки для работы с датчиками необходимо установить несколько пакетов:
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=* Humidity=%'.format(temperature, humidity)) cmd = ('http://127.0.0.1:3333/json.htm?type=command¶m=udevice&idx=ВАШ_ДАТЧИК&nvalue=0&svalue=' ''.format(temperature) ';' ''.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, каждую минуту
Спасибо!Отличная статья.Всё подробно описано -понятно даже для новичков.Так держать!
Здравствуйте, не могли бы вы помочь мне?
Я сделал все, но я не получаю показ температуры в 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)
sudo apt-get install python-pip
sudo pip install requests
Я сделал все. Но он ничего не показывает в Domoticz
idx соответствует созданному датчику? при проверке
sudo ./dht22.py 22 4 у вас состояние должно изменится на созданном датчике. адрес http://192.168.178.29">http://192.168.178.29 это адрес вашего домотикза?
да idx 20 который на Domoticz. Да ето адрес Domoticz
Попробуйте еще прописать в Domoticz Настройка-Настройки-
Локальные сети (без имени/пароля):
127.0.0.*;192.168.178.*
и что сейчас выводит
sudo ./dht22.py 22 4
не изменился, температура не отображается
Что сейчас выводит
sudo ./dht22.py 22 4
pi@raspberrypi:~/Adafruit_Python_DHT/examples $ sudo ./dht22.py 22 4
Temp=16.7* Humidity=1.0%
у вас влажность не меняется у вас по моему беда с самим датчиком подуйте на него и проведите замеры. Если у вас на датчике 4 ноги, out попробуйте сменить на другой свободный
та же проблема.. у меня несколько датчиков валяется. перепробывал всё
dht11 работает в любом случае
dht22 бред вместо показаний даёт, не зависимо 3 или 4 ноги у него.
Поэтому не с датчиком проблема, либа битая, с 22 датчиком она не рабоает. Теперь гуляю по гуглу чтобы проблему решить.
да нашёл.. у них реально куча ошибок в либе.. притом она на плюсах написана, так что чинить тот ещё гемор будет
pi@raspberrypi:~/Adafruit_Python_DHT/examples $ sudo ./dht22.py 22 4
Temp=29.2* Humidity=99.9%
но в консоли меняется температура
ну тогда я бессилен к сожалению, попробуйте создать все заново что бы IDX сменился к примеру
хорошо я попробую