2021年4月20日火曜日

Raspberry Pi ZeroとDHT11センサーモジュールで、温度・湿度の情報を返すREST APIを作成する

Raspberry Pi ZeroとDHT11センサーモジュールで、温度・湿度の情報を返すREST APIを作成するには、以下の手順を実行します。

開発手順

1. pipenvの導入
pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. dht11モジュールとflaskがインストールされた仮想環境作成
pipenvを使用する場合は以下のコマンドで、dht11とflask用の仮想環境を作成します。
mkdir -p ~/dht11_flask

cd ~/dht11_flask

pipenv --python 3

pipenv install dht11 flask

pipenv shell

3. Flask REST APIアプリケーションの作成
/dht11にアクセスされたとき、温度・湿度の情報を取得してJSONで返すコードを実装します。

app.py
from flask import Flask, jsonify, request
import RPi.GPIO as GPIO
import dht11

# initialize...
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)

app = Flask(__name__)

@app.route('/dht11')
def get_dht11():
  data = {}
  while True:
    instance = dht11.DHT11(pin=14)
    result = instance.read()
    if result.is_valid():
      data = {"temperature":result.temperature, "humidity":result.humidity}
      break
  return jsonify(data)

4. 実行
Flaskを実行するには、以下のコマンドを実行します。
export FLASK_APP=app.py

flask run -h 0.0.0.0

次に、ブラウザから以下のアドレスにアクセスして、温度・湿度の情報をjsonで返すことを確認します。
http://<Raspberry Piのホスト名またはIPアドレス>:5000/dht11

0 件のコメント:

コメントを投稿