Edited at

RaspberryPiを使ってエアコンを完全自動化するまでの道のり(の途中)

More than 3 years have passed since last update.

この記事は animateLAB Advent Calendar 2015 9日目の記事です。

こんにちは。@kariaです。

今日はさすがにポエムが尽きた……これは作者急病のため休載か……と思いながら会社から帰宅したのですが、帰宅したことにより自室のエアコンがつけっぱなしだったことに気づき、さらにそれによりエアコン完全自動化を目論んでいたことを思い出したのでメモっておきます。


やりたかったこと


  • 家を出たあと、エアコン消し忘れたときに自動で消したい

  • 家に帰り着く前に、エアコンを自動でつけたい


やったこと


  • Raspberry Piを購入する

  • USB温度センサーを購入する

私が購入したのはtemperという名前で売られているものです。一時期は秋葉原の一部の店舗で売っていたようなのですが、現在はAmazonでちらほら参照する程度です。測定精度は値段なりだなーといった感じですが、温度の変化度合いがわかればよいのでそんなに精度は求めていませんでした。


  • 下記記事を参照の上temperコマンドをビルドする

RaspberryPi - USB温度センサTEMPer1の温度を取得するには - Qiita


  • てきとうなTwitterアカウントを取得し、Twitter Application Managementでアクセストークン等々を取得しておく ※SMSによる電話番号認証が必要

  • 下記のようなrubyスクリプトを書く

#!/usr/bin/ruby

require 'rubygems'
require 'twitter'

client = Twitter::REST::Client.new do |conf|
conf.consumer_key = "key"
conf.consumer_secret = "secret"
conf.access_token = "token"
conf.access_token_secret = "tokensecret"
end

numbers = Time.now.to_s + ' 現在の室温:' + `./temper | cut -d ',' -f 2`

tweet = numbers
client.update(tweet)

rubyはこういう簡単なスクリプトをサクッと書けて便利ですね。


  • rootのcrontabに仕込む

temperコマンドが残念ながらrootでしか動かないので、temperコマンドを叩くrubyスクリプトもrootで動かすしかありません。これは今のところ解決策なし。

するとこんな感じで室温がひたすらストイックに投げられます。

https://twitter.com/ka_temper


今後の野望

ここまでなら「別にRaspberryPiじゃなくて良いのでは?」と思われるかと思うのですが、実はさらなる野望がありました。


  1. 自室の温度変化をグラフ化する

  2. RaspberryPiにつながる赤外線モジュールを買う

  3. エアコンをオンオフするコマンドを投げられるようにする

  4. 自分が自宅にいないのに、室温と外気温が大幅に異なったらエアコンをオフにするコマンドを投げる

  5. 自分が自宅に近づいていて、かつ室温が適正値(23度±2度あたり)を外れていたらエアコンをオンにするコマンドを投げる

3はスマートフォンの位置情報をトリガーにするとかWebカメラ置いてみて画像の変化を検出するとかでなんとかできそうですが、4は家の前を通り過ぎることがあるかもしれないのと地下鉄移動が多いのでちょっと難しそう。あと、エアコンのステータスは取れないので(取れてたら温度計の必要がない)温度を見て失敗してたらリトライする必要があるかもしれません。

夢が膨らんだところでおしまい。