« BitClockで遊ぼう! | トップページ | BitClockで遊ぼう! BitClockで自分用情報表示中 »

2016/10/06

BitClockで遊ぼう! Windows PCだけでもカスタマイズできた!

前回、インターネット上のサーバーでwebサイトの情報を取得し変換することで、BitClockを日の出日の入り時刻表示機にカスタマイズしてみました。

でも、BitClockは公開webサーバー管理者でないとカスタマイズできないわけではありません。

そーたメイ - BitClock設定では、自宅のLinuxサーバー等でサンプル同様の中継サーバーを用意することが可能と書かれています。
別にLinuxサーバーでなくても、Windows PCでも電源を入れっぱなしにしておけば、問題なくBitClockでwebサイトの情報を取得するための中継サーバーに使えるはずです。

というわけで、早速やってみます。Windows 10のPCで試します。

自宅LANの中で、中継サーバー、つまり、webサイトの情報を取得し変換、BitClock用のテキスト情報をweb公開する機能を実現できればいいはずです。Linuxの方が慣れていて楽かもしれませんけれど、Windowsの方がPC用OSとして普及してそうです。


- Windows PCでwebサイトの情報を取得する
- Windows PCで取得した情報の必要部分をテキストファイルに変換する
- Windows PCでテキストファイルをBitClock用にweb公開する

どれもできそうです。ただ、自動で一日一回または数回情報取得し変換することと、いつBitClockが表示用テキストファイルを取りに来てもいいように電源を入れっぱなしにしておくこと必要でしょう。

まず、BitClock用に表示用テキストファイルを自宅LAN内に公開する準備をします。
これはIISを有効にすればいいはずです。

コントロールパネル-プログラム-Windowsの機能の有効かまたは無効化を立ち上げます。

20161004

インターネットインフォメーションサービスの左の白四角をクリックして黒くチェックし、[OK]ボタンを押します。

スタートメニューのWindows管理ツールメニューの下に、インターネットインフォメーションサービス(IIS)マネージャ
ーが追加されるので、立ち上げます。

20161004_1_2


画面左側の接続ペインのコンピュータ名左Vをクリックしてツリーを開き、サイトの左Vをクリックしてツリーを開き、Default Web Siteをクリックします。
画面右側操作ペインのサイトの編集の下の基本設定...をクリックします。
物理パスが表示されますので、そこがBitClock表示用テキストファイル公開場所です。フォルダは好きなフォルダに変更してもかまわないし、そのままなら、例えばc:\inetpub\wwwrootあたりになっているかもしれません。
エクスプローラーでこのフォルダを開き、サブフォルダを一つ作ります。
名前はなんでもいいですがbitclockにしてみます。
作ったフォルダを右クリックして、プロパティを表示します。セキュリティタブで、ここにユーザーがテキストファイルを書き込めるように、アクセス許可を編集します。
[編集(E)]ボタンを押し、上半分でUsersを選び、下半分のフルコントロールの許可の白四角をクリックしてチェックし、[OK]ボタンを押します。

インターネットインフォメーションサービス(IIS)マネージャー画面右側操作ペインのwebサイトの管理の開始ボタンを押せば準備完了です。

次に、自動で一日一回または数回情報取得し変換するにはどうしましょう。うーん。
とりあえず昔ながらのバッチファイルで試してみます。最初bitsadmin/Transferでwgetの代わりになるだろうと思っていたのですが、今回の情報提供サイトが動的なコンテンツのためファイルサイズが取得できずエラーになりダウンロードできませんでした、がっくり。

仕方なく、まずwgetをインストールして試してみます。
で、とりあえず動いたバッチファイルはこんな感じです。


REM 東京日の出日の入り時刻をテキストに切り出すスクリプト
REM 要 Wget for Windows
REM http://gnuwin32.sourceforge.net/packages/wget.htm

REM 設定値
set NAME=koyomi
set TMPFILE=c:\Users\ayati\Downloads\%NAME%.html
set TMP1FILE=c:\Users\ayati\Downloads\%NAME%1.html
set TMP2FILE=c:\Users\ayati\Downloads\%NAME%2.html
set PUBFILE=c:\inetpub\wwwroot\%NAME%.txt
set CITYID=13
REM ここまで設定値

set NOWTIME=%time:~0,5%

"C:\Program Files (x86)\GnuWin32\bin\wget" -O %TMPFILE% http://eco.mtk.nao.ac.jp/cgi-bin/koyomi/sunmoon.cgi?id=%CITYID%
rem bitsadmin.exe /TRANSFER 1 http://eco.mtk.nao.ac.jp/cgi-bin/koyomi/sunmoon.cgi?id=%CITYID% %TMPFILE%
findstr /c:"Table" %TMPFILE% > %TMP1FILE%
for /f "tokens=14 delims=d" %%i in (%TMP1FILE%) do set TMP1STR=%%i
for /f "tokens=22 delims=d" %%k in (%TMP1FILE%) do set TMP2STR=%%k

echo %TMP1STR:~1,5%
echo %TMP2STR:~1,5%
set TMP3STR=%TMP1STR:~1,5%/%TMP2STR:~1,5%
echo %TMP3STR%/00:00 %NOWTIME% > %NAME%.txt

echo %date% %time% "%TMP3STR: =%/%UPDATE%:00 %NOWTIME% >> bitclock.log

copy /y %NAME%.txt %PUBFILE%


動きましたけれど、さすがにこれではちょっとHTMLが変更になったら使えません。正規表現で置換したいなあ。


というわけで、バッチファイルはあきらめて、せっかくインストールしたwgetもやめてしまい、WSHの機能を使うことにします。

VBScriptで書けば、webサイトからの情報取得と正規表現を利用した切り出し、BitClock表示用テキストファイルの書き込みまでできるし、Windows標準機能です。うんうん、そうしよう、全然知らないけれど、VBScript。


というわけで、なんとか書いてみました。
こんなスクリプトです。

うむ、動いた。

これを定期的に実行します。
コントロールパネル-システムとセキュリティ-管理ツール タスクのスケジュール です。
画面右ペインの操作で、タスクスケジューラライブラリの下のタスクの作成...をクリックします。
適当な名前をつけ、ユーザーがログオンしているかどうかにかかわらず実行するを選び、
トリガータブの新規ボタンで、繰り返し間隔1時間、継続時間無期限を選び[OK]、
操作タブで先ほどのスクリプトkoyomi.vbsを選んで[OK]、
条件タブでスリープの解除をチェックしておいたほうがいいかもしれません。

スクリプトを引数にして、cscriptをプログラムに指定してもいいでしょう。
20161006

実行ユーザーは先ほどのUsersにしておけば、書き込みに失敗することもないはずです。


あとは、BitClock設定アプリで、表示用テキストファイルの場所を設定するだけです。

Screenshot20161005

たとえば、
192.168.1.5/bitclock/koyomi.txt
のように設定します。
IPアドレスは、コントロールパネル-ネットワークとインターネット-ネットワークと共有センターで確認できます。
アクティブなネットワークの表示の接続の右側の接続名をクリックして状態表示し、詳細ボタンを押すとIPv4のアドレスを確認できます。


できました。自宅のWindows PCでもサーバーの代わりになりました。

Dsc_0693

|

« BitClockで遊ぼう! | トップページ | BitClockで遊ぼう! BitClockで自分用情報表示中 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/69188/64308477

この記事へのトラックバック一覧です: BitClockで遊ぼう! Windows PCだけでもカスタマイズできた!:

« BitClockで遊ぼう! | トップページ | BitClockで遊ぼう! BitClockで自分用情報表示中 »