Пятница, 19.04.2024, 15:26
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа
Логин:
Пароль:

Меню

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

Статьи

Raspberry Pi

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

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

Ссылки

Форум

Чат

Канал YouTube

Группа в Facebook


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

Наш опрос

Ссылки


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





.
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

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

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

Наш канал в YouTube


 

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:

 

структура webiopi

Рис. 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)


 

webiopi main menu

Рис. 2


 

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

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


 

webiopi gpio

Рис. 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)

 

webiopi config

Рис. 4

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

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

 

 remote GPIO Raspberry Pi

Рис. 5

 

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

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

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

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

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

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

 


 

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




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


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

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

9 DrVicX  
Просто фейспалм  wacko 
Люди лезут в сложные проекты не зная ОСНОВ.
На что они рассчитывают непонятно.

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

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

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

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

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

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

10 DrVicX  
CONNECTION_REFUSED - это ответ от сетевого экрана скорее всего.
Что-то блокирует доступ к веб-интерфейсу.
Это может быть сетевой экран Windows или Linux, а может и сам Веб-сервер блокировать.
Проблема в 100% случаев решается ВНИМАТЕЛЬНЫМ чтением статей по настройке.

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

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

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

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

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

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

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

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

11 DrVicX  
За переводы англоязычных терминов нужно уши откручивать!
Специалист который не знает английского языка хотя-бы на уровне чтения документации не специалист, а максимум техник на побегушках!  angry 

Framework/Фреймворк - это фреймворк и этот термин НЕ НУЖНО переводить!
Если нужен перевод, то начните лучше с САМОГО нуля. С Hello World уровня wink

Я не американист, но меня выбешивает когда всякие спейциалисты пытаются переводить технические термины! Я поэтому русских переведенных книжек и не читаю!
Читаешь перевод - ниче не понятно. Читаешь оригинал на инглише - все сразу ясно становится. Парадокс? Нет! Просто нечего переводить на русский то, что не создавалось изначально на русском языке!

Давайте ещё ХотДог в ГорячиеСобаки переведем  biggrin

12 DrVicX  
Как раз-таки смысл англоязычных терминов НЕ зависит от контекста - их просто нужно ЗНАТЬ,  а вот перевод этих терминов по мнению переводчика может включать контекст, причем контекст из лично его непрофессиональной головы. Читаешь и не можешь понять что переводчик имел ввиду.

13 DrVicX  
Framework - это пакет модулей написаных на языке программирования реализующий рутинные задачи, которые без него потребовалось бы реализовывать вручную на чистом синтаксисе языка. Это многобукоф.
Чтобы не писать многобукоф для "блондинок в штанах" есть технический термин- Framework.





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