WebIOPi – web-интерфейс и облако для Raspberry Pi.
Байманкулов А.Т., доктор физико-математических наук, доцент
Летвинко Полина Сергеевна, магистр, ст. преподаватель
Белов Алексей Валерьевич,
магистрант специальности 6М072400 – Технологические машины и оборудование
(траектория Мехатроника)
Костанайский государственный университет им. А. Байтурсынова
Аннотация:
Одна из важных функций, которая должна присутствовать в системе «Умный дом»
- это возможность слежения за
показаниями датчиков и управление частями системы через веб-интерфейс. Для
простой реализации этой функции часто используется фреймворк
WebIOPi.
Данный фреймворк разработан под платформу RaspberryPi.
Понятие Internet of Things (IoT, Интернет вещей) – это
концепция «умного дома», где все датчики, приборы, системы управляются удаленно
через глобальную сеть Интернет.
Raspberry Pi – это компактный компьютер, величиной
с кредитную карту. В основном Raspberry
Pi
рассматривается
как дешевое решение для начинающих разработчиков. С учетом удовлетворительной
аппаратной мощности данного мини-ПК, малого энергопотребления и низкой
себестоимости его можно использовать для создания персонального мини-сервера. Важным
преимуществом является подключение многих устройств через порты GPIO.
Фреймворк WebIOPi
– сервис Internet
of
Things,
позволяющим контролировать состояние и управлять всеми портами GPIO локально или удаленно, из браузера
или любого другого приложения. Достоинства данного фреймворка
заключается в следующем: имеет встроенную поддержку более чем 30 устройств, совместимость
с Python
2 и 3, возможность работы с облачным сервисом Weaved, парольная защита.
Для начала работы с
данным фреймворком необходимо в первую очередь
скачать соответствующий архив и установить его. Рекомендуемая система на Raspberry Pi – ОС Raspbian. Для установки WebIOPi
в данной системе выполнены следующие команды в
консоли:
wget http://webiopi.googlecode.com/files/WebIOPi-0.7.1.tar.gz
tar xvzf WebIOPi-0.7.1.tar.gz
cd WebIOPi-0.7.1
sudo ./setup.sh
В процессе долгой
установки будет предложено создать профиль в облачном сервисе Weaved для доступа к фреймворку
через сеть Интернет. Установленный фреймворк лучше
запускать как сервис.
sudo /etc/init.d/webiopi start
Далее сервер WebIOPi
настраивается путём изменения его конфигураций в соответствующем ini-файле.
В блоке [GPIO]
устанавливаются пользовательские настройки для портов. В блоке [SCRIPTS] определяется список
скриптов, выполняемых при запуске WebIOPi. Блок [DEVICES] позволяет подключить
устройства, поддерживаемые фреймворком к конкретным
портам GPIO
При запуске сервера
браузер загружает библиотеку webiopi.js,
которая осуществляет асинхронную передачу данных – удобно тем, что нет
необходимости в перезагрузке страницы браузера для получения обновленных
данных, к примеру показателей с датчиков. Для подключения к Raspberry Pi по Web на мини-ПК необходимо установить
веб-сервер:
sudo apt-get install apache2
Страница доступа из Weaved к веб-серверу на Raspberry Pi показана на рисунке 1.
Рисунок 1. Страница
доступа из Weaved
к веб-серверу на Raspberry
Pi
WebIOPi содержит в себе HTTP-сервер, содержащий не только HTML-содержимое, но и интерфейс REST API, управляющий портами GPIO. Расширения возможностей WebIOPi
можно
путем загрузки пользовательского скрипта на языке программирования Python. Скрипт на данном языке будет
содержать функции настройки выводов GPIO и будет создан с использованием Arduino-подобного
синтаксиса. Общая схема организация сервера на данном фреймворке
показана на рисунке 2.
Рисунок 2. Общая
схема работы WebIOPi
В html-документе для создания необходимых
элементов используются соответствующие функции из java-скрипта webiopi.js.
Список основных функций библиотеки:
WEBIOPI.ready регистрирует функцию обратного
вызова при загрузке скрипта
WEBIOPI.setFunction
устанавливает значение порта GPIO
WEBIOPI.digitalWrite
конфигурирует порт на выход и устанавливает его значение
WEBIOPI.digitalRead
конфигурирует порт на ввод и читает его значение
WEBIOPI.pulse отправляет импульс на выход GPIO
WEBIOPI.createButton
создает простую кнопку
WEBIOPI.createRatioSlider
возвращает объект - шкалу
WEBIOPI.setLabel
позволяет изменить надпись на кнопке
Подводя итог, для
создания проекта с использованием фреймворка WebIOPi
необходимо выполнить следующие действия:
·
Веб-интерфейс с использованием
библиотеки webiopi.js
·
Серверный скрипт на языке Python, запускаемый при старте фреймворка
·
Правка файла конфигурации WebIOPi
Список
литературы
1.
Петин В. Arduiono и Raspberry Pi в проектах Internet of
Things / СПб.: БХВ-Петербург, 2016. – 320 с.
2.
Тесля Е.В.
"Умный дом" своими руками. Строим
интеллектуальную цифровую систему в своей квартире / СПб.: Питер, 2008
3. Том Иго Arduino, датчики и сети для
связи устройств, 2-е изд. / СПб.: БХВ-Петербург, 2015. –
544с.