Скористаємося веб-інтерфейсом для управління RPi і використаємо його як файловий сервер або медіа-центр з віддаленого місця розташування за допомогою будь-якого підключеного до Інтернету пристрою.
Через свій розмір і портативність, RPi можна розташувати в будь-якому місці, де він може мати живлення, і тому він широко використовується як файловий сервер, медіа-центр та для інших нетрадиційних додатків, перш за все, для віддаленого керування та Інтернету речей. Розглянемо WebIOPi, як найбільш досконалий інструмент для віддаленого керування за допомогою RPi.
WebIOPi - фреймворк Інтернету речей для Raspberry Pi
WebIOPi створений для управління, налагодження та використання GPIO вашого RPi, датчиків і перетворювачів з веб-браузера або будь-якого іншого додатку. WebIOPi є ідеальним «швейцарським ножом», щоб зробити підключення речей.
Основні можливості:
• Має у комплекті Weaved IoT Kit для доступу до RPi через Інтернет без клопоту.
• Написаний на Python, що зручно для завантаження і виконання спеціальних сценаріїв, використовуючи всеосяжну структуру з установленням і функціями циклу.
• Надає необмежену підтримку Serial/SPI/I2C з повним і послідовним набором функцій для управління більш ніж 30 типами пристроїв, у тому числі, найбільш часто використовуваними аналоговими перетворювачами, розширювачами входу/виходу і датчиками.
• Має клієнтську бібліотеку JavaScript/HTML, щоб зробити власний веб-інтерфейс.
• Має клієнтів Python/Java, щоб робити системи RPi-to-RPi або додатки для Android.
• Підтримує CoAP, що надає кращий протокол Інтернету речей для RPi, як майбутній доказ можливостей RPi.
• Включає в себе прості веб-додатки для налагодження GPIO, пристроїв і послідовного інтерфейсу.
Установка WebIOPi
Перш за все, треба завантажити останню версію архіву .tar.gz
в директорію /home/pi.
Нижче наведені команди, які треба виконати, щоб витягнути з архіву, а потім встановити WebIOPi. Сценарій установки автоматично завантажить та встановить необхідні залежності, використовуючи apt-get.
Примітка: Перед запуском процесу установки зупиніть роботу існуючого сервісу WebIOPi. Ваша попередня конфігурація буде збережена, але інші файли будуть перевизначені.
Перегляньте сторінку завантажень, щоб побачити останню версію пакету, і замініть в команді нижче x.y.z на значення з версії, яку завантажите. Наприклад, на момент написання статті x.y.z треба було замінити на 0.7.1:
$ tar xvzf WebIOPi-x.y.z.tar.gz
$ cd WebIOPi-x.y.z
$ sudo ./setup.sh
Для власників Raspberry B+ і Pi 2 та 3, щоб отримати доступ до всіх 40 виводів, радимо скористатися нижченаведеною процедурою установки з патчем:
$ 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
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
$ patch -p1 -i webiopi-pi2bplus.patch
$ sudo ./setup.sh
Встановлення може зайняти деякий час.
Запуск WebIOPi
Нарешті, використайте команду webiopi:
$ sudo webiopi [-h] [-c config] [-l log] [-s script] [-d] [port]
Параметри:
-h, --help Показати цю допомогу
-c, --config Завантажити конфігурацію з файлу
-l, --log Записати журнал у файл
-s, --script Завантажити сценарій з файлу
-d, --debug Включити DEBUG (налагодження)
Аргументи:
port Порт для прив'язки HTTP-сервера
Наприклад, для запуску з докладним виводом і використанням файлу конфігурації за замовчуванням:
$ sudo webiopi -d -c /etc/webiopi/config
Коли закінчиться, ви будете готові насолоджуватися WebIOPi! Але стани сервера і GPIO будуть втрачені, коли зупинити сценарій (CTRL-C) або закрити термінал.
Запуск WebIOPi, як службу (демон)
Ви також можете запустити/зупинити WebIOPi, як фонову службу, а конфігурація буде завантажуватися з /etc/webiopi/config:
$ sudo /etc/init.d/webiopi start
$ sudo /etc/init.d/webiopi stop
Автоматичний запуск при завантаженні
Для налаштування вашої системи для запуску WebIOPi при завантаженні RPi:
$ sudo update-rc.d webiopi defaults
Щоб видалити запуск WebIOPi з завантаженням:
$ sudo update-rc.d webiopi remove
Доступ WebIOPi через локальну мережу
Якщо ваш RPi підключений до мережі, то можете відкрити браузер, ввести адресу http://raspberrypi:8000/ з будь-якого пристрою в мережі, але треба замінити raspberrypi на його IP.
Користувач за замовчуванням "webiopi" і пароль "raspberry".
Вибравши посилання GPIO Header на головній сторінці, ви зможете контролювати GPIO, використовуючи веб-інтерфейс, який виглядає як роз’єм на платі.
• Натисніть кнопку OUT/IN, щоб змінити напрям GPIO.
• Натисніть необхідні контакти, щоб змінити вихідний стан GPIO.
Доступ WebIOPi через Інтернет
Завдяки WeavedIoTKit, можна легко отримати доступ до RPi з будь-якої точки безпечним способом.
Перш за все, якщо ваш Raspberry Pi буде доступний з Інтернету, то ви повинні відразу змінити пароль за замовчуванням. Щоб зробити це, запустіть команду:
sudo webiopi-passwd
Введіть ім'я користувача за замовчуванням webiopi, і вкажіть новий пароль. Крім того, ви можете замінити користувача webiopi за замовчуванням, ввівши нове ім'я користувача і вказавши необхідний пароль. Після того зробите це, перезапустіть за допомогою:
sudo /etc/init.d/webiopi restart
Реєстрація на порталі Weaved розробника
Перейдіть до https://developer.weaved.com/portal/ і дотримуйтесь інструкцій, щоб створити обліковий запис.
Завантаження Weaved для Raspberry Pi
Скопіюйте та вставте командний рядок нижче у вікно терміналу або SSH-клієнта, підключеного до RPi, а потім натисніть клавішу ENTER:
wget https://github.com/weaved/installer/weaved-nixinstaller_1.2.13.bin
Встановлення Weaved
Зробіть файл установника виконуваним:
chmod +x weaved-nixinstaller_1.2.13.bin
Запустіть програму установки:
./weaved-nixinstaller_1.2.13.bin
Введіть адресу електронної пошти та пароль для свого облікового запису Weaved:
Коли буде запитано, виберіть WebIOPi в процесі установки. Потім введіть псевдонім або нік для свого пристрою:
Примітка: Якщо ви запустите установку більш ніж один раз, ви отримаєте на це запитання:
Підтримка декількох послуг не повною мірою протестована в 1.2.13. Рекомендуємо тут відповісти 'Y', щоб видалити попередню установку, перш ніж продовжити.
Перевірка налаштування
Щоб перевірити підключення до RPi з браузера, перейдіть до списку пристроїв, знайдіть рядок із псевдонімом свого RPi, і натисніть на кнопку «Connect». Буде показана інтернет-адреса вашого пристрою.
Управління світлодіодом і транзисторним ключом
Використовуючи додаток, ви можете включити і виключити певний вивід GPIO натисканням на кнопку поруч з ним. Зробимо, наприклад, підключивши світлодіод послідовно з резистором 270 Ом до виводу 3,3 В (анод) і виводу 25 GPIO (катод). У веб-додатку, натиснувши кнопку поряд з GPIO 25, зможемо перемикати стан між IN і OUT, щоб вмикати і вимикати світлодіод:
Після того як переконалися, що WebIOPi працює, можете побудувати простий веб-додаток, що містить кнопку, яка перемикає світлодіод. Почніть зі створення каталогу /home/pi/project/html. Потім створіть новий текстовий файл, вставте в нього код з наведеного нижче лістингу і збережіть файл під назвою index.html в каталозі /home/pi/project/html. Навіть, якщо у вас є тільки базові знання HTML і JavaScript, ви будете в змозі ідентифікувати два основні будівельні блоки сторінки: блок коду JavaScript, що містить функцію, яка визначає кнопку для управління виводом 25 GPIO, і блок стилів, який формує появу кнопки.
Простий додаток WebIOPi:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>WebIOPi | LED Control</title>
<script type="text/javascript" src="/webiopi.js"></script>
<script type="text/javascript">
webiopi().ready(function() {
var button = webiopi().createGPIOButton(25, "LED");
$("#controls").append(button);
webiopi().refreshGPIO(true);
});
</script>
<style type="text/css">
button {
display: block;
margin: 5px 5px 5px 5px;
width: 105px;
height: 45px;
font-size: 24pt;
font-weight: bold;
color: white;
}
</style>
</head>
<body>
<div id="controls" align="center"></div>
</body>
</html>
Далі, нам потрібно переналаштувати WebIOPi, щоб він використовував каталог /home/pi/project/html, як свій кореневий каталог документів. Запустіть:
sudo nano /etc/webiopi/config
Команда відкриє конфігураційний файл у текстовому редакторі nano. Додайте рядок doc-root = /home/pi/project/html в секції [HTTP]. Збережіть зміни і перезавантажте WebIOPi за допомогою:
sudo /etc/init.d/webiopi restart
Тепер, відкрийте в браузері http://raspberrypi:8000, і ви повинні побачити новий веб-додаток у всому його мінімалістичному стилі. Натискайе кнопку, щоб включати і виключати світлодіод.
Крім параметрів id і label, процедура webiopi().createButton також підтримує додатковий параметр, який може бути використаний для створення кнопки з власною функції. Використовуючи цю функціональність, ви можете змінити створений веб-додаток для управління транзисторним ключом. Цей транзисторний перемикач керує заданим виводом GPIO, вмикаючи і вимикаючи його з півсекундним інтервалом. Використовуючи WebIOPi, ви можете написати простий веб-додаток, який дозволить контролювати транзисторний ключ за допомогою кнопки.
Написання додатку, який управляє транзисторним ключом, не вимагає занадто багато роботи - ви можете використати наведений раніше приклад коду для світлодіоду, як шаблон. Все, що вам потрібно зробити, це замінити код між тегами <script type="text/javascript"></style> кодом, наведеним нижче. Як ви можете бачити, блок коду, який створює кнопку, схожий на попередній приклад, але він використовує процедуру webiopi().createButton, яка визначає кнопку з викликом функції outputSequence, яка додається до неї.
Код перемикання транзистора для WebOPi:
<script type="text/javascript">
webiopi().ready(function() {
var content, button;
content = $("#content");
button = webiopi().createButton("trigger", "Trigger!", outputSequence);
content.append(button);
});
function outputSequence() {
var sequence = "01"
webiopi().outputSequence(25, 500, sequence, sequenceCallback);
}
function sequenceCallback(gpio, data) {
alert("Triggered on GPIO" + gpio);
}
</script>
Ця функція робить дві речі: Вона визначає послідовність сигналу і виводить його на вивід GPIO на певний проміжок в мілісекундах. У цьому випадку послідовність включає вивід і вимикає на інтервал в 0,5 сек. Процедура webiopi().outputSequence, у свою чергу, викликає функцію sequenceCallback, яка відображає повідомлення, що містить попередження, яке служить підтвердженням того, що код був успішно виконаний. Тепер, зберіть транзисторний ключ, як показано на схемі нижче, і використайте створений веб-додаток, щоб запустити його. У даному конкретному випадку, транзисторний ключ може бути легко використаний для вмикання і вимикання різних пристроїв.
Завдання та питання для перевірки
1. Зберіть схему з 3-ма свтлодіодами та організуйте керування ними через WebIOPi в локальній мережі.