Суббота, 03.12.2016, 08:45
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа
Логин:
Пароль:

Меню

Авторские проекты

Авторский блог

Raspberry Pi

Каталог схем

Полезная информация

Обратная связь

Каталог сайтов

Форум

Канал YouTube


Сузуки Клуб Россия

Календарь
«  Февраль 2014  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
2425262728

Наш опрос
Вы проживаете:
Всего ответов: 688

Ссылки




Яндекс.Метрика







.
Статистика

Онлайн всего: 4
Гостей: 2
Пользователей: 2
deniss1900, vitas

Raspberry Pi для домашней автоматизации. Установка Webiopi

Raspberry Pi для домашней автоматизации. Установка Webiopi


 

В прошлом обзоре мы разобрались, как установить на Raspberry Pi операционную систему Raspbian, выполнить её основные настройки и включить возможность удаленного управления с помощью программы Putty. А сегодня попробуем поработать с внешним интерфейсом нашего миникомпьютера.

Raspberry Pi имеет довольно неплохой набор портов GPIO, которые можно задействовать как аналоговые или цифровые входы/выходы, интерфейсы UART, SPI, I2C. В начале рассмотрим использование портов в качестве цифровых выходов и входов.

Для этого воспользуемся готовым фреймворком  WebIOPi. Он был специально разработан для работы с портами GPIO Raspberry Pi и позволяет создавать на своей основе различные пользовательские приложения. Как заявлено на официальном сайте поддержки этого проекта https://code.google.com/p/webiopi, WebIOPi имеет следующие возможности:

Встроенный Web-cервер, реализованный на языке Python

Встроенная поддержка более чем 30 устройств с интерфейсами UART, SPI, I2C, 1-Wire

Библиотеки Javascript / HTML для создания Web-интерфейса

Библиотеки Python / Java для создания приложений под Android

Совместимость с языком Python версий 2 и 3

Возможность адаптации под нужды пользователей

Структура фреймворка WebIOPi приведена на рис.1:

 

Рис. 1

Чтобы выполнить установку WebIOPi, заходим в Raspberry Pi через программу Putty (логин – pi, пароль - raspberry) и в терминале вводим поочередно следующие команды:

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

$ tar xvzf WebIOPi-0.7.1.tar.gz

$ cd WebIOPi-0.7.1

$ sudo ./setup.sh

После завершения установки необходимо активировать автозапуск WebIOPi. Автозапуск WebIOPi нужен для того, что бы каждый раз после включения Raspberry Pi не выполнять запуск приложения вручную. Для  этого выполняем команду:

$ sudo update-rc.d webiopi defaults

После чего перезапускаем Raspberry Pi:

sudo reboot

Теперь проверяем работу WebIOPi. С любого компьютера в локальной сети набираем сетевой адрес, присвоенный  Raspberry Pi с указанием порта 8000. Например:

http://192.168.1.8:8000

Для доступа к WebIOPi необходимо в открывшейся форме ввести логин и пароль. По умолчанию логин «webiopi», пароль – «raspberry». Их, как и номер порта, затем можно будет изменить, но об этом поговорим отдельно, а для наших экспериментов воспользуемся стандартными параметрами.

Итак, если вы все сделали правильно при установке WebIOPi, ввели верный логин и пароль, то в браузере должна открыться страница (рис.2)


 

Рис. 2


 

На этой странице есть четыре пункта меню. GPIO Header и GPIO List открывают два варианта графических интерфейсов работы с портами ввода/вывода, Serial Monitor – терминал для работы с последовательным портом UART, Devise Monitor – подключенные к GPIO датчики.

Выбираем в меню пункт GPIO Header и попадаем на страницу с графическим интерфейсом управления портами (рис.3)


 

Рис. 3


 

Как видно из приведенного рисунка, графический интерфейс представляет собой мнемоническую интерактивную схему портов GPIO Raspberry Pi. По умолчанию, все они настроены как входы (IN). Для использования порта как выхода, нужно кликнуть по IN мышкой и надпись измениться на OUT

Черный цвет порта указывает, что на выходе низкий уровень (0В), желтый – высокий уровень (3,3В). Для изменения состояния определенного порта кликнем по нему мышкой и уровень на его выходе изменится на инверсный.

Для работы с WebIOPi через Web-интерфейс, рекомендуется использовать браузер Chrome, с другими браузерами корректная работа фреймворка не гарантируется. Однако, я проверял его работу в Opera, Internet Explorer под Windows, Safari под iOS и особых проблем не наблюдалось. Но, тем не менее, лучше все же воспользоваться рекомендацией разработчика и во избежание дополнительных проблем на начальном этапе пользоваться только Chrome.

Как уже отмечалось, при включении все порты GPIO в Raspberry Pi настраиваются как входы. Но, допустим, требуется, что бы при включении определенные порты не только были выходами по умолчанию, но и имели, в случае необходимости, высокий или низкий «стартовый» уровень. Никаких проблем, это довольно просто реализовать в WebIOPi. Остановимся на этом вопросе более подробно.

Подключаемся к Raspberry Pi через терминальную программу Putty (логин – pi, пароль - raspberry) и открываем для редактирования конфигурационный файл config:

sudo nano /etc/webiopi/config

 Допустим, мы хотим что бы порты GPIO 2, 3, 4, 17 были сконфигурированы как выходы с низким стартовым уровнем, порты GPIO 9, 10, 11, 22, 27 – как выходы с высоким стартовым уровнем, а оставшиеся GPIO 7, 8, 18, 23,  24, 25 как входы. Находим в открывшемся конфигурационном файле заголовок:

 [GPIO] # Initialize following GPIOs with given function and optional value # This is used during WebIOPi start process 

