Raspberry Pi + Bluetooth リモコンシャッター + Google Home で「こっちに来て!」メッセージ

女房がリビング兼ダイニングルームで家事などをしている時、書斎にいるPOOHに大声で呼んでも応えてくれない、というクレームが多くなってきました。マンション住まいなので、そんなに距離があるわけではないのですが、書斎でストリーミングを楽しんでいたりすると声が届かないようです。

こういうことが続くとお互いストレスになるので、リビング兼ダイニングルームでボタンを押せば、書斎に置いてある”Google Home mini“でメッセージを喋る仕組みを作ることにしました。勿論、ラズパイを活用して。

 

< ボタンはどれにすればいいの? >

ラズパイでボタン操作といえば、過去にやったことのあるAmazonのダッシュボタン (“Amazon Dash ButtonでPhilips Hue 電球専用のDimmer スイッチを作ってみました (2)“)を思い出すのですが、ダッシュボタンは昨年の8月末でサービスを終了 (“バーチャルダッシュ“は未だ健全)。仮にダッシュボタンが壊れたら代替がないのは困るので、100円ショップで見かけるBluetooth仕様のリモコンシャッター(カメラのシャッターをリモコンで押すやつ)を利用することにしました。

300円台で送料無料だったので、”Bluetooth リモコンシャッター 無線 スマホ 自撮り棒 iPhone iPad Android対応 CW-268BT” (CW shutter)を購入しました。

 

< ラズパイとCW shutterをペアリング >

まず始めに、ラズパイと”CW shutter”をペアリングする必要があるので、必要なパッケージをインストールします。

sudo apt-get install bluez bluetooth libbluetooth-dev build-essential

ペアリングを開始します。以下、ターミナルで順に入力。

bluetoothchl

power on

scan on

ここで、左端が[NEW](下図では[CHG])で、nameまたはAliasが”CW shutter” (購入した製品によって名前が異なります。)を探し、BluetoothのMACアドレスを確認します。

ペアリングを実行します。

pair xx:xx:xx:xx:xx:xx (MACアドレス)

デバイスの信頼を実行します。

trust xx:xx:xx:xx:xx:xx (MACアドレス)

ネットの情報ではこれでペアリングが完了するはずですが、ラズパイに画面でログインしてみると、下図のようにペアリングの確認メッセージが表示されていたので、

“OK”ボタンをクリックして完了させておきました。(この状況が正しいのかどうかは不明。)

“CW shutter”の実態はボリュームアップのキーなので、”CW shutter”のボタンを押して、音量が大きくなることを確認しておきましょう。

 

デバイスが発行するイベントを検知する”evtest“で、”CW shutter”のキーイベントを拾えることを確認します。
sudo apt-get install evtest

sudo evtest

ここで重要なポイントは、下図の”/dev/input/event0:  CW Shutter”部分の”/dev/input/event0″なのでメモっておきましょう。

 

< CW shutterのボタン操作でアクション実行 >

“CW shutter”のキーイベントを検知して設定したアクションを実行するデーモン “bluebutton“をインストールします。

sudo apt-get install ruby

sudo gem install bluebutton

 

動作確認用の設定ファイルを作成します。(具体的な内容はネットを検索して下さい。)

sudo nano ~/.config/bluebutton

 

bluebutton“を実行してみます。

sudo bluebutton -c ~/.config/bluebutton

“CW shutter”が見つからない旨のエラーメッセージが表示されてしまいました。いろいろ調べてみたのですが、POOHの実力では解決に至りませんでした。

 

ここで諦めてしまっては、300円の投資が勿体ないので、もうひと踏ん張りしてみます。

Using USB and Bluetooth Controllers with Python“という記事を参考に作業を再開することにしました。

そちらに掲載されているPythonコードを見てみましょう。オリジナルでは”/dev/input/event3″ですが、先程、”evtest“で調べた内容に置き換えて下さい。POOHの場合は、”/dev/input/event0″です。

sudo nano /home/pi/get_keyevent.py ※  この段階で”import subprocess”部分は不要です。

コードに必要なパッケージをインストールします。

sudo pip install evdev

それでは、Pythonコードを実行してみます。

python /home/pi/get_keyevent.py

ボタンの種別までは分かりませんが、これで何とかなりそうです。

 

< CW shutterのボタンを押すとGoogle Homeが喋る >

それでは、”CW shutter”のボタンを押したら、”Google Home”が喋るようにします。

なお、”Google Home”が喋る仕組みは”google-home-notifier“というJava Scriptのライブラリでやってもらいます。インストール手順やセットアップ方法は、以下のTALKをご覧下さい。

・”Raspberry Piを使ってGoogle Homeに時報サービスをしてもらいましょう

・”Raspberry PiとGoogle カレンダでGoogle Homeにゴミの日を教えてもらう

・”Raspberry Piを使ってGoogle Homeに1時間後に雨が降る可能性を予測してもらいましょう

 

まず始めに、”google-home-notifier“を使って”Google Home”が喋るJavaスクリプトを作成します。

sudo nano /home/pi/googlehome-wife_calling.js

作成したJavaスクリプトを実行して、”Google Home”が喋ることを確認しておきます。

node googlehome-wife_calling.js

 

続いて、先程、動作確認に使ったPythonコードを編集します。

全体を整えたうえで、”import subprocess”部分とJavaスクリプトを呼び出す処理を追記しました。

実行してみましょう。

“CW shutter”のボタンを押すと、同じキーイベントが2回連続して発生するため、”Google Home”からは2度同じフレーズが聴こえてきます。当面、解決策が分からないので、ここまま放置しておくことにしました。

python /home/pi/get_keyevent.py

 

< 作成したPythonスクリプトを自動実行 >

ラズパイを起動したり、リスタートする都度、スクリプトを実行し直すのは面倒なので、以下の手順で自動実行するよう設定をしておきます。

・サービスファイルを作成します。

sudo nano /etc/systemd/system/googlehome_wife_calling.service

 

・サービスを有効にします。

sudo systemctl daemon-reload

sudo systemctl enable googlehome_wife_calling.service

sudo systemctl start googlehome_wife_calling.service

 

・サービスが動いていることを確認します。

sudo systemctl status googlehome_wife_calling.service

 

念の為、ラズパイを再起動後、ちゃんと実行されているか確認しておきます。

これで、人感センサーによるLEDライトの自動オン・オフ制御機能が完成しました。

journalctl -u googlehome_wife_calling.service

ちゃんと喋ってはくれるんですが、エラーが出ている模様。この辺りはもう少し調査が必要だなあ。

 

p.s>

bluetoothの規格的には10mぐらい離れた場所でも通信できると思っていたのですが、実際に使ってみると、せいぜい3m〜5mぐらいが通信圏内かな?という印象です。恐らく、300円で買えるbluetoothデバイスということもあってか、そもそもの用途がスマホ写真のリモートシャッター機能なので、そんなものなのかもしれませんね。正直なところ、今回の用途にはやや無理があるbluetoothデバイスだと思いました。

 

 

 

 

ホームページ “THE POOH FILES”にも是非お立ち寄り下さい。
Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。



          
        

tomohiko

長年に渡りMacintosh向けの自作アプリを作り続けているPOOHです。最近はiPhone,iPad向けアプリ開発にも挑戦中。グルメ、旅行、露天風呂、写真、サイクリング、映画、STAR TREKが大好き。レトロでSFなおもちゃを大量にコレクション。プレーリードッグと同居中。

おすすめ

コメントを残す