WebブラウザからRaspberry Pi を操作する(Flask 利用)

解説

Flask を利用すると、Webアプリケーションを簡単に作成することができます。

Webブラウザから、Raspberry Pi のGPIOを操作する、Webアプリケーションを作成することもできます。

コード概要

WebアプリケーションPythonスクリプトファイル(app.py)

「/」にアクセスしたときの処理
「/」にアクセスしたときに表示する用の「index.html」ファイルを「templates」フォルダに用意します(内容は、下記「HTMLファイル(index.html)」の項)。
「/」にアクセスしたときの処理としては、render_template("index.html") の戻り値を返します。
ファイルの先頭に、「render_template」のimportを追加します。
Webブラウザからのリクエストに対する処理
Webブラウザからのリクエストに対する処理として、「/changepinstate」にアクセスしたときの処理を定義します。(@app.route("/changepinstate"))
POST要求を受け取るように、app.routeの引数に、「method=["POST"]」を追加します。(@app.route("/changepinstate", methods=["POST"]))
リクエストパラメータの値は、request.form["パラメータ名"] で取得できます。
ファイルの先頭に、「request」のimportを追加します。
必要な処理を記述します。

HTMLファイル(index.html)

HTMLのbody
3つのLEDの点灯/消灯を切り替えるためのチェックボックスについての処理を記述します。
各チェックボックスは、クリックされると、onCheckboxLed()をコールするように記述します。
onCheckboxLed( led )
チェックボックスがクリックされるとコールされます。
ピンの新たな状態の送信関数(changePinState())をコールします。
changePinState( pin, state )
onCheckboxLed()からコールされます。
動的にフォームを作成し、パラメータの設定をし、POSTメソッドによりリクエスト送信する処理を記述します。

部品表

部品名 数量 商品名 参考価格
LED 3 赤色LED 3mm OSDR3133A 100個350円
100Ω抵抗器 3 カーボン抵抗(炭素皮膜抵抗) 1/6W 100Ω 100本100円
Raspberry Pi 1 Raspberry Pi 3 Model B 6,300円
ブレッドボード 1 EIC-801 250円
ジャンパーワイヤ 適量 ジャンパーワイヤ(オス-メス) 10本300円

接続例

出力ピンとして、GPIO 23、24、25 を使用した場合の接続例

Flask のインストール

Raspberry Pi に Flask をインストールしてない場合は、まず、Flask をインストールします。

Flask のインストール

スクリプトファイルの作成

「/home/pi/work/flask/changegpiovalue」というフォルダを作成します。

WebアプリケーションPythonスクリプトファイルを作成します。
「/home/pi/work/flask/changegpiovalue」フォルダに、「app.py」というファイル名で、以下の内容のスクリプトファイルを作成します。

HTMLファイルの作成

「/home/pi/work/flask/changegpiovalue/templates」というフォルダを作成します。

Webブラウザからアクセスする HTMLファイルを作成します。
「/home/pi/work/flask/changegpiovalue/templates」フォルダに、「index.html」というファイル名で、以下の内容のHTMLファイルを作成します。

実行

作成したスクリプトを実行します。

パソコンやスマートフォンのWebブラウザを起動し、Raspberry Pi のIPアドレス、ポート5000にアクセスします。

以下のようなページが表示されます。


ブラウザ画面のチェックボックスの選択状態を変更すると、LEDの点灯、消灯の状態が変わります。


実行したスクリプトは、
Ctrl + C
で終了します。

ダウンロード

サンプルスクリプトファイル