Телефонуйте » (+38) 096 227 41 41

Скористаємося веб-інтерфейсом для управління 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, щоб отримати доступ до всіх 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, яка відображає повідомлення, що містить попередження, яке служить підтвердженням того, що код був успішно виконаний. Тепер, зберіть транзисторний ключ, як показано на схемі нижче, і використайте створений веб-додаток, щоб запустити його. У даному конкретному випадку, транзисторний ключ може бути легко використаний для вмикання і вимикання різних пристроїв.

Робота з датчиками

WebIOPi також може обробляти різні пристрої, у тому числі датчики. Ви можете використовувати цю функціональність, щоб перетворити свій RPi в веб-термометр, підключивши датчик температури до нього і створивши простий додаток WebIOPi для читання даних датчика. Для цього проекту, потрібний датчик температури DS18S20 і резистор 4.7K.
Почніть з підключенням обох компонентів, як показано на схемі нижче.

Далі, ви повинні включити датчик в конфігурації WebIOPi. Щоб зробити це, запустіть команду:

sudo nano /etc/webiopi/config

Розкоментуйте рядок #temp2 = DS18B20 (тобто, видаліть символ #) у розділі DEVICES. Потім перезавантажте WebIOPi допомогою команди:

sudo /etc/init.d/webiopi restart

У терміналі, виконайте такі команди, щоб завантажити необхідні модулі ядра:

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/
ls

Якщо датчик був виявлений і працює правильно, то ви повинні побачити наступне повідомлення висновок:

28-000005311dc9  w1_bus_master1

де 28-000005311dc9 - серійний номер датчика.

Далі, відкрийте в браузері http://raspberrypi:8000/app/devices-monitor, і ви повинні побачити поточне показання температури. Звичайно, сторінка за замовчуванням для моніторингу датчиків та пристроїв є не достатньою і не особливо функціональною, тому, можливо, захочете створити свій власний веб-додаток для читання і відображення даних датчика. Доброю новиною є те, що вам не доведеться починати з нуля: У темі на офіційному форумі WebIOPi, ви можете знайти розумний веб-додаток, який зчитує температуру і відображає її за допомогою віджета Google gauge як показано на рис.:

Нижче наведений весь код, щоб вивчити і налаштувати показ температури з Google Gauge:

<html>
         <head>
         <script type="text/javascript" src="//www.google.com/jsapi"></script>
         <script type="text/javascript" src="/webiopi.js"></script>
         <script type="text/javascript">
         webiopi().ready(function() {
         tmp = new Temperature("temp2");{
         setInterval(updateUI,1000);

         }
                 function updateUI() {
                         tmp.getCelsius(temperatureCallback);
                 }
                 function temperatureCallback(tmp, data) {
                         gaugeData.setValue(0, 0, data);
                         gauge.draw(gaugeData, gaugeOptions);
                 }
         });
         </script>
         <script type="text/javascript">
         google.load('visualization', '1', {packages: ['gauge']});
         google.setOnLoadCallback(drawGauge);
         var gaugeOptions = {min: 0, max: 110, yellowFrom: 50, yellowTo: 70,
         redFrom: 70, redTo: 110, minorTicks: 5};
         var gauge;
         function drawGauge() {
                 gaugeData = new google.visualization.DataTable();
                 gaugeData.addColumn('number', 'Temp');
                 gaugeData.addRows(1);
                 gaugeData.setCell(0, 0, 0);
                 gauge = new google.visualization.Gauge(document.getElementById('gauge_div'));{
                 gauge.draw(gaugeData, gaugeOptions);
                 }
         }
         </script>
</head>
<body>
<div id="gauge_div" style="width:560px; height: 280px;"></div>
</body>
</html>

Використання Python Macros з WebIOPi розглянемо в іншому навчальному курсі.

Новини

  • Модуль SMARC запускає Android або Linux на Snapdragon 820
    Модуль SMARC запускає Android або Linux на Snapdragon 820

    SMART 2.0 "Snapdragon 820 SOM" iWave має 3 Гб LPDDR4, 32 Гб eMMC, Wi-Fi та Bluetooth, а також вхідні/вихідні виводи, включаючи GbE, HDMI 2.0, MIPI-CSI, USB 3.0 та PCIe. Комп'ютер розміром 82x50 мм працює на ОС Android Snailbone або вище, з наступною підтримкою Linux. Snapdragon 820 об'єднує чотири 14-нм Cortex з технологією FinFET - два на частоті 2,15 ГГц, а два з 1,6 ГГц, які намагаються імітувати високоякісні Cortex-A72. Крім того, SoC оснащений 624 МГц Adreno 530 GPU, Hexagon 680 DSP і 14-розрядним ISP для Spectra. Snapdragon 820 SOM підтримує кодування H.265 4K@60 та кодування 4K@30.

    in Новини

Записатися на курс