たくみん成長日記

開発したアプリやプログラミングの備忘録を不定期に上げていきます。

RaspberryPi +Sinatra + SlackBotでエアコンを遠隔操作しよう(全体説明編)

こんちか!!たくみんです。最近、とても寒くなってきましたね。私も家にいる間は暖房をつけています。 こうなると問題になるのが、エアコンの消し忘れです。私はとても忘れっぽい性格なので、よくエアコンを消し忘れてしまっています。 というわけで、自分の部屋のエアコンを外から操作できるシステムを開発しました。この記事含め、4つの記事で紹介していきたいと思います。

エアコン遠隔操作の考え方

エアコンやテレビなどの家電製品は、リモコンで操作することが多いです。そしてそのリモコンは、「電源オン」、「電源オフ」等の操作に対応した赤外線を家電製品に送信して動作させています。 つまり、リモコンが送信する赤外線と同じパターンの赤外線を送信することができれば、家電製品を操作できることになります。 今回は、Raspberry Piを用いて、リモコンが送信している赤外線を解析し、まったく同じパターンの赤外線を送信することで、遠隔操作を実現します。また、外部から操作する方法として、SlackBotを採用しました。SlackBotのほかに、デスクトップアプリも開発したのですが、ポート開放をしないといけないことやCSRF(クロスサイトリクエストフォージェリ)の対策を考えないといけないので、今回はSlackBotを採用しています。

使い方

使い方は簡単です。以下のようにSlack上の桜内梨子ちゃんBotに、「冷房」、「暖房」、「電源オフ」と伝えることでそれぞれ、「冷房をつける」、「暖房をつける」、「電源を消す」という動作をさせることができます。現在はまだ開発途中なので、温度を変えることはできません。梨子ちゃんの口調に違和感があるのでこれから直していきます。

f:id:takuminv:20181115000841p:plain:w500

システム構成

このシステムは、Raspberry PiとSlackBot(Ruby製)とSinatraで構成されています。 SinatraはRasberryPi上に構成されており、SlackBotから、SinatraサーバにGETリクエストすることで、赤外線を送信するスクリプトを実行し、エアコンを操作します。操作した後は、json形式でエアコンの状態をSlackBotに返却し、Slack上で通知します。現在は、DB等を使用していないのですが、もしかすると、エアコンの状態や遠隔操作した時間などをDBに保存するかもしれません。

f:id:takuminv:20181115011006p:plain:w500

おわりに

このシステムにより、エアコンを消し忘れたとしても、外から消すことが可能になりました。また、家に帰る直前にエアコンをつけておくことで、家に着いた頃に室温を最適にしておくこともできるようになりました。残る3つの記事は、「Raspberry Pi編」、「Sinatra編」、「SlackBot編」となります。ではでは。