LoginSignup
4
0

More than 3 years have passed since last update.

自作WebAPIとESP32との通信:WebAPI編

Last updated at Posted at 2020-12-11

はじめに

この記事はWeb API Advent Calendar 2020の12日目の記事です。同時に、初投稿&誕生日でもあります。

本題

  • 前にESP32と自作WebAPIとの通信をやったので、そのやり方的なもの。
  • やることとしては、ESP32から自作WebAPIに値を送り、レスポンスを返すという簡単なもの。

用意するもの

  • PC(python3やESP32、git等の開発環境はセットアップ済み)
  • GitHubのアカウント
  • ESP32(Arduino互換)

手順

 1.色々とインストールする

pip3 install -U pip   # pipのアップグレード
pip3 install Flask    # Flaskのインストール 
pip3 install gunicorn # gunicornのインストール

2.WebAPIのテスト

  • テスト用にhello.pyを作る
hello.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello"

if __name__ == "__main__":
    app.run(debug=True, port=80)
  • hello.pyを実行
python hello.py
  • ブラウザからlocalhostにアクセスして、Helloと表示できたら成功

Hello.PNG

WebAPIの実行終了はCtrl+Cをターミナルで入力すれば終わります

3.WebAPIの作成

  • 今回はESP32から$a,b$を受け取り、$a+b$の値を返すWebAPIを作る
webapi.py
from flask import Flask
app = Flask(__name__)

@app.route("/a=<x>,b=<y>")
def Sum(x,y):
    return str(int(x)+int(y))

if __name__ == "__main__":
    app.run(debug=True, port=80)
  • webapi.pyを実行します
python webapi.py
  • ブラウザからlocalhost/a=2,b=3にアクセスして、5と表示されたら成功

webapi.PNG

4.必要なファイルを用意

webapi.pyと同じディレクトリに以下のファイルを追加します

  • Procfile
  • requirements.txt

Procfileには、実行コマンドを書きます

Procfile
web: gunicorn webapi:app

requirements.txtにはHeroku上で使うpythonのライブラリを書きます

pip3 freeze > requirements.txt

5.GitHubにpush

  • リポジトリを作成する

repo.PNG

  • プログラマなどが入ってるディレクトリで以下のコマンドを打ち、mainにpushします
git init
git checkout -b main
git add *
git commit -m "First commit"
git remote add origin 自分のリポジトリのURL
git push -u origin main

6.Herokuでの設定

  • Herokuのサインアップからアカウントを作成します

  • 下の画面まで行ったら[Create a new app]を選択します

Heroku.PNG

  • アプリの名前を決めます

createApp.PNG

  • [Deployment method]からGitHubを選択し、ログイン

deploy.PNG

  • 下の画像のrepo-namesから先ほど作成した自分のリポジトリの名前を入力してください

connectGithub.PNG

  • [Enable Automatic Deploys]をクリックする(GitHubのmainにpushすると自動的にデプロイされる)
  • [Deploy Branch]を押して、デプロイする

image.png

※ここでデプロイが失敗した場合、不要なライブラリが悪さをしている可能性があります
 その場合は、requirements.txt内から不要なライブラリを削除してください
 因みに自分は、py32winが邪魔をしました

  • テストのためhttps://[Herokuでのアプリ名].herokuapp.com/a=2,b=3に接続  以下のような画面が表示されたら成功 HerokuTest.PNG

まとめ

FlaskとHerokuの使い方について自分なりにまとめてみました。
初めての投稿ということもあり、わかりにくい部分も多かったともいます。
何かわからないことや指摘がある場合、言ってくださると助かります。
それでは、まとめや続きは明日のESP32編(Arduino Advent Calendar 2020)で!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0