#!c:\winpython363\python-3.6.3.amd64\python
# -*- coding: utf-8 -*-
# apache2サーバー版
# ブラウザが定期的に読み込み、環境データをリアルタイムに表示する
import datetime
import math
import io , sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') # 日本語処理 windows用
# データ域
ssnum = 6
loc = ['屋 外', '乾燥庫1', '乾燥庫2', '鉄骨2F', 'ハウス1', '詰 所']
sid = ['00B01EBA', '00B02B96', '00B01E91', '00B02B95', '00B02B94', '00B02B93']
temp = [''] * ssnum # 温度データ
humid = [''] * ssnum # 湿度データ
tmpd = [''] * ssnum # 露点データ
signal = [0] * ssnum # 信号強度(0-255)
# HTMLフォーマット1 先頭部(1分毎にリロードさせる)
html_body1= '''
中島農園 {0.year:d}/{0.month:d}/{0.day:d} {0.hour:d}:{0.minute:d}:{0.second:d}
|
温 度 |
湿 度 |
露 点 |
センサ |
S |
'''
# HTMLフォーマット2 データ部
html_body2= '''
%s |
%s ℃ |
%s % |
%s ℃ |
%s |
%d |
'''
# HTMLフォーマット3 末尾部
html_body3= '''
'''
# 更新データの作成
now=datetime.datetime.now() # 現在日時取得
for i in range(ssnum): # データ初期化
temp[i] = '--.-'
humid[i] = '--'
tmpd[i] = '--'
signal[i] = 0
f = open('D:\web\cgi-bin\env_dat.txt', 'r', encoding='UTF-8') # データ受け渡しファイルをオープン
for line in f: # 全受信データについて繰り返し処理
rdt = (line.strip()).split(',') # 空白を削除し、リスト形式に変換
for i in range(ssnum): # ブラウザに表示する全センサーについて繰り返す
if rdt[0] == sid[i]: # 受信データのセンサーIDをチェックし表示すべきセンサーか確認
temp[i] = rdt[1].strip() # 温度データを保存
humid[i] = rdt[2].strip() # 湿度データを保存
signal[i] = float(rdt[3].strip()) / 20 # 信号強度を保存
t = float(temp[i])
h = int(humid[i])
ew = 6.11*10**(7.5 * t / (t + 237.3)) # 飽和水蒸気圧
e = ew * h / 100 # 水蒸気圧
td = 237.3 * math.log10(6.11 / e) / (math.log10(e / 6.11) - 7.5) # 露点温度
if td >= 0:
td = td + 0.5
else:
td = td - 0.5
tmpd[i] = str.format('%3d' % (td)) # 露点温度
break;
f.close()
# ブラウザへの送信
print('Content-type: text/html; charset=UTF-8')
print(html_body1.format(now)) # 先頭部送信
for i in range(ssnum): # データー部送信
print(html_body2 % (i, loc[i], temp[i], humid[i], tmpd[i], sid[i][-6:], signal[i]))
print(html_body3) # 末尾部送信