Webiopi raspberry pi 3

Webiopi raspberry pi 3

Предупреждение. На официальном сайте 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 версии 0.7.1 описано в статье Монитор температуры и влажности на DHT11 / DHT22 и WebIOPi в Raspberry Pi . Здесь опишу, как на Raspberry Pi 3 подключить к уже имеющимся датчикам еще и датчик давления BMP180. Предусмотрено построение графика давления.
Подпаяйте выводы датчика к контактной гребенке, которая идет в комплекте, и установите датчик на макетную плату. Соберите схему:

Датчик BMP180 использует интерфейс I 2 C, поэтому в raspi-config необходимо включить его. Запустите raspi-config командой sudo raspi-config и перейдите Interfacing Options, затем I2C. На вопрос — сделать интерфейс доступным, выберите Да (Yes)

Подтвердите выбор — Ok и выйдите из программы — Finish. Проверить работу датчика можно программой на Python’е.
Установите утилиту wget командой sudo apt-get install wget . Скачайте и распакуйте архив командами

wget http://osoyoo.com/driver/Adafruit_Python_BMP.zip
unzip Adafruit_Python_BMP.zip

Перейдите в каталог Adafruit_Python_BMP и установите библиотеку BMP Python Library командами

cd Adafruit_Python_BMP
sudo python setup.py install

Между параметрами команды должен быть один пробел. Теперь перейдите в каталог examples и запустите скрипт теста датчика

cd examples
sudo python simpletest.py

Вы должны увидеть примерно следующее:

Я подключаюсь к Raspberry Pi 3 удаленно по локальной сети через Wi-Fi с компьютера Linux Mint, используя протокол ssh. Из Windows можно подключаться по ssh, используя программу PuTTY . В Linux работать по ssh удобнее, можно использовать команду scp для копирования файлов с/на Raspberry Pi 3. Также использую файловый менеджер mc (Midnight Commander). Это аналог FAR или Total Commander в Windows.
На Raspberry Pi 3 отключены монитор, клавиатура и мышь. Подается только питание и подключены датчики. Блок питания должен обеспечивать ток 2-2,5 А.
После проверки датчика можно посмотреть BMP180 в WebIOPi. Для этого отредактируйте файл config командой

sudo nano /etc/webiopi/config

В разделе [DEVICES] раскомментируйте или добавьте строку bmp = BMP085

Перезапустите WebIOPi командой sudo /etc/init.d/webiopi restart .
В браузере на одном из компьютеров локальной сети попробуйте посмотреть монитор датчиков, указав IP адрес Raspberry Pi и путь к Devices Monitor примерно так:
192.168.1.28:8000/app/devices-monitor

Возможна такая ошибка — ваш браузер вместо открытия страницы начинает поиск по этому адресу и выводит кучу сообщений о невозможности найти такой текст. Значит вам надо изменить настройки браузера. В настройках браузера отмените поиск по адресной строке. В Mozilla Firefox в разделе Поиск снимите галку "Использовать адресную строку для поиска и навигации". Теперь браузер должен открывать адрес, а не начинать поиск.
Значения температуры выводятся с точностью до десятых и даже сотых долей градуса, хотя погрешность показаний составляет полградуса в середине диапазона и до двух градусов по краям диапазона измерений. На картинке видно, что показания датчиков температуры в квартире находятся в пределах допуска.

Следующий шаг — построение графика атмосферного давления. По аналогии с другими графиками подготовьте файлы press.html, data_press.txt и отредактируйте index.html в каталоге /home/pi/webiopi-dht/examples/html. Отредактируйте script.py в каталоге /home/pi/webiopi-dht/examples/python.
Скачать файлы можно в каталоге файлов.


После редактирования файлов и перезапуска WebIOPi в браузере введите примерно следующее: 192.168.1.28:8000

Щелкните по картинке барометра и через пару секунд должен построиться график давления

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

