2014年12月18日
温度センサー対応 irMagicianT で温度計測+赤外線リモコンを楽しむ方法
irMagician (学習型赤外線リモコン・ボード)でホーム・オートメーションを実現するには足りないものがありました。 それは環境センサー(温度・照度・湿度)。 センサーが無ければ家電の制御は人が能動的に行う又は時間ベースで自動化するしか手段がありませんからね。でも、もう大丈夫。 今日は温度センサーが組み込まれた irMagicianT (irMagician ユーザは要アップグレード)をご紹介しますよ。
irMagicianT (温度センサー)で室温を計測する方法
こちらが大宮技研さんへ送りアップグレートして頂いた irMagicianT。 irMagician と比べて何が変わったのでしょうか?
よく見ると基板背面に温度センサーが追加されている(左が T モデル)!
さて、早速使ってみましょうか。 僕は Linux ユーザー(Ubuntu 14.04/MATE)なのでその前提で聞いて下さいね。
irMagicianT を USB ポートに差し込み LED が点滅すれば通信可能な状態。
特にドライバの追加は必要ありませんが、僕の環境(MacBook Pro Retina + Ubuntu MATE 14.04)では LED が点灯するだけ(OS では認識されていないが給電レベルまでは可能な状態)になることもありました。そんな時には何度か抜き差しすればオッケー。
OS に認識されると /dev/ttyACM0 というデバイス・ファイルが作成され、このデバイスとはシリアル通信でデータを送受信することができます。
このコードを動かすにはシリアル・ライブラリ(pyserial)のインストールが必要。
保存したコードを動かしてみると・・・、
お、リファレンス通りに動きました!(この例では約 22.8 度)
※もし上手く動かないという人は irMagicianT を抜き差して何度か試してみましょう。
ここまできたら、やはり以前に作ったクラウド対応? 簡易 Web リモコンも温度センサーに対応しておきたい。
スマートフォンで見る場合は端末を横回転して下さいね。
$ ls /dev/ttyA*
/dev/ttyACM0
大宮技研さんの公開しているコマンド・リファレンス(http://www.omiya-giken.com/?page_id=889)を見ると温度を取得するには T を送信することになっています。
これを Python を使ってシンプルに書くとこんな感じでしょうか。
# -*- coding: utf-8 -*-
import serial
irmt_serial = serial.Serial("/dev/ttyACM0", 9600, timeout = 1)
print "Reading temperature from irMagicianT"
print "Sending T command..."
irmt_serial.write("T\r\n")
print "Reading raw temperature..."
raw = irmt_serial.readline()
print raw.rstrip()
print "Reading command status..."
status = irmt_serial.readline().rstrip()
print status
celsiusTemp = None
try:
celsiusTemp = ((5.0 / 1024.0 * float(raw)) - 0.4) / 0.01953
except (ValueError, TypeError):
print "TemperatureExcetion: raw => %s, status => %s" % (raw, status)
print "Temperature(C): %s" % celsiusTemp
このコードを動かすにはシリアル・ライブラリ(pyserial)のインストールが必要。
$ sudo apt-get install python-pip
$ sudo pip install pyserial
保存したコードを動かしてみると・・・、
$ sudo python t.py
Reading temperature from irMagicianT
Sending T command...
Reading raw temperature...
0173
Reading command status...
OK
Temperature(C): 22.7714573733
お、リファレンス通りに動きました!(この例では約 22.8 度)
※もし上手く動かないという人は irMagicianT を抜き差して何度か試してみましょう。
折角なので以前に日経Linuxさん(2014年 12月号)で irMagician を紹介した際に作ったコマンド・ツールへも温度オプションを追加しておきましょうか。 GitHub から irmcli をダウンロード、-t オプションを指定して起動すると温度データが表示されるはずです。
$ git clone https://github.com/netbuffalo/irmcli.git
$ cd irmcli
$ sudo python irmcli.py -t
Temperature: 22.8
温度センサーとは全然関係無いんですけど -v オプションでファームウェア・バージョンも見れるようにしておきましたよ。
$ sudo python irmcli.py -v
irMagician 1.0.3-T
irMagicianT 対応 RemoteIRF/RemoteIRE でリモート・リモコン
ここまできたら、やはり以前に作ったクラウド対応? 簡易 Web リモコンも温度センサーに対応しておきたい。
ええ、勿論やっときました! RemoteIRE 起動時に -t オプションを使って温度の取得間隔(60 秒以上)を指定して下さい。
$ sudo python irelement.py -t 300
すると指定した間隔(秒)でセンサーから取得した温度データを Web サーバー(RemoteIRF)へ送信してくれます。
Web ページにログインしてみると・・・・
トップページに最新の温度が表示されてますね!
Trend ボタンをタップ(クリック)すると過去 288 回分(300 秒間隔で温度を取得した場合に過去 24 時間分の履歴が確認可能)が表示されます。
スマートフォンで見る場合は端末を横回転して下さいね。
前回値と比較して上昇しているなら赤矢印(↑)、下降しているなら青矢印(↓)でマークするという小細工もしております・・・。
勿論、以前に紹介した通り、RemoteIRF だけをインターネット上のサーバーに配置すれば、外出先からでも温度情報(室温)を確認、自宅の家電を赤外線制御することもできますからね!
それでは、より楽しいリモコン・ライフを。
Raspberry Pi ラズベリー・パイ 超小型パソコン MODEL B (PLUS) &専用ケ-ス model B+ Case(Clear)
posted with amazlet at 14.12.18
Raspberry Pi
売り上げランキング: 347
売り上げランキング: 347
Philips hue(ヒュー) スターターセット 929000259901 エコパッケージ [フラストレーションフリーパッケージ(FFP)]
posted with amazlet at 14.12.18
Philips(フィリップス) (2014-01-26)
売り上げランキング: 7,004
売り上げランキング: 7,004
この記事へのトラックバックURL
この記事へのコメント
お世話になっております。
NAS に取り付けて、運用させて頂いています。
ありがとうございます。
大宮技研
NAS に取り付けて、運用させて頂いています。
ありがとうございます。
大宮技研
Posted by 大宮技研 at 2014年12月21日 20:52
大宮技研さん、こちらこそ素早いアップグレート対応を頂き誠にありがとうございました。
今後とも宜しくお願い致します。
今後とも宜しくお願い致します。
Posted by netbuffalo at 2014年12月22日 19:46