前提・実現したいこと
最近プログラムを勉強し始めた初心者です。
Python3で湿球温度算出プログラムを作成しています。
Raspberry PiとセンサーのBME280を用いてブラウザ上で湿球温度をリアルタイム表示する
温度計の作成を目指しています。
発生している問題・エラーメッセージ
現在自分が作成した湿球温度算出プログラムを用いてブラウザ上に温度表示をさせているのですが、
一度計算した値を繰り返し表示するのみで温度のリアルタイム表示ができない
該当のソースコード
Python3
1import math 2import bme 3from flask import * 4import time 5import json 6 7w = bme.readData() 8t,p,h = w 9K = 273.15 #kelvin 10Tc = 647.3 #Critical temperature 11Pc = 221200 #critical pressure 12Td = float(t) 13HR = float(h) 14 15 16def Pv1(): 17 X1 = (1-(Td+K)/Tc) 18 A1 = (-7.76451*X1) 19 B1 = (1.45838*X1**1.5) 20 C1 = (-2.7758*X1**3) 21 D1 = (-1.23303*X1**6) 22 Fr1 = (A1+B1+C1+D1)/(1-X1) 23 exp1 = math.exp(Fr1) 24 Ps1 = (Pc*exp1) 25 Pv1 = (HR/100*Ps1) 26 27 return Pv1 28 29def Pv2(Tw): 30 X2 = 1-((Tw+K)/Tc) 31 A2 = (-7.76451*X2) 32 B2 = (1.45838*X2**1.5) 33 C2 = (-2.7758*X2**3) 34 D2 = (-1.23303*X2**6) 35 Fr2 = (A2+B2+C2+D2)/(1-X2) 36 exp2 = math.exp(Fr2) 37 Ps2 = (Pc*exp2) 38 Pv2 = Ps2-(0.000662*1013.25*(Td-Tw)) 39 40 return Pv2 41 42Tw = float(1) 43V1 = Pv1() 44V2 = Pv2(Tw) 45 46 47while V1 > V2: 48 Tw +=0.01 49 V2 = Pv2(Tw) 50 if V1 >=(V2-0.1): 51 wb = (round(Tw,1)) 52 elif V1 < V2: 53 Tw -=0.01 54 V2 = Pv2(Tw) 55 if V1 >=(V2+0.1): 56 wb = (round(Tw,1)) 57 elif V1 == V2: 58 wb = (round(Tw,1)) 59 60 61app = Flask(__name__) 62 63 64 65 66@app.route("/") 67def index(): 68 temp = wb 69 return render_template('index.html', temp=temp) 70 71 72 73@app.route("/update") 74def updates(): 75 def UpdatesValues(): 76 while True: 77 78 # Build up a dict of the current thing state. 79 temp_state = { 80 'temperature': wb 81 } 82 yield('data: {0}\n\n'.format(json.dumps(temp_state))) 83 time.sleep(1.0) 84 return Response(UpdatesValues(), mimetype='text/event-stream') 85 86if __name__ == "__main__": 87 app.run(host='0.0.0.0') 88 89
試したこと
計算式を関数化していないため繰り返しができないのかと考えましたがうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
python3.7.3
呈示された update は定周期で呼ばれているのですか?
回答1件
あなたの回答
tips
プレビュー