0
0

More than 1 year has passed since last update.

FastAPIで異なるセンサーからデータをGETする

Posted at

FastAPIの動作確認

公式チュートリアルを見ながらmain.pyを作成し、ライブサーバーを実行する

同一ネットワーク下で以下のようにGETすると、jsonが吐き出されます

curl http://127.0.0.1:8000 

→{"message":"Hello World"}

例えば、複数のセンサーがつながったラズパイを用意して、FastAPI経由で特定のセンサーデータを取得したい場合は以下のようなmain.pyを作成すれば良い

from fastapi import FastAPI

app = FastAPI()


@app.get("/sensorA")
async def root():
    return {"time": "yyyy:mm:dd","temp":"25degree"}

@app.get("/sensorB")
async def root():
    return {"time": "yyyy:mm:dd","humid":"40%"}

@app.get("/sensorC")
async def root():
    return {"time": "yyyy:mm:dd","co2":"400ppm"}

もちろん、ライブサーバーを立てたり閉じたりするのは面倒なので、以下のようにコードが叩かれたらサーバーも常に起動するようにしても良い

from fastapi import FastAPI
import uvicorn

app = FastAPI()


@app.get("/sensorA")
async def root():
    return {"time": "yyyy:mm:dd","temp":"25degree"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

ラズパイにlocalhostのポート8000でライブサーバーを立てた場合は「<ラズパイIP>:8000」でGETできる
image.png

センサーAにレスポンスが来た際に以下のようにして、センサーAのデータが取得できるようにする。
sensorA_dataスクリプトに取得スクリプトを買いとけば良い

from fastapi import FastAPI
import sensorA

app = FastAPI()


@app.get("/sensorA")
async def root():
    sensorA_data = sensorA.get_data()
    return sensorA_data

Nginxに取得データ情報を飛ばし、確認

from fastapi import FastAPI
import sensorA

app = FastAPI()


@app.get("/sensorA")
async def root():
    sensorA_data = sensorA.get_data()
    return sensorA_data

外から作成したスクリプトを呼ぶ際はcurl
https://qiita.com/danishi/items/07dd1b2f2a28255f7a85

メモ

0
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
0
0