ねらい
寒冷地に別荘とか別宅とかをお持ちの方は、天気予報アプリなどでこまめに現地のお天気や温度をチェックされているようです。しかし困ったことに、人里離れた地方になればなるほど、また山岳地になればなるほど、メジャーな天気予報の観測点が、自分の調べたい場所と離れてきます。またさらに悪いことに、山間(やまあい)の土地だと、わずか数百メートル離れただけで、微妙な地形の違いによって日当たりや風の流れが変わります。温度も湿度もそれに伴って大きく変化します。
2016年(平成28年)秋、武尊山の山麓にある畑小屋の室内温度と隣接する畑の気温を、本拠地であるヨコハマから、スポット的かつできるだけリアルタイムにモニターしたいと思い立ち、いろいろ試行錯誤の結果、とても原始的な方法ではありますが、何とか実用的な形ができあがりました。実際に運用を開始してから既に2年半、とくに大きな問題なく動いていますので、備忘もかねてここに紹介します。
基本ポリシー
内外温度計を使って、室内温度は親機、屋外(畑)の気温は子機で測定します。PCにつないだカメラでその画面を、一定時間ごとにスチル撮影し保存します。保存した画像ファイルはレンタルサーバに転送します。
具体的な方法について
用意する物品
必要なものは次のとおりです。
パソコン1台
24時間電源をいれて動かし続けられるパソコンが1台必要です。ボクは、Linux (ubuntu16.04)が動く、型落ちのノートPC(バッテリーが発火しないものw)を使っています。別の用途には、停電に備えてUPS(無停電源装置)も使っていますが、カメラサーバのノートPCには、つないでいません。瞬電や数時間程度の停電があっても、まぁ内蔵バッテリーが頑張ってくれます。なお、ノートPCでなくてもラズベリーパイでも良いでしょう。ウエブカメラをつないで静止画像を撮れて、ネットでサーバに送信できる機能さえあればよいわけです。
内外温度計
温度計は、シチズンのコードレス温湿度計(THD501)にしました。温度の測定範囲が -30度から+60度と広いこと、外気温を測定する子機センサーが防滴構造なこと、親機、子機とも電池寿命がほぼ1年あること、それから親機と子機の通信可能距離が30メートルあることなどが選択した理由です。まさに小屋の室内と畑の温度を同時にモニターするのにぴったりですw
Webカメラ
使いまわしの古いLogicool C270を使っています。新品(?)でも2,000円程度、中古なら1,000円未満で入手可能です。
LEDブックライト
真夜中に温度計にスポット的に照明をあてて画面を撮影するために使います。クリップが付いていること、スイッチで明るさを2段階に切り替えできることなどから、LEDブックライト XR-novelty R-919Fを使用しています。1,000円程度かと・・・。
24時間繰り返しタイマー
上の照明用LEDブックライトを24時間つけっぱなしにしても、電気代は大したことがありませんが、昼間に点灯していると、何となく間抜けな昼行灯に見えるので、時間を決めて夕方になったらLEDを点灯し、朝方には消すようにします。使用したのは、PANASONIC WH3311Bですが、まだ売っているのかしら? 2,000円台だと思います。
温湿度計の設置方法
子機の設置場所
これがなかなか大変でした。外気温を測定する条件は、直射日光が当たらず、雨に濡れず、風通しがよくなおかつ地上から1.5m ほどの高さに設置という感じです。小学校で百葉箱について勉強しましたよねw一番良いのは、適当な場所に百葉箱を設置することなのでしょうが、冬期には相当の積雪があるため、簡単ではありません。それにネットで調べると、百葉箱って信じられないほど高価! なんでかしら?
それはともかく、さんざん悩んだあげく、写真のような場所に結わえつけることにしました。プロパンガスのボンベを雪害から守るために作ったボンベハウスの屋根ウラという感じです。日光、雨、風、地上高の条件はほぼ満たしています。
親機とカメラなどの設置方法
100均のワイヤー製の皿ホルダーを流用。温度計の表示面を上にしてフラットに置いて、それをまたぐような形で皿ホルダーを図のようにかぶせます。皿ホルダーの外枠の幅と、温度計の横幅がぴったり同じというのが味噌w
ウエッブカメラをマウントするために、太めの針金でアーチを作り皿ホルダーの脚に固定します。また、LEDのクリップは皿ホルダーの(本来は床にあたる)ワイヤメッシュをくわえさせています。
ソフトの設定
fswebcam を使う
もしインストールされていなければインストールします。
$ sudo apt install fswebcam
カメラの解像度を調べる
-
USBデバイスの確認から始めます。たとえば・・・
$ lsusb | grep C270 Bus 003 Device 006: ID 046d:0825 Logitech, Inc. Webcam C270
-
ところで機種によっては(たとえばC922では)なぜか、次のようにメーカ名は表示されるのに、デバイス名は表示されませんでした。
Bus 001 Device 007: ID 046d:085c Logitech, Inc.
けど、Bus:Deviceコードは表示されてるし、次の段階で lsusb -v すると解像度は見えるので問題はありませんw。
- 解像度を調べる
lsusbを「-v」オプションで起動すると表示されます。同時に「-s」オプションで「Bus:Device」の値を指定します。解像度情報を得るためにこの2つの値が必要です。単純にコマンドを起動すると、表示される情報が多すぎるので、grepを wWidth で絞って実行し、その前後1行だけ表示します。
$ lsusb -s 003:006 -v | grep -1 wWidth
それでもたくさんの組み合わせが表示されます。ちなみに、最後の3行あたりを抜粋すると次のような感じです。
Still image supported
wWidth 1184
wHeight 656
--
Still image supported
wWidth 1280
wHeight 720
--
Still image supported
wWidth 1280
wHeight 960
その他、細かい情報はこちらをどうぞ。
実際に使う
カメラから静止画像を得る
次のようなスクリプトでカメラで静止画像を撮影し保存します。-r オプションで先ほど得た解像度を指定します。
#! /bin/bash
#
# Get image from c270 (Logicool) cam.
#
/usr/bin/fswebcam \
-p YUYV \
-d /dev/video1\
--font '/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf:32' \
--title "2came@Katashina" \
--bottom-banner \
--line-colour '#FF000000' \
--banner-colour '#FF000000' \
-D 2\
-S 5\
-r 1280x960 \
--save ~/webcam/2came_img.jpg \
--timestamp '%Y-%m-%d %H:%M (%Z)'
#
-d オプションの指定の仕方
- -d /dev/video0
- 第1番目に接続したcamera
- -d /dev/video1
- 第2番目に接続したcamera
- -d /dev/video2
- 第3番目に接続したcamera
内蔵カメラを無効にする
ノートPCでは内蔵カメラを無効にしたいものです。 ubuntuでのやり方はたとえば次の例などを参考にしてください。
ローカルに保存された画像をサーバに転送する
レンタルサーバ(ここでは plala)にftpで画像を転送します。
#
# ftp_img_to_plala server
#
/usr/bin/ftp -n www999.plala.or.jp <<EOF
user user_name password
bin
cd jpgs
lcd /home/yamagami/webcam_katashina
put 2came_katashina.jpg
bye
EOF
Cronの設定
あとやることは、cronの設定のみ。これについてはほとんど問題ないので、省略。
検討課題と今後の展開
- 一番の問題は、今のところ現地のPCへリモートでログインできないこと。トラブル対応には欠くことのできない機能です。コストのかからない方法で実現できるか、検討したいと思っています。すみません、ちゃんと調べたわけではありせんが、そもそも人里離れたエリアは、多くのプロバイダーが固定IPのサービスエリア外にしている模様?
- 山岳地方では思いの外、しばしば停電します。雷や着雪による送電経路障害など、理由となる事象が発生する確率が高いためです。それに対しては、大容量のUPSを用意するこしか思いつきません。