Иногда при конфликте считывания показаний в файл данных записывается сбойное значение, например, давление 860 мм рт. столба. На графике это выглядит как пик или ломаная линия. Чтобы привести график к нормальному виду, удалите сбойное значение из файла data_press.txt. Это удобно делать во встроенном редакторе mcedit менеджера M > mcedit data_press.txt . Нажмите Ctrl+End, чтобы перейти в конец файла. Нажимая Page Up, начинайте листать страницы файла, пока не найдете сбойное значение. Удалите эту строку и сохраните файл (F2). В окне подтверждения щелкните Сохранить. Внизу в строке меню щелкните Выход. Теперь график должен вернуться к нормальному виду.
Чтобы облегчить поиск сбойной строки, растяните график в месте сбоя. Определите момент сбоя, как показано на рисунке. Откройте файл данных в редакторе mcedit, найдите эту строку и удалите ее.

Читайте также:  Need for speed most wanted criterion game

Встроенный редактор mcedit удобен и для удаления ненужных строк в файлах данных. Как описано выше, откройте в редакторе файл данных. Нажмите клавишу F3 (начало блока), потом стрелку вниз — выделится текущая строка. Нажимая клавишу Page Down, выделяйте строки целыми страницами. В нужном месте снова нажмите F3 (Конец блока). Теперь нажмите F8 и выделенный текст будет удален.

После редактирования файла html или txt не перезапускайте WebIOPi и не перезагружайте компьютер, просто обновите страницу в браузере.

Если вы пишите скрипт на Python’е сами, то обратите внимание на следующее замечание. Как известно, пробелы в Питоне определяют логику работы программы. Но на работу скрипта могут влиять и комментарии. Избегайте комментариев в конце строк после операторов. Также нежелательны закомментированные операторы. Лучше всего комментарии располагать кучно в начале программы. Не вставляйте пробелы "для красоты" в текст комментариев. Всё это может запутать Питон. В таких случаях скрипт не работает и в то же время никаких ошибок не выдается, так как явных багов в программе нет. После удаления комментариев в указанных местах скрипт начинает работать.

Иногда скрипт начинает работать ненадежно. Работает какое-то время, а потом останавливается. При написании скрипта для отступов используйте что-то одно — клавишу табуляции или только пробелы. Если вы будете использовать без разбора табуляцию и пробелы, то скрипт может перестать работать или его работа нарушится, так как разные редакторы используют под табуляцию разное число пробелов — 4, 8 и т. д. Это может запутать программу и скрипт не будет работать.

Установка и настройка ПО для системы домашней автоматизации:

1. Отформатировать SD карту (4-32 Гб) в программе SDFormatter. При форматировании в разделе «Option»указать тип формата «Quick» и формат сборки «On».

2. На отформатированную карту с помощью программы Win32DiskImage установить образ операционной системы Raspbian. Скачать образ можно здесь – https://www. raspberrypi. org/downloads

3. Установить SD карту в слот Raspberry Pi, подключить кабель HDMI к монитору или ТВ, клавиатуру и блок питания.

4. Включить Raspberry Pi. После загрузки выбрать в меню конфигурирования системы пункт «Advanced Options» и включить режим SSH.

Если меню по каким-либо причинам после загрузки системы не появилось, необходимо его вызвать командой:

5. Отключить Raspberry Pi от монитора, клавиатуры, питания и подключить его патчкордом Ethernet к роутеру. Включить питание.

6. С помощью программы IPScan определить IP адрес Raspberry Pi в сети (например, 192.168.1.8)

7. Запустить программу Putty и настроить доступ к Raspberry Pi – ваш IP, порт – 22, имя пользователя – pi, пароль – raspberry.

8. Скачать архив WebIOPi на диск Raspberry Pi:

$ wget http:///projects/webiopi/files/WebIOPi-0.7.1.tar. gz

где x.y.z – номер версии. Последняя доступная версия WebIOPi-0.7.1

9. Распаковать архив WebIOPi на диск:

10. Выбрать распакованную папку (директорию):

