2016/10/12

BitClockで遊ぼう! 自分用スクリプトをPythonで書き直し

そーたとメイの工作によるWLAN電波時計 『BitClock』カスタマイズの続きです。

前回、自分の自転車あされん用情報表示機にしましたけれど、サンプルスクリプトをぐちゃっといじったままでした。

とりあえず動いたのですけれど、shスクリプトで、ちょっといじる気になりません。


Windows環境ではVBscriptだけで書けたので、LinuxサーバーもPythonあたりで書き直すとシンプルになるような気がします。全然知りませんけれど、Python。

そういうわけで、Pythonで書いてみました。おおー、すっきりした、短くなったー。
でも、Python3で書いて、試したらサーバーはPython2系でした。手直しします。


というわけで、あされん用に、日の出時刻と、朝6時まで、午前中の降水確率を表示するようにBitClockのためのPythonスクリプトができました。

まんぞく満足。


●最近のBitClockで遊ぼう!シリーズ
BitClockで遊ぼう!
BitClockで遊ぼう! Windows PCだけでもカスタマイズできた!
BitClockで遊ぼう! BitClockで自分用情報表示中


●今回のPython スクリプト


#! /usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import urllib, re, datetime, codecs
# 東京日の出日の入り時刻をテキストに切り出すスクリプト

pubfile = '/var/www/html/bitclock/asaren.txt'
#pubfile = r'd:\asaren.txt'

todaynow = datetime.datetime.today()
uptime = todaynow.hour + 2

html = urllib.urlopen('http://eco.mtk.nao.ac.jp/cgi-bin/koyomi/sunmoon.cgi?id=13').read()
tmptext = re.sub(r'\n', '', html.decode('euc-jp'))
hinode = re.sub(r'.*日の出([\s0-9:]{5}).*', r"\1", tmptext)

html = urllib.urlopen('http://www.jma.go.jp/jp/yoho/319.html').read()
tmptext = re.sub(r'\n', '', html.decode('utf-8'))
todaykousui = re.sub(r'.*東京地方.*?今[日夜].*?00-06.*?right">([-\d]{1,2})%.*?06-12.*?right">([-\d]{1,2})%.*', r"\1.\2", tmptext)
tomorrowkousui = re.sub(r'.*東京地方.*?明日.*?00-06.*?right">([-\d]{1,2})%.*?06-12.*?right">([-\d]{1,2})%.*', r"\1.\2", tmptext)
if uptime < 14:
kousui = todaykousui
else:
kousui = tomorrowkousui
kousui = re.sub(r'^(0\.[-\d]+)$', r"0\1", kousui)
kousui = re.sub(r'^([-\d]+\.)(0)$', r"\1\2\2", kousui)

pubtext = hinode + '/' + kousui + '/' + str(uptime) + ':00 ' + todaynow.strftime("%H:%M") + ' tokyo'

f = codecs.open(pubfile, 'w', 'utf-8')
log = codecs.open('bitclock.log', 'a', 'utf-8')
f.write(pubtext)
log.write(todaynow.strftime("%Y/%m/%d %H:%M") + ' asaren ' + pubtext + '\n')
f.close()
log.close()

| | コメント (0) | トラックバック (0)

2016/10/08

BitClockで遊ぼう! BitClockで自分用情報表示中

BitClockで遊んでいます。

amazonでも販売していました。ビット・トレード・ワン自身による販売のようです。
WLAN電波時計 BitClock / BTCLK

自分専用実用品として、自転車あされん用情報表示機にしています。スクリプトはほぼサンプル通りと、日の出時刻のスクリプトをくっつけただけです。
今日の日の出時刻と、00-06時、06-12時の降水確率を表示するようにしました。17時過ぎ以降は、明日の降水確率を表示するようにします。

取得スクリプト

BitClock用URL:

情報元:
http://eco.mtk.nao.ac.jp/cgi-bin/koyomi/sunmoon.cgi (国立天文台)、
http://www.data.jma.go.jp/gmd/kaiyou/data/db/tide/suisan/txt/2016/TK.txt (気象庁)


