観測機器
WeatherDisplay の設定
  ご質問の多い気象観測用WeatherDisplayソフトの設定方法について、公開します。WeatherDisplayは多機能ですが、なかなか手強いソフトです。あくまでの当方の例であり、すべてを網羅しておらず、また動作を保証するものではありません。原典はこちらにあります。

 2014.8.13よりWeatherDisplay ver 10.37R Build 81で運用していますので、このバージョンについて記述します。
 新しいコンピュータへWeatherDisplayを移行する方法はこちら、またログファイルの形式変換のプログラムはこちらに公開します。

 WeatherDisplay の設定  Setup
   COM port
   Weather Station Type
   単位の設定
   色指定
   1-Wireの設定
   日照計
   サマリーの設定
   インターネットへの接続
   Webページの設定
 WeaterDisplayの日本語化  
 WeatherDisplayのコンピュータ移行方法  
 WeatherDisplayのログファイル処理  

Setup
1.setup
WeatherDisplayのサイトからダウンロードした、wdisplayXX.exeを実行
Setup Wizard画面で
インストール先を指定。 c:\wdisplay が推奨です。Finishすると、WeatherDisplayが立ち上がります。

2.はじめにLanguage指定があります。日本語はありませんので英語を指定します。日本語化は最後にやります。

COM port
メインスクリーンでControl Panel>COM Portに行き、計測器の接続されているCOM port番号を指定します。


つぎにDallas 1 wire /with station settingsタブをひらき、次のようにセッティングします。

Weather Station Type
つぎにWeather Station Typeを指定します。メインスクリーンで
Control Panel>Station Type & Settings>ここで該当する機種をクリックします。
私の場合は Dallas/AAG1wireで、その細部指定として次のように指定しています。




単位の設定
メインスクリーンでControl Panel>Units & Other Settings で次のように日本でよく使われる単位を指定します。

色指定
Control Panel>Colours で メインスクリーンの色を指定します。オリジナルのままですと、色ぐあいががどぎついので、工夫した方がよろしい。またFontを指定します。に述べるようにメインスクリーンのLabelを日本語化した場合、文字セットを「日本語」にするのをお忘れ無く。

1-Wireの設定
1-Wire LANに必要なセンサーを接続し、DS9097UアダプタをパソコンのComPortに接続します。その上で次のような手順で設定していきます。

1.WeatherDisplayのバックグランドで動くdallas1wirereader.exeを起動します。起動されていても隠れている場合があり、タスクバーを右クリックして、「Show」させます。(下図)
2.まず、右コラムのConnectionを上で指定したポート番号になっているか確認します。
3.次に右側コラムのの「Save/reset」ボタンをクリックします。
4.すると中央コラム上側に認識された1-WireセンサーのROM Idが表示されます。たとえば風速計の場合
Switch (windspeed or rain or lightening counter) i-button found ID 730000000DC2CE1Dのように。
この 730000000DC2CE1Dが風速計のカウンタのROM IDですから、これが表示されれば、WeatherDisplayは風速計を認識していることになります。
5.このIDをコピーして、右側のWind switch ROM の欄にペーストします。
6.ほかのセンサーも同様に追加していきます。
同種のセンサが複数ある時、一度では区別できないので、一つ一つ接続し加えていきます、
7.もう一度、「Save/reset」ボタンをクリックします。すると、中央コラムの下部に測定された生データRaw Readingsが表示されます。
8.気圧計は、ここで較正値を、最小値と最大値としセットします。

このへんが1-wireを用いたWeatherDisplay設定の山場です。

なお、ROM IDの下2桁を見ると、1-wireデバイスの種類がわかります。

 ROM IDの下2桁  型番  説明
 10  DS18S20  温度センサ
 1D  DS2423  カウンタデバイス 
 26  DS2438  ADコンバータ
 20  DS2450  4回路ADコンバータ




日照計
メインスクリーンでControl Panel>Solar Sensor>MaxSolar of Day/TimeZone・・・タブを開きます。
観測の位置(北緯と東経)を入れます(東経はマイナス)。TimeZoneはマイナス9時間。


サマリーの設定
Summaryは日野気象台のトップページの気象概要の画面のことです。
メインスクリーンでControl Panel>Summary Images & Iconsをクリック
この気象台の名称、何を表示するか、デザインなどを設定します。



