#!/usr/bin/env python3 # -*- coding: utf-8 -*- # ブラウザが定期的に読み込み、環境データをリアルタイムに表示する # 場所名をクリックするとその場所の環境変化グラフを呼び出す import datetime import math # データ域 ssnum = 6 loc = ['屋 外', '乾燥庫', '鉄骨2F', 'ハウス1', 'ハウス2', '詰 所'] sid = ["00B0xxxA", "00B0xxx6", "00B0xxx5", "00B0xxx4", "00B0xxx1", "00B0xxx3"] temp = [""] * ssnum # 温度データ humid = [""] * ssnum # 湿度データ tmpd = [""] * ssnum # 露点データ signal = [0] * ssnum # 信号強度(0~255) # HTMLフォーマット1 先頭部 (1分毎にリロード:metaタグにて) html_body1= """
伝兵衛農園    {0.year:d}/{0.month:d}/{0.day:d}  {0.hour:d}:{0.minute:d}:{0.second:d}
""" # HTMLフォーマット2 データ部  html_body2= """ """ # HTMLフォーマット3 末尾部  html_body3= """
温 度 湿 度 露 点 センサ S
%s %s ℃ %s % %s ℃ %s %d
""" # 更新データの作成 now=datetime.datetime.now() # 現在日時取得 for i in range(ssnum): # データ初期化 temp[i] = "--.-" humid[i] = "--" tmpd[i] = "--" signal[i] = 0 f = open("/tmp/envmon.dat", "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(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) # 末尾部送信