Виконання сценаріїв Python через веб-інтерфейс


15

Я бачив безліч проектів, які стверджують, що керують штифтами GPIO, але мені хочеться дещо інакше, наприклад, щоб мати змогу блимати світлодіод.

Чи є там система, де за допомогою веб-інтерфейсу я можу клацати та виконувати сценарій python, наприклад "blink.py" на моїй малині.

Відповіді:


12

Ви можете зробити це будь-якою кількістю способів, використовуючи CGI або інший серверний скрипт. Однією з проблем буде дозвол на доступ до шпильок GPIO. Здається, не існує чистого рішення . В даний час, можливо, найпростіше порушити файли gpio користувачеві, який працює з веб-сервером, викликати (suid) програму, яка може отримати доступ до штифтів, або мати окремий демон з доступом до шпильок, на які ви можете надсилати повідомлення (сигнал, передача даних) / socket, інші ipc ...).

Для «виконань пітона скрипта через веб - інтерфейс», ви можете захотіти поглянути на web.py . Це дуже акуратний маленький модуль, який дозволяє записати один файл окремої "веб-служби", яка може зробити що завгодно. Дуже зручно для подібних речей IME. Ефективно не потребує конфігурації чи спеціального програмного забезпечення (крім звичайної установки python та самого web.py). Просто напишіть обробники для URL-адрес у python, необов'язково з HTML-шаблонами та запустіть. Наведіть клієнта (браузер, інший скрипт, wget ..) на потрібний порт і він просто працює. :)

Редагувати: новий проект, помічений, серпант, здається, дозволяє вимкнути gpio з розетки або, можливо, підробленого інтерфейсу пристрою char


4
flask здається схожим на web.py. Є також Джанго, який, схоже, має більше можливостей - можливо, надмірний рівень для цього проекту.
Фрепа

erm, для доступу до GPIO просто додайте користувача до групи gpio. Або запустити сервер як root, що більшість людей робить для порта 80 все одно. Кольорові приклади можуть викликати сценарії або використовувати час, щоб додати сон між перемиканнями. Основна особливість - {{}} в шаблонах, які, я думаю, ОП не знадобилися.
mckenzm

Дякуємо за оновлення. Однак для "erm" ця відповідь є з 2012 року, коли GPIO, як відомо, були лише корінням. Я бачу, що зараз існує група gpio, яка має фантастичний прогрес і більш правильний спосіб доступу до обладнання.
XTL

2

Якщо ви тільки починаєте веб-розробку, погляньте на пляшку . Пляшка простіша за колбу в тому сенсі, що вона є повноцінною веб-рамкою в одному файлі. На відміну від цього, Flask прагне повторно використовувати звуковий код з різних бібліотек і, отже, може бути більш твердим, але й складнішим.

Ось привіт Світ з пляшкою:

from bottle import route, run, template

@route('/hello/:name')
def index(name='World'):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

Запустіть його:

python HelloBottle.py

І відкрити в браузері: http://localhost:8080/hello/world


Для того, щоб ваш сайт доступний з інших комп'ютерів, встановлених hostна 0.0.0.0в runметоді. Останній рядок вищезгаданого Hello World повинен читати:

run(host='0.0.0.0', port=8080)

Тепер ви можете мати доступ до свого веб-сайту через IP-адресу Pi, наприклад: http://192.168.0.123:8080/hello/world

Детальнішу інформацію див. У документації щодо розгортання пляшки .


На своєму Raspberry Pi, якщо я виконую, curl http://localhost:8080/hello/worldя отримую очікувані результати. Однак я хочу мати доступ до цього на своєму звичайному комп’ютері через мережу. Після використання ifconfigна мій IP адреса, наступний URL на моєму звичайному комп'ютері не може встановити з'єднання: http://192.168.1.102:8080/hello/matthew. Я можу отримати доступ до іншої веб-сторінки, яку я зробив за адресою ` 192.168.1.102/home.php '. Чи маєте ви уявлення про те, як я можу перейти на свою сторінку пляшок?
Меттью Мойсен

Доступ до вашого home.php доступний через порт 80 (http), спробуйте запустити флакон на цьому порту, і якщо він успішно переконайтесь, що між або на робочому столі немає брандмауерів і піктограми, що блокує pi 8080.
Bengt

Виявляється, мені потрібно було змінити свій IP на localhost або на 0.0.0.0
Matthew Moisen


1

Встановіть ноутбук iPython.

rpi#> sudo apt-get install ipython-notebook ipython3-notebook

Потім запустіть його:

rpi#> ipython notebook

Примітка: Ви можете отримати доступ до нього також з ПК:
rpi #> ipython notebook --ip = 10.0.0.7
# тут 10.0.0.7 - це мій IP-RPi.
# з іншого комп’ютера в браузері, який я набираю:
http://10.0.0.7:8888

введіть тут опис зображення

Ви побачите це:

введіть тут опис зображення

Потім створіть новий ноутбук і запустіть свій код там:

введіть тут опис зображення

Метод тесту:

введіть тут опис зображення

Бібліографія:

http://ipython.org/
http://jupyter.org/
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/
http://maxembedded.com/2014/07/ використання-малинового-пі-гпіо-використання-пітона /

Youtube: https://www.youtube.com/watch?v=cJuF4IDMuLY

Дуже важливо:

Музика працює на RPi у фоновому режимі в екрані linux на mps-youtube.

rpi#> sudo apt-get install python3-pip
rpi#> sudo pip3 install --upgrade mps-youtube  
rpi#> sudo pip3 install --upgrade https://github.com/mps-youtube/pafy/archive/develop.zip
rpi#> mpsyt # to start it
    # configure mpsyt to show video, player.
    mpsyt#> set show_video True
    mpsyt#> set player omxplayer
    mpsyt#> set search_music False
    mpsyt#> . lindsey stirling
    mpsyt#> 2 # to play song from a list.

Удачі!


Ваше питання можна вдосконалити ... Навіщо встановлювати ноутбук Python? Що саме це робить? Він, безумовно, повинен коментувати можливі проблеми безпеки (наприклад, залишити його відкритим для Інтернету).
Jacobm001

@ Jacobm001, не сьогодні, не зараз. Якщо потрібно, дотримуйтесь Бібліографії внизу.
Віталій Гельберт

0

1
Будь ласка, узагальнюйте підручник у своїй відповіді, якщо посилання зникне колись або зміниться контингент.
tlhIngan

Тут ми намагаємося прийняти нову політику стосовно безвідповідальних відповідей лише на посилання. Якщо ця публікація не буде відредагована таким чином, щоб вона містила інформацію, яка може відповідати, хоч і мінімально, через 48 годин вона буде перетворена на Wiki Wiki, щоб спростити її виправлення спільнотою.
Стів Робіллард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.