こんにちは、はな夫(@logicalifer)です。
今回は、z6 polar meets popin aladdin(ポップインアラジンの据え置き型)とAlexaを連携させて、声で操作する方法をご紹介します。
今回の記事の方法を確立するためにした試行錯誤は下記の記事に記載しています。
設定をしていく手順は下記の通りです。
- AndroidスマホにServerless Bluetooth Keyboard & Mouse for PC/Phoneを導入
- AndroidスマホにTaskerを導入
- Raspberry piにNode-REDを導入
- AlexaにRaspberry piを登録
- Alexaで定型アクションを設定
また、必要なものは下記の通りです。
- z6 polar meets popin aladdin(シーリングライト型のpopin aladdinでも動作するかもしれませんが、所有していないので分かりません)
- BLEに対応したAndroidスマホ(古い機種だとアプリが動きません)
- Raspberry pi(Node-REDが動けばいいので、何でも良さそうです)
- Alexaが動作するスマートスピーカー、端末
- Alexa対応スマートプラグ
また、アプリとしては、Taskerに課金が必要です。
それでは順を追ってご説明します。
AndroidスマホにServerless Bluetooth Keyboard & Mouse for PC/Phoneを導入
Google playからServerless Bluetooth Keyboard & Mouse for PC/Phoneをインストールします。
インストールした際に、BLEに未対応の機種だと正常に動作しない旨のダイアログが出てくるので、残念ながら諦めて他の端末でお試しください。(手持ちのHuawei P10 liteで表示されました)
Bluetoothのペアリング
アプリをインストールしたらBluetooth devicesからBluetoothのペアリングを行います。
成功したら、コントロール画面になるため、設定ボタンをタップして、CONTROLSタブの「Shor Android navigation buttons」を有効化します。
HOMEボタンとBACKボタンをタップして、z6 polarの画面が遷移することを確認します。
AndroidスマホにTaskerを導入
AndroidスマホにTaskerをインストールします。
インストールが完了したら、続けてTaskerのプラグインであるAutoRemote liteをインストールします。
AutoRemoteを起動すると、設定画面へのURLとQRコードが表示されますが、後ほど使用するので最初は不要です。
ここから先はTaskerの設定になります。Taskerの操作について、詳細は他のサイトやユーザーズガイドを参照することをおすすめし、ある程度操作がわかっている前提の内容を記載いたします。
TaskerのProfileにてEvent>Plugin>AutoRemote>AutoRemote>AutoRemoteを選択します。
設定が表示されるのでタップします。
ダイアログと設定内容が表示されるので、戻ります。
値が入ったので戻ります。
続いてタスクを設定します。
このタスクでは、
- Serverless Bluetooth Keyboard & Mouse for PC/Phoneの起動
- Raspberrypiから受信するキーコードを16進数から10進数に変換
- ウェイト(アプリの起動とBluetoothのペアリングが完了するまでの時間を調整)
- キーボード入力で2で変換したキーコードを入力
を実行します。
if文で追加の動作をしているのは、音量のボリュームアップとボリュームダウンです。これは、一回のキーコード送信ではほとんど音が変わらないためです。本当はfor文で回すべきですが、横着して3回直書きで実行しています。
タスクを作成したら保存し、Profileを有効化しておきます。
次にAutoRemoteの設定を行います。
AutoRemoteを単体で起動すると、URLとQRコードが表示されるので、PC等他の端末からブラウザでアクセスします。(同じAndroidスマホでは、操作や確認作業がしにくいと思います。)
ブラウザが表示されたら、送信内容のところに18と入力します。すると、右側にURLが生成されるのと、送信ボタンが押せるようになります。
ここで、テストとしてz6 polarを起動した状態で、送信ボタンを押します。
Androidスマホの画面がキーボードアプリに変わり、ボタンが押されてz6 polarの音量が変われば成功です。
Raspberry piにNode-REDを導入
Raspberrypiを用意し、Node-REDをインストールします。手順については、下記の記事を参考にしてください。
インストールが完了したらNode-REDへアクセスします。
これを作ります。
最初はAmazon eho hubノードです。設置後ダブルクリックし、ポートを8111に変更します。
次にAmazon echo deviceノードです。設置後ダブルクリックし、名前を「PJ_VOLUME_UP」に変更し、topicを18に変更します。(名前は何でも良いです。後で、ボリュームアップすることが分かる名前であればOKです)
次にtemplateノードです。設置後ダブルクリックし、一番下の出力形式をJSONに変更後、入力欄に下記を入力します。
{
"key": "キー"
"message": "{{topic}}"
}
ここで、キーとしている箇所は、先程のAutoRemoteのテストで開いていたブラウザの送信ボタンの下にあったコードのうち、key=以降から&messageの前までの文字列になります。
次にHTTP Requestノードです。メソッドはGET、URLは先程のAutoRemoteのテストで開いていたブラウザの送信ボタンの下にあったコードのうち、keyより前の部分になります。
ペイロードを「クエリパラメータに追加」に変更します。
これで、Alexaからの呼び出しがあったら、先程のAutoRemoteの送信ボタンと同じリクエストをRaspberrypiから実行できるようになります。
右上のデプロイを押して有効化します。
AlexaにRaspberry piを登録
Alexaに「新しいデバイスを追加して」と声掛けして、Alexaが「PJ_VOLUME_UP」をPhilipsのスマートライトとして検出してくれればOKです。
デバイスの照明から「PJ_VOLUME_UP」を選択し、ライトをタップして照明をつける操作を行います。
タップした後にスマホのBluetoothキーボードアプリが開き、先程と同様にz6 polarの音量が変われば成功です。
Alexaで定型アクションを設定
定型アクションの設定画面を開き、z6 polarの音量を上げるための声掛けを登録して、先程の「PJ_VOLUME_UP」の電源をONする設定をすれば完成です。
各ボタンの登録
上記までで、一連の設定をご説明しました。あとは、ボタンとアクションの追加をしていきます。これからは、Raspberry piとAlexaの設定を必要なだけしていけばOKです。それぞれの値を下記の表にまとめました。
リモコン | AKC | hex | dec | Device名 |
---|---|---|---|---|
電源 | KEYCODE_POWER | 0x001a | 26 | PJ_POWER |
マイク | KEYCODE_F5 | 0x0087 | 135 | PJ_F5 |
メニュー | KEYCODE_MENU | 0x0052 | 82 | PJ_MENU |
メニュー長押し | KEYCODE_HOME | 0x0003 | 3 | PJ_HOME |
上 | KEYCODE_DPAD_UP | 0x0013 | 19 | PJ_DPAD_UP |
下 | KEYCODE_DPAD_DOWN | 0x0014 | 20 | PJ_DPAD_DOWN |
左 | KEYCODE_DPAD_LEFT | 0x0015 | 21 | PJ_DPAD_LEFT |
右 | KEYCODE_DPAD_RIGHT | 0x0016 | 22 | PJ_DPAD_RIGHT |
決定 | KEYCODE_ENTER | 0x0042 | 66 | PJ_ENTER |
戻る | KEYCODE_ESCAPE | 0x006f | 111 | PJ_ESCAPE |
ホーム | KEYCODE_MOVE_HOME | 0x007a | 122 | PJ_MOVE_HOME |
ボリュームアップ | KEYCODE_VOLUME_UP | 0x0018 | 24 | PJ_VOLUME_UP |
ボリュームダウン | KEYCODE_VOLUME_DOWN | 0x0019 | 25 | PJ_VOLUME_DOWN |
ミュート | KEYCODE_VOLUME_MUTE | 0x00a4 | 164 | PJ_VOLUME_MUTE |
BIOS | KEYCODE_CALCULATOR | 0x00d2 | 210 | PJ_CALCULATOR |
再生・一時停止 | KEYCODE_MEDIA_PLAY_PAUSE | 0x0055 | 85 | PJ_MEDIA_PLAY_PAUSE |
ストップ | KEYCODE_MEDIA_STOP | 0x0056 | 86 | PJ_MEDIA_STOP |
次にスキップ | KEYCODE_MEDIA_NEXT | 0x0057 | 87 | PJ_MEDIA_NEXT |
前にスキップ | KEYCODE_MEDIA_PREVIOUS | 0x0058 | 88 | PJ_MEDIA_PREVIOUS |
0 | KEYCODE_0 | 0x0007 | 7 | TV_CH0 |
1 | KEYCODE_1 | 0x0008 | 8 | TV_CH1 |
2 | KEYCODE_2 | 0x0009 | 9 | TV_CH2 |
3 | KEYCODE_3 | 0x000a | 10 | TV_CH3 |
4 | KEYCODE_4 | 0x000b | 11 | TV_CH4 |
5 | KEYCODE_5 | 0x000c | 12 | TV_CH5 |
6 | KEYCODE_6 | 0x000d | 13 | TV_CH6 |
7 | KEYCODE_7 | 0x000e | 14 | TV_CH7 |
8 | KEYCODE_8 | 0x000f | 15 | TV_CH8 |
9 | KEYCODE_9 | 0x0010 | 16 | TV_CH9 |
我が家のNode-REDは下図の感じになっています。
なお、ここまで設定しましたが、いくつか注意点があります。
- 表において、ミュート以降の内容はリモコンにボタンがありませんが、キーボード操作ができた内容です
- 0~9はつながるTVを使用時にチャンネル選局できます(0は10チャンネルです)
- BIOSは中国語で表示されますが、基本操作不要の画面です。後述する電源操作をしたい方は一つ設定を変更する必要があります
- BIOS画面にはadbの有効化っぽい非常に気になる選択肢があるのですが、有効化しても接続できていません、どなたかできたらぜひ教えていただきたい内容です
- その他にもあるかもしれませんが試していません
- 電源ボタンに記載した内容はリモコンで電源ボタンを押した時とは異なり、電源OFFをいきなり開始します。リモコン同様に選択肢を表示したい場合は違うキーコードを送信する必要がありますが、自分の用途に不要のため調べていません
z6 polarの電源をAlexaから操作する
上記までの登録すれば、電源をOFFすることはAlexaから可能になりますが、電源をONすることができません。リモコンの電源が赤外線に変わったpopin aladdin2では、他のスマートリモコンで操作が可能になっていると思いますが、z6 polarは電源もbluetoothである、かつz6 polar本体の電源をOFFしたら、リモコンしか接続が継続しない(?)のか、スマホの接続は解除されてしまいます。
そこで、模索をしたところ、BIOS画面に良い設定がありました。
BIOS画面を開き、リモコンで3ページ目に移り、上から2番目の「上电~」の値を「开」に変更します。
変更後、電源をOFFし、電源コードを抜き差しします。電源コードをつなげてしばらくしたら、いつもの起動画面がでてくると思います。
これで、通電をトリガにz6 polarの起動をすることができました。
あとはalexa経由で電源タップのON/OFFができれば良いので、alexa対応のスマートプラグを導入し、z6 polarの電源ケーブルを接続します。
これにより、alexaからスマートプラグのON/OFFを制御することによって、z6 polarのON/OFFが実現できます。
なお、電源ON時はこれでよいですが、電源OFFする際もスマートプラグから操作すると、いきなり電源をOFFすることになってしまいますので、alexaによる電源OFF操作時は、表に記載した電源OFFのリモコン操作を実施後にスマートプラグをOFFする定型アクションにした方がよいと思います。
まとめ
長々とした設定の説明でしたが、これを導入すれば、メーカ純正のリモレスでなく、Alexaを利用してある程度の音声操作が可能になります。
まだできていない点としてはいくつかありますが、我が家ではz6 polarではつながるTVしか見ておらず、その他はfire tv stickをHDMI端子に挿して、そちらのコンテンツを見ているため、最低限の操作はできています。
もう少しなんとかできないかという点は下記です。
声でアプリを開く:今回の設定はキーボード操作だけで任意のアプリが開けないため、難しいです。ただし、よく使うアプリは一番上の列に表示される仕様のため、我が家の場合はつながるTVが表示されています。そのため、電源ON後に一回ENTERを押すように制御すれば、電源ON後に自動でつながるTVを開くことができそうです。(シーリングライト型はテレビモードが実装されているため、テレビだけならこの苦慮はしなくて良さそうです)
声で早送り、巻き戻しを行う:つながるTVの録画した映像を1分スキップすることができたのですが、巻き戻しが反映されませんでした。他のボタンをまだ試せていないので、もしかしたら方法があるかもしれません。
また何かできることが増えたら、記事にしようと思います。
コメント