Raspberry Pi リモート コントロールの導入を開始する: Flask フレームワークの学習と使用


1. フラスコフレームワーク

  • Flask は、Python の Werkzeug ツールキットと Jinja 2 テンプレート エンジンを使用して、Python で書かれた軽量の Web アプリケーション フレームワークです。Flask は、開発者が Web アプリケーションと API を迅速に構築するのに役立ちます。

  • Flask の設計目標は拡張を容易にすることであり、必要なライブラリを自由に使用できます。基本的な Web アプリケーション フレームワークを提供しますが、開発者は自分のニーズを満たすために使用するライブラリとツールを自由に選択できます。

  • Flask は、ルーティング、テンプレート エンジン、フォーム処理、リクエストとレスポンスの処理などの基本機能を提供し、認証、データベース アクセス、キャッシュ、メール送信などの多くの拡張機能をサポートします。Flask は軽量で使いやすいため、Web 開発、データ視覚化、機械学習モデルの展開などの分野で広く使用されています。


2. 環境を構築する

  1. Flaskライブラリをインストールする
pip install flask
  1. Flask アプリケーションを作成します: raspi.py(名前のカスタマイズ)
from flask import Flask

app = Flask(__name__)
# 定义了一个路由函数
@app.route('/')
def hello():
    return 'Hello, World!'

  1. プロジェクト開始コマンド

最初の一歩

set FLASK_APP=raspi.py  # 设置环境变量

第二段階

flask run  #  启动
  1. 上記のコマンドは FLASK_APP 環境変数を raspi.py に設定し、flask run コマンドを実行して Flask アプリケーションを起動します。ブラウザで http://127.0.0.1:5000/ にアクセスして、アプリケーションから返された文字列を確認します。

ここに画像の説明を挿入

警告解析:警告: これは開発サーバーです。運用環境では使用しないでください。代わりに実稼働 WSGI サーバーを使用してください。

  • 理由:
  1. この警告は、サーバーの起動時に Flask によって表示されます。これは、Flask に付属する開発サーバーは運用環境には適しておらず、Flask アプリケーションのデプロイには WSGI サーバーを使用する必要があることを意味します。WSGI は、Web サーバーと Web アプリケーション間の通信のための標準インターフェイスであり、これにより、Flask アプリケーションが運用環境でより安定して効率的に実行できるようになります。
  2. アプリケーションをローカルで開発およびデバッグするだけの場合は、この警告を無視してかまいません。ただし、アプリケーションを運用環境にデプロイする場合は、Gunicorn、uWSGI、mod_wsgi などの WSGI サーバーを使用することをお勧めします。

ここに画像の説明を挿入


3.Raspberry Piとの通信を実現

  1. Raspberry Pi からのリクエストを処理するルーティング関数を定義します。GET メソッドを使用して Raspberry Pi のステータスを取得します。
  • PCコード:
from flask import Flask

app = Flask(__name__)

@app.route('/get_status', methods=['GET'])
def get_status():
    # 在这里实现获取树莓派状态的代码,比如获取GPIO引脚状态。
    return 'OK'

  • Raspberry Pi:
    Python のリクエスト ライブラリを使用して HTTP GET リクエストを送信します。
    HTTP 応答ステータス コード 200 は、サーバーがリクエストを正常に処理し、要求されたリソースを返したことを示します。
import requests

url = 'http://<这里写Flask服务器地址>:5000/get_status'
response = requests.get(url)

if response.status_code == 200:
    status = response.text
    print('状态显示:', status)
else:
    print('获取状态失败!')


おすすめ

転載: blog.csdn.net/IWICIK/article/details/129128352