【Self Summer Camp】Home Automation

August 21, 2019 Yuuki Nishiyama 0 Comments

夏休みに自室のスマートルーム化を目指して、セルフ実装合宿を決行。Raspberry Pi(ホームサーバ兼赤外線コントローラ)とSiriを使って「Hi Siri, I’m Home」で部屋の家電が全て起動、「Hi Siri, Bye-bye」で部屋の家電を全て停止を実現。毎日使ってるけど、かなり便利。まずは第一歩。FlaskとRaspberry Pi、IoT、Voice User Interface周りのいい勉強になった。

実装物

“Hi Siri, I’m Home” → TV、ライト、エアコン起動

“Hi Siri, Bye-Bye” → TV、ライト、エアコン停止

仕組み

仕組みは非常にシンプルで、ホームサーバとしてRaspberry Piを設置。Raspberry Piには赤外線コントローラが接続されており、ホームサーバ上で走らせているFlaskのAPIを叩くと対応した家電が操作できる。

赤外線コントローラ

自作しようと思ったが、時間がかかりそうなので、Raspberry Piに直接接続できる学習リモコン基板を購入。学習モードで10個のボタンにそれぞれ赤外線コントローラの信号を覚えさせる。信号の学習には特に、プログラミングは必要なく、スイッチを切り替えて基板上のボタンを押しながら、赤外線リモコンのボタンを押すだけ。

基板は以下のサイトから購入。詳しい使用方法も以下のサイトから確認できる。基板はRaspberry PiのGPIOを繋がっているので、ボタンに対応するピンに電気を流せば、Raspberry Piから赤外線をコントロールできる。基板上では10個のボタンがあり、各ボタンに信号を記憶することができるが、それより多い場合は、信号をRaspberry Piに取り込み保存し、操作時に赤外線LEDに流す必要がある。その機能も搭載されているみたいだが、今回はまだ実装していない。

ADRSIR ラズベリー・パイ専用 学習リモコン基板

 

ホームサーバ

Raspberry Pi と Flaskで実装。同じネットワークに接続しているデバイスから、APIを叩くと、デバイスのON/OFFを操作できる。

Raspberry Piの起動じにサーバも同時に自動起動する場合、サービスとして登録必要がある。登録のところで少しコケたのでメモ。まず、/etc/systemd/systemに適当なファイル(今回は、home-ir.serviceにする)作り、今の内容を記述する。注意点は、コマンドまでのフルパスを使うことと、外部からアクセス可能にするには、Flaskサーバの起動に、--host='0.0.0.0'を指定する必要がある。

[Unit]
Description=Home IR

[Service]
User=pi
EnvironmentFile=/etc/sysconfig/home-ir
WorkingDirectory=/home/pi/Development/IR
ExecStart=/home/pi/.pyenv/shims/flask run --host='0.0.0.0' --port=5000
Restart=always
Type=simple
RestartSec=10
KillSignal=QUIT

[Install]
WantedBy=multi-user.target

サービスの起動は、

sudo systemctl start home-ir

停止は、

sudo systemctl stop home-ir

システム立ち上げ時に自動起動するなら

sudo systemctl enable home-ir

[参考資料]

Siri

Siriのショートカット機能を使って特定のフレーズ時に、家電コントール用のAPIを叩ける。「URL」と「Get Contents of URL」というウィジェットがあるので、それを組み合わせればAPIを叩ける。

最後に

簡単に部屋に家電操作基盤を作ってみました。APIさえできれば応用は色々できそう。さらにこのAPI+MQTTを使って外部ネットワークから家電操作可能にしましたが、それは次回紹介しようと思う。

Leave a Reply:

Your email address will not be published. Required fields are marked *