11. В случае использования Raspberry Pi B+ или Raspberry Pi2 загрузить патч pi2bplus. Если используется Raspberry Pi с 26 портами GPIO, сразу перейти к пункту 12.

$ wget https://raw. /doublebind/raspi/master/webiopi-pi2bplus. patch

$ patch — p1 — i webiopi-pi2bplus.patch

12. Установить WebIOPi:

13. Активировать автозапуск WebIOPi.

$ sudo update-rc. d webiopi defaults

14. Перегрузить Raspberry Pi:

обновим систему и пакет WebIOPi:

$ sudo aptitude update

$ sudo aptitude install subversion

$ svn checkout http://webiopi. /svn/trunk/ webiopi-trunk

15. Выполнить вход на Raspberry Pi по адресу: ваш IP:8000 (логин – webiopi, пароль — raspberry). В дальнейшем будем считать, что IP нашего Raspberry Pi 192.168.1.11. Логин и пароль затем можно будет изменить..

16. В открывшемся окне можно протестировать управление выходами GPIO Raspberry Pi, кликнув мышкой по пункту меню GPIO Header или GPIO List . Пункты меню Serial Monitor и Devices Monitor предназначены для тестирования последовательного порта и подключенных к Raspberry Pi различных датчиков соответственно.

Читайте также:  Айфон 7 расцветки фото

Если все нормально, то этап установки фреймворка WebIOPi, на базе которого строится система автоматизации, можно считать выполненным и переходить непосредственно к сборке системы и её конфигурированию. Настоятельно рекомендуется на этом этапе сделать образ SD-карты, что бы потом не повторять все указанные выше операции, если что-то пойдет не так. Продолжаем:

17. Создать пароль на root пользователя:

sudo passwd root

18. Перезапустить WebIOPi:

sudo /etc/init. d/webiopi restart

19. Создать на диске Raspberry Pi папки html и python для хранения файлов проекта. Для этого запустить программу WinSCP (логин – root, пароль – назначенный в пункте 17). Структура вложенных папок должна иметь вид: /home/pi/myproject/html и /home/pi/myproject/python

(Как обычно — клавишей F7
Только сначала в показанном на фото каталоге нужно создать папку myproject а уже внутри этой папки – папку html ) и еще python

20. Скопировать в папки html и python все файлы с соответствующих папок прилагаемого архива.

21. Открыть файл конфигурации WebIOPi:

в разделе [HTTP] необходимо прописать строку:

в разделе [GPIO] выполнить настройку выходов портов:

в разделе [REST] прописать следующие строки

gpio-export = 18, 23, 24, 25, 8, 7

в разделе [SCRIPTS] прописать строку:

myscript = /home/pi/myproject/python/script_sensor. py

Сохранить настройки командой Ctrl и O, затем Enter и выйти командой Ctrl и Х.

sudo reboot перегружаемся

22. Выполнить вход на Raspberry Pi по адресу 192.168.1.11:8000 (логин – webiopi, пароль – raspberry). Должен открыться web-интерфейс главной страницы, в которой есть закладки страниц «Метеостанция» (текущая страница), «Управление», «Контроллер», «GPIO» и «Графики».

Если все отображается корректно, имеет смысл сделать ещё один образ SD-карты. Следующим этапом будет подключение датчиков и модулей к шинам порта – т. е. реализация централизованного сегмента системы домашней автоматизации.

23. Подключение релейного модуля. Web-интерфейс в закладке «GPIO» позволяет управлять шестью реле. Реле подключаются через транзисторные ключи по типовой схеме к портам 18, 23, 24, 25, 8, 7. Можно использовать готовый релейный модуль. Более подробно о подключении релейного модуля смотрите здесь — http:///news/raspberry_pi_dlja_domashnej_avtomatizacii_relejnyj_modul/2015-11-21-138

24. Подключение датчиков DS18B20 к шине 1-wire. Описание подключения датчиков и редактирования конфигурационного файла смотрите здесь — http:///news/raspberry_pi_dlja_domashnej_avtomatizacii_shina_1_wire/2015-09-12-134

