Webインターフェイス経由でPythonスクリプトを実行する


15

GPIOピンを制御すると主張する多くのプロジェクトを見てきましたが、たとえばLEDを点滅させることができるように、少し違うものが欲しいです。

Webインターフェイスを介して、Pythonスクリプト(たとえば、ラズベリーの「blink.py」)をクリックして実行できるシステムがあります。

回答:


12

これは、CGIまたは他のサーバー側スクリプトを使用して、さまざまな方法で実現できます。1つの問題は、GPIOピンへのアクセス許可です。きれいな解決策はないようです。現在、ウェブサーバーを実行するユーザーにgpioファイルchownする、ピンにアクセスできる(suid)プログラムを呼び出すか、メッセージを送信できるピンにアクセスできる別のデーモンを使用するのが最も簡単かもしれません(シグナル、パイプ/ socket、その他のipc ...)。

「Webインターフェースを介してpythonスクリプトを実行する」ために、web.pyを見るとよいでしょう。これは、何でもできる単一のファイルスタンドアロン「Webサービス」を作成できる、非常にきちんとした小さなモジュールです。この種のIMEには非常に便利です。構成や特別なソフトウェアは必要ありません(一般的なpythonインストールとweb.py自体は別です)。必要に応じてhtmlテンプレートを使用して、PythonでURLのハンドラーを作成して実行します。クライアント(ブラウザ、他のスクリプト、wget ..)を正しいポートに向けると、正常に機能します。:)

編集:新しいプロジェクトが発見され、serpintはソケットまたはおそらく偽のcharデバイスインターフェースからgpioをウィグリングできるようです。


4
フラスコはweb.pyに似ているようです。より多くの機能を持っていると思われるDjangoもあります-おそらくこのプロジェクトではやり過ぎです。
フレパ

erm、GPIOアクセスの場合は、ユーザーをgpioグループに追加するだけです。または、ほとんどの人はとにかくポート80で行うルートとしてサーバーを起動します。Flaskの例では、スクリプトを呼び出したり、時間を使用してトグルの間にスリープを追加したりできます。主な機能は、テンプレート内の{{}}であり、OPには必要ないと思われます。
マッケンズム

更新していただきありがとうございます。「エルム」については、この答えは、GPIOが悪名高いルートのみであった2012年からのものです。現在、gpioグループがあります。これは素晴らしい進歩であり、ハードウェアにアクセスするより正確な方法です。
XTL

2

Web開発を始めたばかりの場合は、Bottleをご覧ください。ボトルは、単一ファイル内の完全なWebフレームワークであるという意味で、フラスコよりも単純です。対照的に、Flaskはさまざまなライブラリのサウンドコードを再利用することを目的としているため、より強固でありながら複雑な場合があります。

これがボトルのあるHello Worldです。

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


他のコンピューターからWebサイトを利用できるようにするhost0.0.0.0は、runメソッドでに設定します。上記のHello Worldの最後の行は次のようになります。

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

次のように、PiのIPアドレスを介してWebサイトにアクセスできるようになります。 http://192.168.0.123:8080/hello/world

詳細については、展開に関するボトルのドキュメントを参照しください。


Raspberry Piで実行するcurl http://localhost:8080/hello/worldと、期待どおりの結果が得られます。ただし、LAN経由で通常のコンピューターでこれにアクセスできるようにしたいと思います。ifconfigIPアドレスに使用した後、通常のコンピューター上の次のURLで接続を確立できませんhttp://192.168.1.102:8080/hello/matthew。` 192.168.1.102/home.php 'で作成した別のWebページにアクセスできます。ボトルページにどのようにアクセスできるかご存知ですか?
マシューモイセン

あなたのhome.phpは、暗黙的にポート80(HTTP)、そのポート上のボトルを実行してみ介してアクセスし、それがsuccedes場合は、必ずノーファイアウォール、デスクトップおよびポート8080のブロッキングパイの間、または上である作るれる
ベングト

IPをlocalhostまたは0.0.0.0のいずれかに変更する必要があることが判明しました
Matthew Moisen


1

iPython Notebookをインストールします。

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

それを実行します:

rpi#> ipython notebook

注:PCからもアクセスできます:
rpi#> ipython Notebook --ip = 10.0.0.7
#ここ10.0.0.7は私のRPi IPです。
#私が入力しているブラウザーの別のコンピューターから: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/ using-raspberry-pi-gpio-using-python /

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

非常に重要:

音楽は、mps-youtube上のlinux screenプログラムでバックグラウンドでRPiで実行されています。

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、今日ではなく、今も。必要に応じて、下部の参考文献に従ってください。
ビタリーゲルバート16

0

1
リンクがいつか消えたり、競合が変わったりした場合に備えて、回答にチュートリアルをまとめてください。
tlhIngan

ここでは、情報なしのリンクのみの回答に関する新しいポリシーを試行しています。この投稿が編集されていない場合でも、最小限の回答となる情報を含む場合、48時間以内にコミュニティWikiに変換され、コミュニティによる修正が簡単になります。
スティーブロビラード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.