ここまですむと、計測と表示が始まります。

インターネットへの接続
いよいよ、インターネットへの接続です。
メインスクリーンでControl Panel>FTP & Connections ・・・をクリックします。
Connectionsのページで常時接続の場合は、Permanent connectionにチェックを入れ、FTP Host Settngsにより、アップロード先のサーバを指定します。そして大きなMain Internet SwitchをONにします。



つぎのページでアップロードの時刻を指定します。


WeatherDisplayのFTP機能を用いて、ほかのソフトがつくったファイルもWeb Cam Uploadでアップロードしています。たとえばライブカメラ、放射線のグラフなどです。


このほか様々な設定がありますが、ご自身でトライしてみてください。

Webページの設定
メインスクリーンでControl Panel>Web Files/Web Page Real Time FTP・・・をクリック。
Weather Station File Name にホームページのファイル名をしていします。この例では、hinoweather.htmlというファイルがwdisplay\webfiles\のフォルダのなかに作られ、アップロードされます。また、Graph Files Setup 以下は一緒にアップロードするグラフ類を指定します。


以上の設定により、自動生成されるHTMLファイルのソースは次の通りです。これで、めでたく開局となります。私の場合、このまま表示するのではなく、必要な画像ファイルを別に作ったホームページ上に、はりつけ表示しております。
    hinoweather.html ファイル
         
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><HTML><HEAD>
<TITLE>Weather Data</TITLE>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META NAME="keywords" CONTENT="Weather Display Live, Weather Display, Weather Station, Weather Software">
<META NAME="GENERATOR" CONTENT="Mozilla/3.03Gold (Win95; I) [Netscape]">
<META HTTP-EQUIV="Expires" CONTENT="Mon, 06 Jan 1990 00:00:01 GMT">
<META HTTP-EQUIV="Refresh" CONTENT="600">
</HEAD>
<BODY BACKGROUND="">



<P><center>This page is updated from recent data collected by a Dallas 1-wire weather station
<FONT COLOR="#FF0000"> Use the Reload or Refresh</FONT> facility on your browser to retrieve the latest data.</P></center>
<P><p align="center"><img src="hinoweather.gif" align="absbottom"></p>
<CENTER><P><HR WIDTH="100%"></P></CENTER>
<P><p align="center"><img src="dirplot.gif" align="absbottom"></p>
<P><p align="center"><img src="curr24hourgraph.gif" align="absbottom"></p>
<P><p align="center"><img src="curr48hourgraph.gif" align="absbottom"></p>
<P><p align="center"><img src="curr72hourgraph.gif" align="absbottom"></p>
<P><CENTER><B><font color="#CC0000"><font size=+3>Latest Web Cam Image</P></CENTER></B></FONT></font>
<p align="center"><img src="/" align="absbottom"></P>

<CENTER><P>
<HR WIDTH="100%"></P></CENTER>
<CENTER><P>
<HR WIDTH="100%"></P></CENTER>
<center><p>Use the <font color="#FF0000">RELOAD</font> facility
on your browser to retrieve the latest data.</center>
<CENTER><FONT SIZE=+2>
<A HREF="weekrep.htm">Click here for a daily update of the averages/extremes to date for the month</A></FONT></CENTER>
<CENTER><FONT SIZE=+1>
<A HREF="http://www.weather-display.com">Created by "Weather Display" software 
version 10.37O 12:13:01 2010/06/29</A></FONT></CENTER>
</BODY></HTML>




WeaterDisplayの日本語化
 作者のBrian Hamilton氏から日本語化の方法をメールで教えてもらい、次のように行いました。

1.WeatherDisplayのメイン画面から
Setup>Language>Update from language.ini file>Create language.ini for first time
の順にクリックします。そうするとwdisplayのフォルダにlanguage.iniというファイルができます。

2.それを、エディタで修正します。たとえば
temperature=気温
のように、英語に対応する日本語を記入していきます。出来上がりましたら、上書き保存します。

3.もういちどWeatherDisplayのメイン画面から
Setup>Language>Update from language.ini file>Force update now
とし、WeatherDisplayを再起動します。
以上が作者からの指示で、これで完成かとおもったら、へんてこりんな文字がメインスクリーンにあらわれます。これは使用するフォントが日本語になっていないためとわかりました。

