リモートワークでオンライン会議とかする時に、家族がそれに気づいてなくて、声が入ったりしたことってありませんか?うちはリビングで仕事をしているので、ごくごく稀にそういうことがあります。そこで「会議中」であることが家族にもわかりやすいように、「ON AIR」ライトを購入して、音声でコントロールできるようにしてみました。
目次
必要なもの
Alfoto ON AIR オンエアー サインランプ
たまたま見ていた「MONOQLO 2021年08月号」で紹介されていて、1500円とそんなに高くもないので購入。Amazonのレビュー見てるとみんな似たような目的で買ってるみたいですね
いざ届いてみると結構大きい・・・サイズちゃんと確認せずに買ったのが悪いんですが。もうちょっとコンパクトなものを想像してました。HHKBより一回り小さいぐらい。
厚みが結構あります。
電源スイッチは物理です。その下に見えているのはUSB-Cです。
電源は上記のUSB-C経由か、もしくは単3電池です。
音声でコントロールするには、スマートプラグを使ってUSB-Cで給電、というのが一番良さそうです。
SwitchBot スマートプラグ
スマートプラグは、SwitchBotのスマートプラグにしました。ただし、SwitchBot製品をAlexaでコントロールするにはSwitchBot Hubが別途必要です。
Hubの分だけ余計な出費が発生しますが、
- Hubは赤外線リモコンも兼ねていて、もともと導入済(追加出費がなかった)
- SwitchBotはAPI経由での操作も可能
というところでチョイスしてます。
もちろんAmazon純正のスマートプラグでもいけると思います。こちらだとハブが不要なぶん安く済みますし、純正というのも安心感ありますね。普通に音声でコントロールしたいだけならこちらでいいと思います。
こんな感じで(汚くてすいません)スマートプラグをコンセントにつないで、そこからUSB-CでON AIRライトにつなぎます。ON AIRライト側の電源スイッチはONのままにしておきます。
SwitchBotプラグの設定
マニュアルに従って設定すればよいので、詳細は割愛しますが、少しだけ補足。
プラグにつける名前が、Alexaから呼び出す時の名前になります。私の場合、プラグの名前ではなくそこにつながっている機器の名前のほうがわかりやすいので「会議ライト」としてます。ただし、定形アクションを使えば別の呼び出し方ができるので、ぶっちゃけ何でもよいです。
あと、Alexaから呼び出す場合は「クラウドサービス」からAlexaとの連携を有効にしておく必要があります。
Alexaアプリのデバイス一覧に表示されればOKです。
定形アクションの設定
上記の状態で「アレクサ、会議ライトをつけて」「アレクサ、会議ライトを消して」がすでに動作するはずですが、デバイス名を指定するのではなく、もうちょっと直感的にやりたいです。
ということで、定形アクションの「エイリアス」を使いましょう。エイリアスは、定形アクションのトリガーとなるフレーズを、別のフレーズに置き換えてアレクサに実行させる機能だと思えばよいです。
今回の場合、まずON AIRライトをオンにする場合、
- 実行条件:「音声」を選択して、開始フレーズを「アレクサ、ミーティング開始」と設定
- アクション:「カスタム」を選択して、Alexaに対して言うフレーズを「会議ライトをつけて」と設定
というふうに設定しました。
同様にして、ミーティング終了時は逆に消すアクションを作成すればよいです。
これで、「アレクサ、ミーティング開始」「アレクサ、ミーティング終了」でON AIRライトが付いたり消えたりするようになります。以下がデモです。
おまけ:SwitchBot API経由でON・OFFする
上の方でお伝えしたとおり、SwitchBotはAPI経由でも操作が可能です。以下の記事がかんたんにまとまっていますね。
curlで試しにやってみました。取得したトークンが見えるとあれなので、以下の例では環境変数(SBTOKEN)で事前に指定してます。
$ SB_TOKEN="XXXXXX......XXXXXXX"
機器の一覧を取得します。登録されているSwitchBotデバイスが全部表示されます。対象となる機器のdeviceIdを探します。
$ curl -H "Authorization: $SBTOKEN" -H 'Content-Type: application/json; charset=utf8' 'https://api.switch-bot.com/v1.0/devices' | jq . { "statusCode": 100, "body": { "deviceList": [ { "deviceId": "XXXXXXXXXXXX", "deviceName": "会議ライト", "deviceType": "Plug", "enableCloudService": true, "hubDeviceId": "000000000000" }, (snip) ], }, "message": "success" }
次にこれを制御します。デバイスごとにコマンドが異なります。スマートプラグの場合は、turnOn
とturnOff
で制御できます。
ONの場合。
{ "command": "turnOff", "parameter": "default", "commandType": "command" }'
OFFの場合。
{ "command": "turnOff", "parameter": "default", "commandType": "command" }'
デバイスID(XXXXXXXXの箇所)を指定して、上記のJSONをPOSTしてやれば、ON・OFFが切り替わります。
$ curl -X POST -H "Authorization: $SBTOKEN" -H 'Content-Type: application/json; charset=utf8' 'https://api.switch-bot.com/v1.0/devices/XXXXXXXX/commands' -d '{ "command": "turnOn", "parameter": "default", "commandType": "command" }' | jq . { "statusCode":100, "body":{}, "message":"success" }
これをうまく使って、リモート会議の参加時・退出時をフックできれば、もっとシームレスにできるかもしれませんね。
APIの詳細はドキュメントをご覧ください。
まとめ
めちゃめちゃしょうもないネタでしたが、声でいろんなものを動かすのは楽しいですよ、是非トライしてみてください。