2014年12月18日

温度センサー対応 irMagicianT で温度計測+赤外線リモコンを楽しむ方法

irMagician (学習型赤外線リモコン・ボード)でホーム・オートメーションを実現するには足りないものがありました。 それは環境センサー(温度・照度・湿度)。 センサーが無ければ家電の制御は人が能動的に行う又は時間ベースで自動化するしか手段がありませんからね。でも、もう大丈夫。 今日は温度センサーが組み込まれた irMagicianT (irMagician ユーザは要アップグレード)をご紹介しますよ。

irMagicianT


irMagicianT (温度センサー)で室温を計測する方法


こちらが大宮技研さんへ送りアップグレートして頂いた irMagicianT。 irMagician と比べて何が変わったのでしょうか?

irMagicina and Raspberry Pi


よく見ると基板背面に温度センサーが追加されている(左が T モデル)!

irMagicianT and irMagician


さて、早速使ってみましょうか。 僕は Linux ユーザー(Ubuntu 14.04/MATE)なのでその前提で聞いて下さいね。

irMagicianT を USB ポートに差し込み LED が点滅すれば通信可能な状態。

irMagicianT LED


特にドライバの追加は必要ありませんが、僕の環境(MacBook Pro Retina + Ubuntu MATE 14.04)では LED が点灯するだけ(OS では認識されていないが給電レベルまでは可能な状態)になることもありました。そんな時には何度か抜き差しすればオッケー。

OS に認識されると /dev/ttyACM0 というデバイス・ファイルが作成され、このデバイスとはシリアル通信でデータを送受信することができます。

$ 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 ページにログインしてみると・・・・

Remote IR top page


トップページに最新の温度が表示されてますね!

Trend ボタンをタップ(クリック)すると過去 288 回分(300 秒間隔で温度を取得した場合に過去 24 時間分の履歴が確認可能)が表示されます。

RemoteIR Trends mobile page


スマートフォンで見る場合は端末を横回転して下さいね。

前回値と比較して上昇しているなら赤矢印(↑)、下降しているなら青矢印(↓)でマークするという小細工もしております・・・。

RemoteIR Trends mobile page 2


勿論、以前に紹介した通り、RemoteIRF だけをインターネット上のサーバーに配置すれば、外出先からでも温度情報(室温)を確認、自宅の家電を赤外線制御することもできますからね!

それでは、より楽しいリモコン・ライフを。



Posted by netbuffalo at 20:30│Comments(2)TrackBack(0) 家電 | Linux


この記事へのトラックバックURL

この記事へのコメント
お世話になっております。

 NAS に取り付けて、運用させて頂いています。
 ありがとうございます。

大宮技研
Posted by 大宮技研 at 2014年12月21日 20:52
大宮技研さん、こちらこそ素早いアップグレート対応を頂き誠にありがとうございました。
今後とも宜しくお願い致します。
Posted by netbuffalo at 2014年12月22日 19:46

コメントする

名前
 
  絵文字