4.そこで、WeatherDisplayのメイン画面から
Control panel>Sumary Image & Icons >Font/colour of text>Set label font
の順で、フォント指定の画面を出します。そしてたとえば日本語対応のフォント、MSPゴシック 文字セット”日本語”を指定します。また、メインスクリーンに対しては、同様に
Control panel>Colours>Main screen colour setup のlabel font
で、フォント指定の画面から設定します。

以下に私の例を示します。
    language.ini ファイル
      [Main screen]
current conditions=現在の気象
average windspeed line 1=平均風速
average windspeed line 2= 
current windspeed line 1=瞬間風速
current windspeed line 2= 
temperature=気温
temp trend=気温増減
barometer=気圧
pressure trend line 1=気圧増減
pressure trend line 2= 
humidity=湿度
dew point depression=湿数
indoor temp=
indoor hum=室内湿度
windspeed over dial=
wind direction=風向
heat index=熱指数
Apparent tmp=体感温度
wind chill=体感温度
dew point=露点温度
wet bulb=湿球温度
extreme conditions=最高最低
maximum gust today=  本日の最大瞬間風速
maximum gust last hour=  1時間最大瞬間風速
maximum average=  最大平均風速
maximum temperature=  最高気温
minimum temperature=  最低気温
maximum rain rate line 1=最大瞬間雨量
maximum rain rate line 2= 
Rainfall=雨量
last hour=1時間雨量
today=本日の雨量
yesterday=昨日の雨量
month to date=今月の雨量
year to date=今年の雨量
rain rate=瞬間雨量
values reset at=リセット時刻深夜
rain reset at=リセット時刻深夜
[Dials screen]
wind direction=
outdoor temperature=
outdoor humidity=
barometer=
wind chill depression line 1=
wind chill depression line 2=
indoor humidity=
rain in last hour=
rain today=
outdoor dewpont=
cloud base=
[Summary screen]
current weather=現在の天気
temperature=気温
humidity=湿度
dew point=露点温度
average speed=平均風速
current speed=瞬間風速
direction=風向
gust last hour=1時間最高風速
barometer=気圧
todays rain=本日の雨量
wind force=
cloud base=雲底
wind chill=体感温度
forecast icon=
time=観測時刻
date= 
Humidex=体感温度

以下省略

 異なるコンピュータへWeatherDisplayを移行する方法は、フォーラムWeather-Watch.comに示されています。 概略は次の通りです。

(1) 旧マシン上のWeatherDisplayで Action > backup registry entry を実行

(2) 旧マシン上のWeatherDisplayをシャットダウン

(3) 旧マシン上のWeatherDisplayのすべてのファイル(\wdisplayフォルダごとすべて)を新マシンにコピー
 注意:新マシンがWindows7の場合は、WeatherDisplayはC:\Program Files\wdisplayではなく、C:\wdisplayにインストールしなければならない。

(4) 新マシンでC:\wdisplay\databackup\wdisplay.iniをさがし、それをC:\wdisplayフォルダにコピー

(5) 新マシンのC:\wdisplay\databackupにもどり、C:\wdisplay\databackup\wdisplayftp.regファイルをダブルクリックする。registrarionが実行される。

(6) 新マシン上に、WeatherDisplayをダウンロードし上書きインストールする。

以上で、新マシン上に全く同じ設定がなされ、データも引き継がれWeatherDisplayが動くはずです。ただし、観測機器のシリアルポート番号が異なる場合は修正のこと。


WeatherDisplayはリアルタイムに計測値を表示するだけでなく、たくさんのログファイルをはき出します。これをうまく処理できれば、長期にわたる気象データがえられます。ところが、デフォルトで出力されるログファイルは、独特の形式でこのままでは他のソフトへの引き渡しがうまくいきません。つぎのようです。

2013年8月の例。次のファイルがwdisplay\logfilesフォルダにあり、1分ごとに1レコード書き加えられています。
ファイル名:82003lg.txt
ファイル形式:
day month year hour minute temperature   humidity     dewpoint   barometer    windspeed   gustspeed direction  rainlastmin    dailyrain  monthlyrain   yearlyrain  heatindex

スペースが区切り記号になっていますが、スペース数が1個から3個さまざまで、このままではExcelではカラムずれをおこし、開くことができません。また時刻形式が独特でソートできません。

