Предупреждение. На официальном сайте https://www.raspberrypi.org/ уже можно скачать новую версию Raspbian Stretch. Не используйте эту версию, на ней WebIOPi вообще не запускается. Найдите в Сети предыдущую версию. Все описанное относится к версии Raspbian Jessie.
При использовании старых дистрибутивов при работе в терминале можно давать команду sudo apt-get update, но не вводите команду sudo apt-get upgrade. Это может нарушить работу уже установленных программ.
Скачать Raspbian Jessie версия от 2016-05-27 архив ZIP 1.4 Gb
webiopi-dht
Модуль датчика DHT для WebIOPi
Установка
1.) Скачать и распаковать исходный код на странице http://webiopi.trouch.com/.
На моем Pi установлен Raspbian версия от 2016-05-27.
Я скачал исходный код с http://sourceforge.net/. В терминале выполните следующие команды:
wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
$ tar xvzf WebIOPi-0.7.1.tar.gz
2.) Вы должны установить модуль Adafruit Python DHT
sudo apt-get install build-essential python-dev
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install
Если вы собрали электрическую схему (см. рисунок ниже), то можете уже сейчас проверить датчик командой:
cd Adafruit_Python_DHT
sudo python examples/AdafruitDHT.py 22 18
Если у вас датчик DHT11, то вместо 22 поставьте 11, 18 - номер контакта GPIO, т.е. GPIO18 (используется BCM нумерация).
3.) Склонируйте мой репозиторий на Pi.
cd
git clone https://github.com/swkim01/webiopi-dht.git
В домашнем каталоге создастся папка webiopi-dht.
Если вы используете Raspberry Pi1 Модель B, вам придется пропатчить исходники следующим образом.
cd /home/pi/webiopi-dht
patch -p1 < /home/pi/webiopi-dht/webiopi-0.7.1-rpi1-py2.7-dht.diff
Если вы используете Raspberry Pi2 или Pi3, тогда пропатчите исходники таким образом:
cd /home/pi/webiopi-dht
patch -p1 < /home/pi/webiopi-dht/webiopi-0.7.1-rpi2-py2.7-dht.diff
Примечание: в Python 2.7.9 есть ошибка - не находит модули в egg module file (см. здесь) или каталог, начинающийся с '_', таким образом webiopi не может загрузить любой модуль устройства. Спасибо joelliot за его комментарий.
4.) Установка и запуск WebIOPi
cd /home/pi/WebIOPi-0.7.1/
sudo ./setup.sh
В конце инсталляции выдается запрос на установку Weaved. Я отказался от установки, нажав n.
Если вы используете версию raspbian jessie, вы должны скопировать файл webiopi.service командой:
cd /home/pi/webiopi-dht
sudo cp webiopi.service /lib/systemd/system
Для автоматического запуска WebIOPi при старте системы отредактируйте rc.local командой
sudo nano /etc/rc.local
и добавьте строку
sudo /etc/init.d/webiopi start
перед строкой exit 0.
Проверка
1.) Для тестирования этого модуля подключите вывод DATA датчика DHT22 на вход GPIO18 и светодиод к выходу GPIO17 Raspberry Pi (используется BCM нумерация).
Показана схема подключения для Raspberry Pi 2 или Pi 3.
Нумерация контактов для Raspberry Pi 2 или Pi 3
Вывод Vcc датчика можно подключать к шине +3,3 В (линия связи может достигать 20 м) или к шине +5 В (линия связи до 100м, но при этом надо подобрать сопротивление резистора, включенного между Vcc и DATA).
На фото, кроме DHT22 и светодиода, присутствует схема с двумя датчиками DS18B20. Они в проекте не участвуют, просто остались от предыдущего проекта.
2.) Чтобы включить DHT и функции GPIO на WebIOPi, отредактируйте файл /etc/webiopi/config.
sudo nano /etc/webiopi/config
...
[DEVICES]
...
dht0 = DHT22 pin:18
...
[REST]
gpio-export = 17
gpio-get-value = true
gpio-post-value = true
...
3.) После перезагрузки WebIOPi, вы можете видеть значения температуры/влажности на странице 'device-monitor' WebIOPi.
sudo /etc/init.d/webiopi restart
В браузере введите примерно следующее
192.168.1.29:8000/app/devices-monitor
т.е. IP адрес Raspberry Pi, номер порта (8000) и путь к devices-monitor
Программа запрашивает логин - webiopi и пароль - raspberry.
Фреймворк WebIOPi - программа привередливая, при малейшей ошибке в файле /etc/webiopi/config она не запускается, в браузере выдается страница с сообщением "Нет доступа, в соединении отказано":
Исправьте ошибку в файле config и перезапустите сервис командой sudo /etc/init.d/webiopi restart
После этого фреймворк WebIOPi должен заработать.
4.) Теперь давайте управлять устройством с помощью команды cURL, как показано ниже.
curl -X GET -u webiopi:raspberry localhost:8000/devices/dht0/sensor/temperature/c
24.40
curl -X GET -u webiopi:raspberry localhost:8000/devices/dht0/sensor/humidity/percent
44
curl -X GET -u webiopi:raspberry localhost:8000/GPIO/17/value
0
curl -X POST -u webiopo:raspberry localhost:8000/GPIO/17/value/1
curl -X POST -u webiopo:raspberry localhost:8000/GPIO/17/value/0
Пользовательские примеры веб-страницы и скрипта Python
Наш пример состоит из HTML-файла и файла скрипта Python. HTML-код содержит веб-контент для отслеживания датчика DHT и управления светодиодом. Код скрипта обеспечивает получение/переключение режима работы на Автоматический или Ручной. В Автоматическом режиме светодиод будет включаться и выключаться автоматически в соответствии со значением температуры датчика DHT22.
1.) Отредактируйте файл /etc/webiopi/config в соответствии с расположением HTML-файла и файла скрипта Python.
...
[SCRIPTS]
myproject = /home/pi/webiopi-dht/examples/python/script.py
...
[HTTP]
...
doc-root = /home/pi/webiopi-dht/examples/html
...
2.) Перезагрузите WebIOPi и откройте веб-браузер.
sudo /etc/init.d/webiopi restart
В браузере введите примерно следующее
192.168.1.29:8000
Если вы немного разбираетесь в языке HTML, то сможете заменить надписи на английском языке русским текстом.
Понятно, что вместо светодиода можно включить схему с реле. С помощью реле можно включать/отключать, например, электронагреватель. Таким образом можно создать термостат для поддержания в помещении температуры в заданном диапазоне.
В автоматическом режиме при указанных в файле /home/pi/webiopi-dht/examples/python/script.py установках светодиод будет включаться при температуре ниже 22 градусов Цельсия и выключаться при температуре выше 27 градусов Цельсия.
Если вы хотите смотреть температуру и влажность через интернет, то об этом можно прочитать в статье Видеонаблюдение через интернет
Также об этом написано в статье Как получить доступ по интернету к датчикам в квартире.
Оригинал статьи https://github.com/swkim01/webiopi-dht
Также использованы:
https://www.devin.cl/blog/dht11-webiopi/
https://kropochev.com/?go=all/raspberry-pi-and-humidity-sensor-dht/
http://electromost.com/news/raspberry_pi_dlja_domashnej_avtomatizacii_chast_vtoraja/2014-02-20-116
https://www.element14.com/community/docs/DOC-73950/l/raspberry-pi-3-model-b-gpio-40-pin-block-pinout
|