再接続をグラフ化してみたらかなり不安定だった

Raspberry Pi の Wi-Fi を自動再接続させてみてグラフ化してみたら、かなりの頻度で再接続してるのがわかった。

wlan0-conectivity

自動再接続のお陰で、継続的に計測できるようになった。
pressure

広告

Raspberry Pi の Wi-Fi を自動再接続

気温、気圧をロギングしている Raspberry Pi Model B の Wi-Fi が不安定で、よく繋がらなくなる。電源周りが弱いと聞いたので電解コンデンサーを増設したけどあまり変わらなかった。その原因がわからないままにしたくはないけど、まずは計測したデータをちゃんととっておきたいので、「繋がらなくなったら再起動」するスクリプトを作った。

NTERFACE=wlan0
IP_FOR_TEST=192.168.1.1
NOTIFY_TO=notify@*****.com
PING_COUNT=1
STATUS_DOWN=~/$INTERFACE-connectivity-down
URL_FOR_RRDTOOL=http://*****.com/api/RaspberryPi/$INTERFACE/down
USER_FOR_RRDTOOL=********

ping -c $PING_COUNT $IP_FOR_TEST > /dev/null 2> /dev/null

if [ $? -ge 1 ]; then
    logger '$INTERFACE seems to be down, REBOOT to recover ...'
    touch $STATUS_DOWN
    sudo reboot
else
    if [ -e $STATUS_DOWN ]; then
        logger '$INTERFACE is up.'
        echo '$INTERFACE is up.' | mail -s 'check wlan0 of weather data logger' $NOTIFY_TO
        curl -u $USER_FOR_RRDTOOL -F 'number=1' $URL_FOR_RRDTOOL
        rm -f $STATUS_DOWN 2> /dev/null
    else
        curl -u $USER_FOR_RRDTOOL -F 'number=0' $URL_FOR_RRDTOOL
    fi
fi

ping が通らなかったら再起動する…というもの。
再起動したら、メール通知とRRDTOOLにもデータを投げておくことで、データの欠測の判断がしやすくなる。
気温、気圧は5分間隔で計測しているので、それよりも短い2分間隔でこのチェックスクリプトを実行するように cron に設定した。

2015年も、あけましておめでとう

昨年は、目の前の事に一心不乱に取り組めた年でした。

これほど多くの人とよく話をし、
それぞれの物事について「何が最高か」を
自分の中で常に模索し続けられたことは、
これまでの人生の中でも、貴重な一年間でした。

今後の人生の中で、物事を成すための大きな糧になると思う。

自ら新し価値を創造し、
常に社会の期待に応えられる人で在りたい。

Raspberry PiにRaspbianインストールメモ

Raspberry Pi に OS(Raspbian)をインストール

MacOSX での作業メモ。

1. Raspbian をダウンロードする

$ curl -L http://downloads.raspberrypi.org/raspbian_latest -o raspbian.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
100  494M  100  494M    0     0   520k      0  0:16:12  0:16:12 --:--:--  904k

$ openssl sha1 raspbian.zip 
SHA1(raspbian.zip)= f072b87a8a832004973db4f5e1edb863ed27507b

Downloads の checksum と同じ事を確認する。

2. SDカードにOSを書き込む

SDカードを取り付けて確認する。

$ df
Filesystem    512-blocks      Used Available Capacity  iused    ifree %iused  Mounted on
/dev/disk0s2   235298960 154688048  80098912    66% 19400004 10012364   66%   /
devfs                375       375         0   100%      649        0  100%   /dev
map -hosts             0         0         0   100%        0        0  100%   /net
map auto_home          0         0         0   100%        0        0  100%   /home
/dev/disk1s1      114576     37840     76736    34%      512        0  100%   /Volumes/UNTITLED

デバイスが disk1 とわかったので、まずは unmount。

$ diskutil umount disk1s1
Password:
$ df
Filesystem    512-blocks      Used Available Capacity  iused    ifree %iused  Mounted on
/dev/disk0s2   235298960 154688056  80098904    66% 19400005 10012363   66%   /
devfs                375       375         0   100%      649        0  100%   /dev
map -hosts             0         0         0   100%        0        0  100%   /net
map auto_home          0         0         0   100%        0        0  100%   /home

続けて書き込む。
raw書き込みをしたいので、デバイスが disk1 ということは、書き込み先は /dev/rdisk1 ということになる。

$ unzip -p raspbian.zip | sudo dd bs=1m of=/dev/rdisk1
Password:
0+45200 records in
0+45200 records out
2962227200 bytes transferred in 436.999771 secs (6778555 bytes/sec)

書き込みが終わったら unmount してからSDカードを取り外す。

2012 in review

WordPress.com 統計チームによる、2012年のブログの年間まとめレポートです。

概要はこちらです。

2012年にエベレスト山の登頂に成功したのは600名でした。2012年にこのブログは約5,700回表示されました。もしエベレストに登った人たちだけがブログを見たとすると、同じ表示数に達するには10年間かかる計算になります。

レポートをすべて見るにはクリックしてください。

nginx + php-fpm で CodeIgniter を動かすメモ

事前に nginx と PHP-FPM がインストールされている前提になります。

ソースコードの配備

オフィシャルサイトからダウンロードできますが、今回は github から取得します。
安定版は 2.1-stable だったのでそれに。

$ cd /path/to/project
$ git clone git://github.com/EllisLab/CodeIgniter.git
$ git checkout 2.1-stable

続きを読む