あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

温度センサーを実装してみた

エアコンのリモート操作は今季からEjectに変わってRaspberry PiのGPIO操作による操作に切り替わったのですが、温度計もUSB Temperを卒業してセンサーでやりたくなったので、挑戦してみました。
使うものの目星はついていて、1-Wireと言う配線がシンプルなセンサー「DS18B20」を使う例があったのでコレを活用しました。
http://learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing/hardware
5月26日のRaspberry JAM Hardware Day(いけね、ブログまだ書いてない)が終わった後アキバに行って秋月でDS18B20をゲット。300円で買える手頃さ。抵抗も千石で5円です。合計305円、チープ。
そして、テストをちょいちょいやったり、28日のCQ出版さん開催のRaspberry Piイベントでドヤったりしてましたが、今日になって本番の組立てをやったという次第です。
さて、ページの配線のとおりに作ったものがこちらです。

全景。

そして、センサーの足のあたりは毎度おなじみのホットボンドで固めてしまいました。

出来上がったセンサーをRaspberry Piに接続した図。イヤホンプラグがエアコンのリモコンに行くやつです。あと、ヒートシンクはPiBowとともにModMyPiから購入したやつです。ちゃんと熱くなっていたので、熱が伝わっているようです。まあなんというか、RasPiガチ勢の雰囲気が出てきました。

取得はエアコンのボタン制御で使用しているWebIOPiがこのセンサーに対応しているので、ちょっと設定を書き換えるだけで値を取れるようになります。が、REST周りの設定をキツくしすぎていたらしく、取得できないと1時間くらい悩むハメに( ˘ਊ˘)。設定を抜粋。

[DEVICES]
temp0 = DS18B20 slave:28-00000xxxxxxx  <- スレーブ番号を指定して確実にしておいた

[REST]
device-mapping = true   <- これをtrueにしてないと、DEVICESで指定したデバイスの情報を操作・取得できない

[ROUTES]
/room/temperature = /devices/temp0/sensor/temperature/c   <- 後述

[ROUTES]の部分は無くても良いのですが、REST APIを叩くときに元のURLが長いので、/room/temperatureというエイリアスを作成して短縮化しています。まあしなくてもいい感はありますが気にしない。
REST APIを叩くと、26.85というかんじで摂氏温度が帰って来ます。APIの元のURLの末尾にあるcをfに変えれば華氏温度になりますし、kにすればケルビン温度というものになるようです。で、あとは取得した値をWeb画面に埋め込むだけです。
こうしてRaspberry Piだけでできたエアコンリモート操作システムが完成しましたとさ。

スクリプトはこちらにおいてます。どうぞご利用ください。
https://github.com/Akkiesoft/Eject-Command-Users-Group/blob/master/AirconRemote/server/rpi-gpio.php
あ、普段はこんなかんじで置いています。うきうきマッキー(ファンクラブ継続記念品)がステータスランプの真上にいて、夜はこのマッキーがぼんやりと光ります。すてきやん?