前回、ラズパイのセットアップを行いました。
とはいってもまだ何も活用していないので、第1回目はラズパイでスマートホーム化を目指します。
具体的にはラズパイに赤外線モジュールを接続しGoogle Homeを操作の窓口にして音声コマンドで家電を操作できるようにします。
しかし、スマートホーム化といっても、すべての家電を操作できるようになるわけではありません。赤外線モジュールという単語が上記で出てきているので察していると思いますが、赤外線で操作できる家電に限ります。代表的なところですとテレビ、エアコン、照明、etc…ですかね。
こちらの記事はyoutubeにもアップロードしているので合わせてご覧ください。
※前身ブログ「ガジェット工房」のリライト記事となります。
※開設してまだ日が浅いブログのため、Amazonアソシエイトプログラムに参加できていません。参加でき次第、商品リンクを挿入していきます。
フローチャート
スマートホーム化するにあたってのフローチャートになります。
全体的な流れは以下の画像のようになります。
- (人)Google Homeに家電操作の音声指示
- (Google Home)エアコン操作のコマンドをTypeTalkに送信
- (ラズパイ)TypeTalkの送信された家電操作コマンドを読み取る
- (ラズパイ)読み取った家電操作コマンドをもとに赤外線送信
- (家電)赤外線を受けて起動
結構長くなってしまうので、数回に分けて説明していこうと思います。
その中でも今回の記事では4~5の部分、赤枠で囲った部分を実装してきます。
準備するもの
ラズパイでIoT化するために必要なものの紹介です。
ラズパイ
もちろんラズパイが必要です。モデルについては基本的に何でもよいです。検証を行っていないので断言はできませんが、最新の3 Model B+を選択すれば間違いないです。
Amazonで8000円ほどで購入できます(執筆時点2019/04/14※クーポン使用価格)。
ちなみに私の環境は1つの古い世代の3 Model Bで検証を行っています。赤外線モジュールに関しては、他の方の記事によると、低スペックですが小型で廉価なZeroモデルでも動作はするようです。
赤外線リモコンアドバンス
今回使用するものはこちら(amazonリンク)になります。執筆時点(2019/04/14)だと4680円です。
古いモデルであれば完成品は3000円、パーツ一式がそろって自分ではんだ付けを行うキットが2000円ほどで購入できます。しかし、古いモデルに関しては検証をしていないので動作できるか不明です。
外観
赤外線モジュールの外観はこんな感じです。
白い基盤でおしゃれです。大きさはフリスクサイズとなっております。ちょっと調べただけなのですが、フリスクサイズの基盤、フルスク基盤なるものがあり、おそらくそれを採用しているのだと思います。
画像はフリスクのケースに乗せてあります。ケース(フリスク)は付属しなので注意してください。
付属品
付属品は取説と保証書、広告です。梱包はかなりの簡易となっております。基盤は右側の小さいパッケージに入っているだけでした。個人的には壊れていなければ、まあいいかなという感じですけど。
ちなみに説明書には対応OSがvista以降のWindowsとなっておりますが、ドライバーを入れればラズパイでも動作します。
接続イメージはこのような感じです。
接続用のUSBはminiBコネクタです。USBは付属していないので、自分で用意する必要があります。
しかし、今時miniBコネクタってないですよね。せめてmicroUSBにしてほしかったです。
miniBコネクタってPS3のコントローラくらいしか使っていなかったので、個人的には身近な存在じゃなかったんですけど、どうなんですかね。
Google Home
続いてGoogle Homeです。価格は6000円ほどしますが、頻繁にセールをやっているので、3000~4000円で購入できると思います。ネット通販であれば楽天が狙い目です。
こちらは紹介記事が多く出回っているので割愛します。
ラズパイに赤外線モジュールのセットアップ
ここからようやく本題です。
赤外線モジュールのセットアップのやり方を解説します。
とはいっても基本的に以下の記事の手順でコマンドを実行すればすぐに使用できるようになります。
セットアップコマンド
上から順番に実行すればセットアップは完了です。簡単ですね。
※上記リンクより抜粋
sudo apt install libusb-1.0.0
git clone https://github.com/Drunkar/bto_ir_advanced_cmd.git
cd bto_ir_advanced_cmd
make
sudo make install
bto_advanced_USBIR_cmd --help
bto_advanced_USBIR_cmd –help コマンドを実行すれば使い方が表示されます。日本語表記なのでわかりやすいです。
基本的な使い方
ヘルプコマンドで出てくる『使い方の例』を参照すれば基本的な使用は可能となります。
受信系
$ bto_advanced_USBIR_cmd -r # (生データ)受信開始
$ bto_advanced_USBIR_cmd -s # (生データ)受信停止
$ bto_advanced_USBIR_cmd -g | tee data.txt # 生データ所得
送信系
$ bto_advanced_USBIR_cmd -d cat data.txt
赤外線信号の受信
下記コマンドを実行します。
bto_advanced_USBIR_cmd -r
そうすることで受信が開始されます。コンソールにも受信を開始しましたと表示されれば、OKです。
$ bto_advanced_USBIR_cmd -r
受信を開始しました。
$
赤外線モジュールに向けて赤外線を飛ばします。
赤外線信号の受信中は、画像では見づらいですが、基盤中央部分が緑色に光ります。
画像では適当に照明のリモコンを使用しています。ちなみにテキストで報告しても意味ないかもしれませんが、照明OFFの信号を保存しました。
赤外線信号受信の停止
以下コマンドで赤外線信号受信を停止します。
bto_advanced_USBIR_cmd -r
受信を停止しましたとコンソール上に表示されることを確認します。
$ bto_advanced_USBIR_cmd -s
受信を停止しました。
$
赤外線信号の送信
受信ができれば送信です。
その前に、受信した赤外線信号をファイルに書き出します。以下のコマンドを実行することで直前に受信した赤外線信号をファイルに書き出せます。
bto_advanced_USBIR_cmd -g | tee data.txt
ヘルプコマンドの『使い方の例』に則り、保存ファイルをdata.txtとしていますが、複数の信号を同一ファイル名に書き出すと上書きされてしまうので、適宜変更してください。
上記コマンドのコマンドのdata.txtの部分が赤外線データを出力するファイル名です。
例えば照明を消す赤外線データの場合は、lightoff.txtのようにすればわかりやすいですね。
例)bto_advanced_USBIR_cmd -g | tee lightoff.txt
ファイルの書き出しが成功したら送信して動作確認します。以下のコマンドを実行します。注意点としては、バッククオート(`)で囲まなければ、正常に動きません。
bto_advanced_USBIR_cmd -d
`cat data.txt`
※data.txtの部分は適宜読み替えること
これで家電が操作できるようになれば、セットアップは完了です。
その他の実装については次回の記事で紹介していきます。
おまけ~すぐに実用的な使い方をしたい人向け~
ここからはおまけです。ラズパイと赤外線モジュールを使い、すぐに実用的な使い方をできる方法を紹介します。
Google Homeを使ったスマートホーム化とは関係ありません。
cronへ登録して定期実行
cronのここが便利
ラズパイに載っているOSはLinuxですのでcronが使えます。
cronとは、簡単に説明するとプログラムを指定した日時に定期的に実行してくれるプログラムです。
ということで、cronを使えばタイマーがない家電でもタイマー機能を扱うことができるようになります。
例えば、平日の朝7時になったら照明をつける、帰宅する19時に合わせてエアコンを入れておく。などといったことができます。
一部の高性能な家電なら定期実行機能があるかもしれませんが、一般的に普及しているエアコンなどは、1回きりで定期実行できないモデルがほとんどだと思います。
そんな時にcronを使えば、簡単に定期実行ができるようになるのです。1回設定を行えば、夏場は冷房の起動、冬場は暖房の起動といった操作も、設定ファイルをコメントアウト・解除をすれば簡単に切り替えることもできます。
cronのインストール
cronを使用するには、まずはcronのインストールが必要です。インストールしていない人は以下のコマンドで、インストールします。
sudo apt-get update
sudo apt-get install cron
設定ファイルの編集はcrontabコマンドを使います。-eオプションで設定ファイルの編集を行います。初回起動時はエディタを聞かれるかもしれませんが、お好きなエディタを選択してください。
crontab -e
cronの登録
cronta -eコマンドで設定ファイルを編集します。
crontab -e
cronの書式は以下のような感じです。
分 時 日 月 曜日 <実行コマンド>
例として、私のcron設定を記載しておきます。
以下の例の場合、月曜~金曜(1-5)の7時(7)ちょうどと5分(0,5)に照明を入れる操作(赤外線送信)を実行します。
0,5 7 * * 1-5 sudo /home/xxx/bto_ir_advanced_cmd/bto_advanced_USBIR_cmd -dcat /home/xxx/bto_ir_advanced_cmd/light_shell/lighton.txt
※xxxはユーザディレクトリです
日時の指定に関しては、福栖の時間に実行したい場合は、,(カンマ)で区切って指定します。
上記の例だと7時ちょうどと7時5分に実行としていますが、0,5,10とすれば7時、7時5分、7時10分に実行する記述となります。
5-10と記載すれば、7時5分、7時6分、7時7分、7時8分、7時9分、7時10分の5回実行します。
曜日に関しては、0と7が日曜日で、1が月曜日、2が火曜日…6が土曜日になります。
例の場合、1-5なので月曜から金曜日に実行するとなります。
指定がない場合*(アスタリスク)を指定します。
また/(スラッシュ)を用いれば間隔指定もできるので、さらに詳しい指定の仕方は以下のサイトが詳しく書かれていたので参照してください。
赤外線モジュールのcron登録注意点
もう一度記載例を確認します。
0,5 7 * * 1-5 sudo /home/xxx/bto_ir_advanced_cmd/bto_advanced_USBIR_cmd -d cat /home/xxx/bto_ir_advanced_cmd/light_shell/lighton.txt
※xxxはユーザディレクトリです
注意点としては2点あります。
1つ目は、管理者権限で実行する必要があります。赤外線モジュールの仕様には管理者権限はいらないはずですが、sudoをつけないとなぜか動作しませんでした。
cronの実行ユーザーをrootにすればいけるかもしれませんが、管理が面倒なので一般ユーザでやっています。
2点目は赤外線モジュールの実行ファイルと赤外線データファイルをフルパスで指定です。
私も初心者なのでcronの実行ディレクトリがどこかわかりません。なのでそんな時はフルパスで指定してあげれば問題ありません。メンテのしやすさとか一切考えていませんが、とりあえず動きます。
以上でcronの設定は終わりです。
これらはもちろん普通のパソコンでもできます。しかし、ラズパイで赤外線操作するメリットとしては、やっぱり常時電源を入れっぱなしでも、そこまで電気代が気にならない点ですね。
それにミドルウェアを積めばほかのこともできます。リモコンはしょせんリモコンですが、ラズパイならソフトウェアをインストールすればファイルサーバやwebサーバにもできます。汎用性が高い点もラズパイを使うメリットは十分にあります。
買ったはいいけど何に使えばいいかわからない、という方の参考になるような記事を紹介していきたいと思います。今回赤外線モジュールという追加投資が必要な記事の紹介でしたが、スマートホーム化シリーズが完結次第、ラズパイ単体でできることも紹介していくのでぜひご覧ください。
コメント