こんな感じで使っています。


https://youtu.be/L2os-jjQURk


| | コメント (0) | トラックバック (0)

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

| | コメント (0) | トラックバック (0)

2016/10/05

BitClockで遊ぼう!

そーたとメイの工作による、NTP時刻自動修正時計BitClock

WLAN電波時計とのことで気になって調べると、なんと手作り感豊かなおもちゃじゃないですか!
時計表示に代えて、WEBの数字情報を取得して表示する機能があるようです。
なにやら自分でカスタマイズできそうです。こりゃ面白い。

最初web情報取得スクリプトが動くのかと勘違いしましたけれど、それは自前でサーバーを用意してサーバーでweb情報取得スクリプトを動かし、数字とピリオド、コロンという時刻形式の情報を二つまでスラッシュ区切りで一行テキストに用意すれば、それをhttpで取得して表示するものっぽいです。


というわけで買ってみます。秋葉の九十九にあるらしいですけれど、行く時間を作れず、PCワンズの通販で済ませます。というわけで今晩届きました。

で、動きません。電池入れたら「UP.2」と出てUSBつないで設定アプリから操作できません。

Dsc_0683


初回出荷分はジャンパピンの位置を間違えたので刺しなおすようにと、そーたメイで告知していました。おおおお!すげーぜ。りょーかいだぜ!


Dsc_0684


動いた!
mini USBケーブルを探し出すのが一番時間がかかりました。無線LANの設定をして無事NTP自動時刻修正時計が動きました。


Dsc_0686


さて、本題のカスタマイズです。

まずはそーたとメイの工作のサンプルスクリプトを自分の管理するサーバーに設置して試します。自分用なので、東京限定にしてしまって動かします。
BitClock用の一行テキスト情報を、公開webサーバーに場所を用意して出力させてみます。

BitClockの設定アプリをWindows 10のPCに入れて、mini USBケーブルでつないでテキストのhttpパスを設定すると、動いたー。

つぎに、サンプルスクリプトを参考に、日の出日の入り時刻を表示するべく挑戦です。
自転車あされんで、日の出時刻を調べるのに一々おーけーぐーぐるしなくてもいいようにしたかったのが動機です。もう自分のためだけの機能ですね。

スクリプトを設置して、crontab -eで毎時更新にしておきました。
こんなスクリプトです。




できたぞー!
こんな感じです。

https://www.youtube.com/watch?v=a_q7_n4OBmY


| | コメント (0) | トラックバック (0)

2016/03/18

ChromeアプリShift-JIS padを更新

CHromebookに子供用の監視対象ユーザーを追加したついでに思い出して、Shift-JIS padをバージョンアップします。

自分で使うことしか想定していませんでしたので、一般的な仕様ではありません。テキストエディタもどきなのに、検索機能もなく、保存ファイル名は決めうちでした。

まずは検索機能を実装します。JavaSvript標準で正規表現が使えるようです。見直しました。
ただ、テキストエリアのスクロールはピクセル単位のようです。面倒なので近似値でスクロールしておきます。
次に置換機能。置換元は正規表現でも置換先はそうはいきません。でも、改行コードくらい使いたいです。
一つずつ作りこむのは面倒なのでやめます。一応$1や$2は使えるので、

置換元:(\n)
置換先:$1>_
のようにすれば改行コードを保持して置換できるのでこれでよしとします。

ファイル名は、読み込み時のファイル名で書き出すように変えます。

置換は面倒なのでgオプションあり固定にします。これだとアンドゥが要ります。
5段くらいアンドゥできればいいか。最初うまく動きませんでしたけれど、chromeの仕様を確認して直します。

とりあえず動いたのでアップロードします。

Sjispad1

そういえばマニュアルとかないな。設定画面に直書きして済ませます。

Sjispad2


これでいいや。
1年ぶりに触りました。

| | コメント (0) | トラックバック (0)

«HP100LX/HP200LXの簡単な偏光板交換作業手順