Raspberry Pi+USB温度計 設定メモ
我が家の飼い鳥(白文鳥)は先々月に10歳を迎えたご長寿さんであり、冷えが身に染みるお年頃だ。夜間はひよこ電球と電気あんかを併用し、ケージを30度程度に保って寝かせている。暖房器具を多重化しているのは、万一どちらかが故障してもケージが冷え切らないようにするため。
それでも心配で夜中にケージの温度を度々確認しているが、毎回ケージまで見に行くのも結構面倒だ。てなわけで、せっかく手に入れた Raspberry Pi で文鳥ケージの温度を計測・記録したい。
本日は、下記先達のサイトを参考にしつつ、上海問屋で購入した「USB接続式 温度計」(以降、TEMPer)を Raspberry Pi で使えるようセットアップを行った。
・徒労日記 / Raspberry Piと980円USB温度センサーで北海道の冬をロギングしてみる
・GitHub / bitplane/temper
1. GitHubから temperコマンドのソースを入手する。
TEMPerから温度を読み出す temper コマンドを make するため、GitHubからソース一式をダウンロードする。
2. libusb-dev をインストールする。
temper コマンドを make する際には、libusb-dev に含まれる usb.h が必要となる。libusb-dev(USBアプリケーション プログラミング用ライブラリ) をインストールする。
【2014/12/16追記】
※注意
TEMPerで正確な温度を計測するには校正作業が必要となる。3へ進む前に「USB温度計TEMPerの校正を行う」に従って、校正を行うこと。
3. temper.c に改造を施す。
temper コマンドの出力形式は「日-月-年 時:分,温度」(グリニッジ標準時)となっている。Excel等で扱いやすいよう、temper.c をプチ改造して「年/月/日[tab]時:分[tab]温度」(日本標準時)形式とし、温度の有効数字を小数点第一位までとする。
変更箇所は以下のとおり。
《44~49行目 改造前(出力形式…11-Dec-2014 00:00,20.840825)》
《44~49行目 改造後(出力形式…2014/12/11 09:00 20.8)》
※strftime関数の詳細は、C言語関数辞典 strftime を参照。
4. コンパイルとインストールを行う。
temper.c をコンパイルして temperコマンドを作成し、/usr/local/binにインストールする。
5. temperコマンドにsuidを設定する。
/usr/local/bin にインストールした temper コマンドに suid を設定し、root 以外のユーザーにも使えるようにする。suid を設定しないと、一般ユーザーが temper を実行しても値が返ってこない。
↑temperコマンドを実行すると、41.8℃が返ってきた! なるほど、本体直挿しだと本体の発熱を拾ってしまうのだなー。拙者が購入したTEMPerにはUSB延長ケーブルが付属していなかったので、買ってこなければならぬ。
Sponsored Link
それでも心配で夜中にケージの温度を度々確認しているが、毎回ケージまで見に行くのも結構面倒だ。てなわけで、せっかく手に入れた Raspberry Pi で文鳥ケージの温度を計測・記録したい。
本日は、下記先達のサイトを参考にしつつ、上海問屋で購入した「USB接続式 温度計」(以降、TEMPer)を Raspberry Pi で使えるようセットアップを行った。
・徒労日記 / Raspberry Piと980円USB温度センサーで北海道の冬をロギングしてみる
・GitHub / bitplane/temper
1. GitHubから temperコマンドのソースを入手する。
TEMPerから温度を読み出す temper コマンドを make するため、GitHubからソース一式をダウンロードする。
~ $ sudo git clone git://github.com/bitplane/temper.git
2. libusb-dev をインストールする。
temper コマンドを make する際には、libusb-dev に含まれる usb.h が必要となる。libusb-dev(USBアプリケーション プログラミング用ライブラリ) をインストールする。
~ $ sudo aptitude install libusb-dev
【2014/12/16追記】
※注意
TEMPerで正確な温度を計測するには校正作業が必要となる。3へ進む前に「USB温度計TEMPerの校正を行う」に従って、校正を行うこと。
3. temper.c に改造を施す。
temper コマンドの出力形式は「日-月-年 時:分,温度」(グリニッジ標準時)となっている。Excel等で扱いやすいよう、temper.c をプチ改造して「年/月/日[tab]時:分[tab]温度」(日本標準時)形式とし、温度の有効数字を小数点第一位までとする。
~ $ cd temper ~/temper $ vi temper.c
変更箇所は以下のとおり。
《44~49行目 改造前(出力形式…11-Dec-2014 00:00,20.840825)》
utc = gmtime(&t); char dt[80]; strftime(dt, 80, "%d-%b-%Y %H:%M", utc); printf("%s,%f\n", dt, tempc);
《44~49行目 改造後(出力形式…2014/12/11 09:00 20.8)》
utc = localtime(&t); char dt[80]; strftime(dt, 80, "%Y/%m/%d\t%H:%M", utc); printf("%s\t%.1f\n", dt, tempc);
※strftime関数の詳細は、C言語関数辞典 strftime を参照。
4. コンパイルとインストールを行う。
temper.c をコンパイルして temperコマンドを作成し、/usr/local/binにインストールする。
~/temper $ sudo make ~/temper $ sudo make install
5. temperコマンドにsuidを設定する。
/usr/local/bin にインストールした temper コマンドに suid を設定し、root 以外のユーザーにも使えるようにする。suid を設定しないと、一般ユーザーが temper を実行しても値が返ってこない。
~/temper $ sudo chmod u+s /usr/local/bin/temper ~/temper $ temper 2014/12/12 00:06 41.8
↑temperコマンドを実行すると、41.8℃が返ってきた! なるほど、本体直挿しだと本体の発熱を拾ってしまうのだなー。拙者が購入したTEMPerにはUSB延長ケーブルが付属していなかったので、買ってこなければならぬ。
USB温度計! USB thermometer-528018
- 出版社/メーカー: OEM
- メディア: エレクトロニクス
Sponsored Link
2014-12-13 12:01
nice!(0)
コメント(0)
トラックバック(0)
コメント 0