Отображение данных температуры с двух датчиков должно отображаться в закладке «Метеостанция» в соответствующих ячейках таблицы. При необходимости аналогично можно добавлять требуемое количество датчиков

25. Подключение датчика BMP085 к шине I2C. Описание подключение датчика и редактирования конфигурационного файла смотрите здесь — http:///news/raspberry_pi_dlja_domashnej_avtomatizacii_podkljuchenie_datchikov_po_shine_i2c/2015-09-02-133

26. Подключение часов реального времени DS1307 к шине I2C. Описание по подключению и установке необходимых программных пакетов смотрите здесь — http:///news/raspberry_pi_dlja_domashnej_avtomatizacii_chasy_realnogo_vremeni/2015-09-13-135

27. После подключения датчиков DS18B20 и BMP085 данные с них не только отображаются в web-интерфейсе, но и заносятся в базу данных с периодичностью 30 минут и построением соответствующих графиков – «Давление», «Сервер», «1-wire». Разумеется, можно выбрать любые другие названия графиков.

Обратите внимание, что в файлы базы данных занесены архивные значения параметров, что позволяет отображать архивный график даже без подключенных датчиков. Что бы начать работу с текущими реальными данными, необходимо очистить текстовые файлы баз данных, обязательно оставив их заголовки внутри файла. Более подробно о работе с графиками можно ознакомиться здесь — http:///news/raspberry_pi_dlja_domashnej_avtomatizacii_grafiki_parametrov/2015-09-18-136

ВНИМАНИЕ! В разделе [DEVICES] конфигурационного файла прописывайте только те датчики, которые реально подключены к шинам Raspberry Pi.

Далее необходимо выполнить реализацию распределенного сегмента системы домашней автоматизации – подключение к Raspberry Pi контроллеров по интерфейсу RS485. Для подключения контроллеров по шине RS485 необходимо применить адаптер USB/RS485-http:///news/raspberry_pi_dlja_domashnej_avtomatizacii_adapter_usb_rs485/2015-05-07-129

Порядок настройки интерфейса RS485:

28. Открыть файл конфигурации WebIOPi:

sudo nano /etc/webiopi/config

В разделе [DEVICES] прописать строку:

serial0 = Serial device:ttyUSB0 baudrate:9600

29. Открыть файл inittab:

sudo nano /etc/inittab

и закомментировать строку:

#T0:23:respawn:/sbin/getty — L ttyAMA0 115200 vt100

30. Открыть файл cmdline. txt

Читайте также:  Бесплатные читалки для андроид на русском

sudo nano /boot/cmdline. txt

dwc_otg. lpm_enable=0 console=tty1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

dwc_otg. lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

31. Установить программный пакет MinimalModbus. Данное программное обеспечение необходимо для работы интерфейса RS485 по протоколу Modbus RTU:

wget https://pypi. python. org/packages/source/M/MinimalModbus/MinimalModbus-0.7.tar. gz

Распаковать архив в каталог:

tar xvzf MinimalModbus-0.7.tar. gz

Перейти в каталог с распакованным архивом:

sudo python setup. py install или sudo python3 setup. py install

Полное описание по установке программного пакета MinimalModbus смотрите здесь — http:///news/raspberry_pi_dlja_domashnej_avtomatizacii_modbus_rtu/2015-10-10-137

32. Подключить скрипты Python для работы по Modbus RTU:

Открыть файл конфигурации WebIOPi:

В разделе [SCRIPTS] прописать строку:

myscript2= /home/pi/myproject/python/script_modbus. py

Моя плата Raspberry Pi 3 Model B и сейчас на установленную операционную систему я разберу, как установить Web— интерфейс, точнее фреймворк WebIOPi,

$ uname -a && lsb_release -a

Linux raspberrypi 4.4.48-v7+ #964 SMP Mon Feb 13 16:57:51 GMT 2017 armv7l GNU/Linux

No LSB modules are available.

Distributor ID: Raspbian