そこで次の機能のJAVAプログラムをつくり、標準的なcsvファイルに変換するソフトを作りました。
(1) ファイル名を200308log.csvのようにyyyyMMlog.csvとし、整理しやすくします。
(2) カンマ区切りのcsvファイルとします。
(3) 各レコードの時刻形式は、2013/08/01 00:00:00のように他のプログラム(たとえばRadSoft)から出力される形式と合わせます。

以下に変換プログラムを示します。1年分のログファイルを変換します。ファイル名やフォルダー名はそれぞれ変更してください。
Excelや自分で開発したプログラムにより、さまざまな処理が可能となります。

なお、WeatherDisplayには、csv形式のログファイルを出力する機能もありますが、それに気がつかず、数年分のログファイルがたまっていたので、このような機能が必要になりました。


    weatherlogs.java ファイル
     
/* WeaterDisplay のdefaultログファイルを標準的なcsv形式に変換する
2013/08/10 (C) H.Ishikawa */

package processlogs;

import java.io.*;
import java.text.*;

class weatherlogs {
	  public static void main(String args[]) throws IOException {

	  	String yyyy;
	  	DecimalFormat DF = new DecimalFormat("00");

	  	BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
	  	System.out.print("年をいれてください yyyy =");
	  	yyyy = kbd.readLine().trim();

	  	for (int mm = 1; mm <= 12; mm++){    //12ヶ月分
	  		String MM = String.valueOf(DF.format(mm));

	  		//標準的なcsv形式ログファイル
	  		String filename0 = "D:\\MyDocuments\\weatherdata\\logfiles\\"  + yyyy + MM  + "log.csv";
	  		//WeaterDisplay のログファイル
	  		String filename1 = "D:\\MyDocuments\\wdisplay\\logfiles\\" + mm + yyyy + "lg.txt";
	  		File f0 = new File(filename0);
	  		File f1 = new File(filename1);
	  		String string_out ;
	  		String string_in;
	  		String[] string_ary = new String[25];

	  		try {
	  			BufferedReader input1 = new BufferedReader(new FileReader(f1));
	  			PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter(f0)));

	  			// 1行目読み飛ばし
	  			string_in = input1.readLine();

	  			// 1行目見出し、書き込み
	  			string_out = "yyyy/MM/dd hh:mm:ss," + "temperature,humidity,dewpoint,barometer,wind speed," +
	  					"gust speed,direction,rain last min,daily rain,monthly rain,yearly rain,heatindex";
	  			output.println(string_out);

	  			while ((string_in= input1.readLine()) != null) {

	  				/*WeaterDisplay のログファイルは次のような形式
	  				day month year hour minute temperature   humidity     dewpoint   barometer    windspeed
	  				gustspeed direction  rainlastmin    dailyrain  monthlyrain   yearlyrain  heatindex
	  				 */
	  				string_in = string_in.trim();		//前後のスペース削除
	  				string_in = string_in.replace("  " , " ");	//ダブルのスペースをシングルに
	  				string_in = string_in.replace("  " , " ");	//もう一度
	  				string_ary = string_in.split(" ");	//文字列を" "で分割し一つ一つを配列string_aryにいれる

	  				//標準的なログファイルに整える
	  				string_out = string_ary[2] + "/" + DF.format(Integer.parseInt(string_ary[1])) + "/" +
	  				DF.format(Integer.parseInt(string_ary[0])) + " " +  DF.format(Integer.parseInt(string_ary[3])) +":" +
	  				DF.format(Integer.parseInt(string_ary[4])) + ":" + "00"+ "," + string_ary[5] + "," + string_ary[6] + "," +
	  				string_ary[7] + "," + string_ary[8] + "," + string_ary[9] + "," + string_ary[10] + "," + string_ary[11] + ","
					+ string_ary[12] + "," +  string_ary[13] + "," + string_ary[14] + "," + string_ary[15] + "," + string_ary[16] ;

	  				//書き込み
	  				output.println(string_out);

	  			}

	  			input1.close();
	  			output.close();
	  			System.out.println(filename0 + "の書き込み終了");

	  		}
	  		catch(Exception e){
	  			System.out.println("エラー: " + e);
	  		}
	  	}
	  	System.out.println( "1年分の書き込み終了");
	  }
	}