2017年10月28日土曜日

自由研究 その後

夏の自由研究についてこの記事で書いたのだけれど
1ヶ月くらいかけてぼちぼちコーディングして
cronで定期動作するpythonスクリプトが完成した。
一応、”雨予報(特にゲリラ豪雨の短期予報)”については 満足できるものができた…と思う。

【やったこと】
pythonとはなんぞや というところの勉強からから始まり(参考書も買った)
・CSVへの書き込み、読み出し
・モジュールの追加
・取得画像からのカラー情報読み出し、雨量分布パラメータ演算関数の定義
 (過去の雨量分布との比較から、今後天気がひどくなるのか回復するかの判断)
・パラメータを扱うクラスやメソッドの定義
・予報結果に基づいたGPIOの動作(LEDを光らせる、ブザーを鳴らす)
・I2C対応液晶ディスプレイによる予報結果の表示
・I2C液晶への天気予報アイコン表示

などなど、
一通りRaspberry Pi でやれそうだと妄想した内容は
実装できたみたいだ。
ここのところ雨やら台風やらで天気が荒れている中
ほぼ期待通りの動作をすることが確認できている。
(本来の目的である夏のゲリラ豪雨には間に合わなかったけども)

【仕上げ】
しばらく適当なブレッドボードを占拠していたけれど
あまりにも見苦しいのをどうにかしたいのと
一応ここで区切りをつけて完成、の意味で
ユニバーサル基板に回路をハンダ実装してみた。

雨続きで庭仕事とかもやれないしね。

で、できあがったのがこちら


トランジスタでONするブザーと、GPIO直結の動作確認LED、あとは、SDA SCL 5V GNDを液晶用に引き出しただけですが。
ブレッドボードのスパゲティと比べれば、だいぶスッキリできました。
適当なUSB電源に繋いでおけば
止めない限り、インターネット上の雨量情報を監視しつづけてくれます。 なんちゃってIoTということで。
それなりに使えるなという印象なので、できればもう少しちゃんとしたエンクロージャを着せてあげたいな。適当にMDFかなにかで作ろうかな。


見た目はスッキリしていても、中身がスパゲッティなのでコードの内容は秘密。
プログラミングのスキルはもう少し磨かないとね・・・

2017年8月16日水曜日

夏の自由研究

【夏休み】
夏休みって、やることが限られるんですよね。
メーカ勤務なので1週間は休みが取れるのですが

・世間はお盆で混む
・お盆なので実家参りするため、嫁さんの実家を含み最低2日は失われる
・外で作業しようものなら炎天下。そうでない場合は夕立でびしょぬれ。

…と、なかなか上手に使えない休暇なのです。

【自由研究】
今年の夏休みも、自由に使える日はあいにくの天気・・・
何か成果物が得られないと休みの最後に悶々としてしまう性分なので
インドア活動として今年は塩漬け気味だったRaspberry Piをかじってみることにしました。
数ヶ月前に火をいれて、Linuxのお作法をネットでかじりながらなんとかSSHで動作できるところまでもってきたものです。


【やってみたこと】
以下のリンクを参考に、同様の動作を構築してみました。
http://news.mynavi.jp/articles/2014/08/14/raspberry-pi2/


こちらは東京電力のページにアクセスして雨雲情報のデータを取得する作例ですが
国土交通省の自宅周辺の雨雲ログ(ここ)が取れるようにシェルスクリプトを変更。

【概要】
 1. curonの自動実行で、3分おきに書いたスクリプトを実行
 2. curlでサイトを叩く。
   アクセスするURLにはクエリオプションを指定して自宅付近のデータを要求。
   出てきたhtmlを保存。
 3. 2.で得たhtmlから、表示されている画像データのリンクを抽出。
   grepで行を検出、sedで余分な文字列を削除(文字列""に置き換え)
 4. 3.で特定したアドレスの画像データをwgetで保存。
 5. データが再利用しやすいよう、yyyymmddHHMM.gifの形式でリネーム
 
 番外 if文 日付のまたぎを検知したら、保存したデータはzipで圧縮

【結果】
 ◆ハマったこと
 ・curlで指定するクエリオプションが複数の場合
  2つ目以降が&でつなぐと無視される \&
 ・sedやgrepの文法で四苦八苦。^(行頭) $(行末) でなんとか。
 ・実行パーミッションの設定。
  home/xxx/のディレクトリで実行するときはsudoしないと動かない。
 ・改行コードの違い windowsのメモ帳で書いたスクリプトは 改行コードがCRLFのため、UNIX上(LFのみ)では正しく実行されず、修正する羽目に。

  ◆動作
  とりあえずうまく動作している様子。ただし 以下の懸念あり。
   相手のサイトがダウンしているときなど、
   例外処理を考えないとうまく動かなくなるかもしれない。しばらく様子見。

   せっかく画像データが時系列で取得できるので、統計処理のようなことができないか思案中・・・