Description: Raspbian GNU/Linux 8.0 (jessie)

для доступа к портам GPIO посредством которого можно будет контролировать состояние и управление всеми портами GPIO как локально так и удаленно.

А что же умеет данный фреймворк WebIOPi:

  • REST API через HTTP и CoAP с поддержкой мультикаста;
  • работа с GPIO, Serial, I 2 C, SPI, 1-Wire;
  • встроенная поддержка более чем 30 устройств, включая ЦАП, АЦП, датчики;
  • совместимость с Python 2 и 3;
  • защита логином/паролем;
  • множество примеров.

Проект имеет свой сайт: http://webiopi.trouch.com/

Скачиваю и устанавливаю на систему Raspbian:

$ tar xzf WebIOPi-0.7.1.tar.gz

/WebIOPi-0.7.1 $ sudo ./setup.sh

Do you want to access WebIOPi over Internet ? [y/n] y

WebIOPi successfully installed

Файлы с примерами можно найти здесь:

Запускаю WebIOPi вместе с загрузкой системы:

$ sudo update-rc.d webiopi defaults

Запускаю установленный фреймворк как сервис:

$ sudo /etc/init.d/webiopi start

[….] Starting webiopi (via systemctl): webiopi.serviceFailed to start webiopi.service: Unit webiopi.service failed to load: No such file or directory.

/WebIOPi-0.7.1 $ sudo /etc/init.d/webiopi start

[ ok ] Starting webiopi (via systemctl): webiopi.service.

/WebIOPi-0.7.1 $ sudo /etc/init.d/webiopi status

webiopi.service — LSB: WebIOPi initscript

Loaded: loaded (/etc/init.d/webiopi)

Active: active (running) since Sat 2017-02-18 17:44:46 MSK; 5s ago

Process: 2337 ExecStart=/etc/init.d/webiopi start (code=exited, status=0/SUCCESS)

└─2345 /usr/bin/python3 -m webiopi -l /var/log/webiopi -c /etc/web…

Feb 18 17:44:46 raspberrypi systemd[1]: Started LSB: WebIOPi initscript.

Затем открываю в браузере (со своей рабочей станции под управлением Ubuntu Trusty Gnome Classic) Raspberry Pi 3 Model B URL ссылку на доступ к Web-оснастке взаимодействия с GPIO: http://IP&DNS:8000/webiopi/

и вижу, что для доступа нужно авторизоваться введя логин и пароль , где дефолтные:

  • Login: webiopi
  • Password: raspberry

И вот Web-панель по управлению:

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

Чтобы в панель управления WebIOPi не мог зайти ни кто из не идентифицированных в локальной сети, доступ следует обезопасить заменой дефолтных логина и пароля на свои:

WebIOPi passwd file generator

Enter Login: ekzorchik

Enter Password: 712mbddr@

Confirm password: 712mbddr@

Saved to /etc/webiopi/passwd

Чтобы изменения вступили в силу прямо сейчас, перезапускаю сервис webiopi:

$ sudo /etc/init.d/webiopi restart

[. ] Restarting webiopi (via systemctl): webiopi.serviceWarning: Unit file of webiopi.service changed on disk, ‘systemctl daemon-reload’ recommended.

Если же при вводе своей пары логина и пароля Вы что-то напортачили, то сбрасываем все путем когда еще раз ставим логин и пароль на запрос просто ничего не вводим, а нажимаем клавишу Enter, хотя проще удалить файл /etc/webiopi/passwd:

$ sudo rm /etc/webiopi/passwd

$ sudo /etc/init.d/webiopi restart

Дабы не загромождать заметку я завершу свое повествование, путь намечен. В следующих заметках я покажу что-нибудь еще по работе с интерфейсом GPIO, а пока прощаюсь, с уважением Олло Александр aka ekzorchik.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще 🙂

Карта МКБ: 4432-7300-2472-8059
Yandex-деньги: 41001520055047

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Ссылка на основную публикацию
Adblock detector