Редактируем в соответствии с нашими требованиями (рис.4)

 

Рис. 4

Надеюсь, что здесь все понятно и без комментариев: IN – это вход, OUT 1выход с высоким уровнем, OUT 0выход с низким уровнем. Назначение входов IN можно не прописывать – не назначенные в конфигурационном файле порты по умолчанию будут входами.

Сохраняем настройки сочетанием клавиш Ctrl и O, затем нажимаем Enter. Настройки сохранены, делаем перезагрузку Raspberry Pi командой sudo reboot и после перезагрузки заходим на страницу WebIOPi, как это описывалось выше. Мы увидим, что назначение портов GPIO изменилось в соответствии с заданными настройками в конфигурационном файле (рис.5)

 

 

Рис. 5

 

В принципе, даже с помощью рассмотренного «базового» варианта WebIOPi, уже можно организовать систему удаленного управления нагрузками через локальную сеть или интернет. Для этого необходимо подключить к портам GPIO Raspberry Pi транзисторные ключи с электромагнитными реле или симисторы. Однако, нужно предусмотреть некоторые меры предосторожности во избежание выхода из строя портов GPIO. Рекомендуется сделать гальваническую развязку портов входов и выходов, например, через оптроны. Кстати, входы можно задействовать для организации сигнализации переключения исполнительного устройства.

С помощью такой системы, вы сможете управлять различными устройствами в своем доме или квартире из любой точки планеты, где есть интернетА как организовать доступ к домашней сети из интернета на случай, если ваш провайдер предоставляет не статический, а динамический IP, довольно подробно описано в статье Видеонаблюдение через интернет.

По теме удаленного управления нагрузками через GSM рекомендуется почитать:

Устройство управления и контроля по GSM

Управление нагрузками по телефону

Управление нагрузками по радио

 


 

Содержание всех статей сайта по теме Raspberry Pi




Категория: | Просмотров: 26039 | Добавил: Admin | Теги: Raspberry Pi | Рейтинг: 5.0/1 |
Всего комментариев: 8


7  
Админ, Вы пишите: "терминале вводим поочередно следующие команды:
$ wget http:...."
Когда я набираю команду с $ Raspberry сообщает, что не знает команды $. Исправьте или уточните этот момент. Далее по тексту команды Вы подаете без $

0
8  
$ - это просто стандартное "приглашение" к вводу команд в консоли.

3  
Доброго времени суток! Спасибо автору за подробное описание всех процессов !!! Но даже с такой подробностью у меня возникли сложности! Купил Pi 2 поставил расбиан на нее, установил вебиопи , по инструкции как указано выше - и после ввода в хроме - http://192.168.1.8:8000/- пишет Веб-страница недоступнаERR_CONNECTION_REFUSED...... Несколько раз все по новой ставил - никаких изменений. Никак не докапаюсь до истины.. Помогите кто чем может!

0
4  
Для начала хотел бы порекомендовать задавать вопросы на форуме - там намного больше вероятность, что вопрос увидят.

Что касается самого вопроса - webIOPi пока ещё не полностью совместим с RP2 , по крайне мере официального релиза ещё не было. Тем не менее я на свой страх и риск устанавливал на RP2 webIOPi 0.7.1 и часть функций работала, по крайней мере с UART проблем не было. Подробнее см. - ЗДЕСЬ

И ещё один момент - у Вашего RP2 точно IP 192.168.1.8? Как определялся адрес?

5  
Спасибо за совет и за подсказку!) адрес верный, перед тем как, определял ipscan и подключался через puty -  для большей верности)

0
6  
Значит, закомментируйте все входы/выходы (как я говорил на форуме)и проверяйте. И давайте дальнейшее общение плавно переводим в форум smile

2  
Цитата
Это я про "фреймворк"

Мне самому не нравится это слово, но если разработчик WebIOPi оперирует именно этим термином, наверное будет некорректно с моей стороны придумывать свои названия. Если когда-нибудь я создам что-то подобное, вот тогда назову так, что бы и блондинке было понятно biggrin

Цитата
2)Не пишите как для обезьян , а-ля "набираем следующие буковки". Непонятен общий смысл и каждой команды. Кроме того, непонятно где команда, а где аргументы.

Сергей, Вы противоречите сами себе. То нужно писать как для блондинок, то не нужно писать как для обезьян (читай - блондинок). Давайте уж определимся со стилем изложения.
Что же по существу вопроса - ну как бы изучение Linux не лежит в плоскости данных статей, тем более, что в нем я тоже не "гуру".

Цитата
Вы описали ручное
управление, а автоматическое по таймеру, температуре или еще чему, есть?

На основе WebIOPi все это можно реализовать. Вы просто торопите события. Сначала я хочу описать все базовые возможности WebIOPi , а уже потом на его "движке" будем пробовать создавать свой интерфейс.

1  
Две просьбы: 1) пишите по-русски, т.к. английские выражения часто очень "широкие" и смысл зависит от контекста. Это я про "фреймворк".  Если бы Вы написали "программа-конструктор", то поняла бы даже блондинка. А то думаешь: "Это что, не программа?"
2)Не пишите как для обезьян , а-ля "набираем следующие буковки". Непонятен общий смысл и каждой команды. Кроме того, непонятно где команда, а где аргументы. 

Вы описали ручное
управление, а автоматическое по таймеру, температуре или еще чему, есть?





T2M © 2016
Сайт управляется системой uCoz