前提
Raspberry Pi ZERO WH でPythonのFlaskを利用し簡易的なWebサーバーを作っています。
Flaskを用いて以下のようなWebページを制作するため、色々検索したのですが参考になる結果が得られず藁にもすがる思いでこちらで質問致しました。
###実現したいこと
・時刻とCPU温度はリロードするたびに新しいデータとして格納する
・過去5回の結果を下に押し出して表示したい。 (他人からアクセスされることは想定しない)
・5回より以前のデータは破棄したい。
以下が実行結果のイメージです。新しい結果を一番上に表示させ、古いデータは下に。
<1回目(ページを開いた時)>
<2回目(1回リロードしたとき)>
<5回目以降(4回以上リロードしたとき)>
発生している問題・エラーメッセージ
ページを開いた時orリロードしたときの1つのデータを持ってくるプログラムは作成したのですが、
そこからリロードする度にリスト?に格納する方法がわかりません。
該当のソースコード
Python
1from flask import Flask, render_template 2import subprocess 3import datetime 4app = Flask(__name__) 5 6@app.route('/') 7def root_page(): 8 proc = subprocess.run(['vcgencmd', 'measure_temp'], capture_output=True, text=True) 9 temp = proc.stdout[5:9] 10 date = datetime.datetime.now() 11 now = date.strftime("%Y-%m-%d %H:%M:%S") 12 return render_template('index.html', temperature=temp, datetime=now) 13 14if __name__ == '__main__': 15 app.run(debug=True, host='0.0.0.0', port=8888, threaded=True)
returnでテンプレートに1つの値を渡していますが、リストを渡すと考えています。
html
1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8" /> 5 <link rel="stylesheet" href="/static/css/main.css" /> 6 <title>Raspberry Pi Server</title> 7 </head> 8 <body id="normal-box4"> 9 <h1>Raspberry PiのCPU温度</h1> 10 <p>時刻:<span>{{ datetime }}</span></p> 11 <p>CPU温度は<span id="temp">{{ temperature }}</span>です</p> 12 </body> 13</html>
また、データの個数だけ繰り返してhtml要素を作るのに
html
1{% for temp in temperatures}<p>temperatures[temp]</p>{% endfor %}
は適切でしょうか?
試したこと
かなりググったのですが役立つ情報を見つけられず、知識もないため限界を感じたため質問させて頂きました。
補足情報(FW/ツールのバージョンなど)
GNU nano 3.2
Python3.7.6
PythonもRaspberry Piもかなりの初心者です。
なにか不足している情報があればすぐに補足いたしますのでコメントお願い致します。
回答1件
あなたの回答
tips
プレビュー