Twitterを使って自動化していたアクションを、iOSショートカット、Googleアシスタントに置き換えて再構築しました。
目次
Twitterを使った自動化がスマートじゃない
これまではSleep Meisterの自動ツイート機能を使ってハッシュタグつきのツイートを飛ばし、それをトリガーとしてIFTTTでアクションを実行するという方法をとってきました。
しかしこのツイートがけっこう邪魔。
自分以外の誰の役にも立たないツイートが自分のツイート履歴を無駄に占めてしまう。
他にツイートがないときにおやすみとおはようだけがズラズラと履歴に並ぶのはTwitterの運用上問題だと思う。
非公開のアカウント(鍵アカ)を作って運用すればいいと思ったが、IFTTTのTwitterチャンネルは鍵アカのツイートに対しては機能しない。
ツイートに頼らずに自動化を実現するために、運用方法を変えることにしました。
起床時にすることをトリガーにする
起床時に必ずすることをトリガーとして自動化アクションを実行したい。
ここでの「起床時にすること」とはもちろんデジタル的なことね。
トイレに行くとか顔を洗うとかじゃなく。
Google Homeに何か言うという手もあるけど、就寝時ならともかく起床時のボーッとした頭で何か特定の文言を(自分に)言わせるのが難しいことは容易に予想できるので却下。
じゃあ起床時に決まってする(できる)ことは何かと考えた時、今までやっていたのは「Sleep Meisterのアラームを止めること」。
上述のとおり自動ツイート機能はやめたいので、その代わりに
「Sleep Meisterのアプリを起動したとき」
をトリガーにすることにした。
就寝時にSleep Meisterをセットするとき、計測を開始したらそのままiPhoneのスリープボタンを押してスリープ状態にしてから寝る。
そして朝にアラームが鳴ってiPhoneをスリープ解除すると、Sleep Meisterが起動した状態になる。
iOSの「ショートカット」アプリのオートメーションを使えば、アプリの起動をトリガーとしてアクションを実行することができるので、この時のアプリの起動をトリガーとすることにした。
アクションの再構築
僕がこれまで起床時にツイートをトリガーとして実行していたアクションは以下の2つ。
- IFTTTでMESHに信号を飛ばして、その時刻が日の出前だったら部屋の照明を点灯するMESHレシピを実行
- IFTTTでMESHに信号を飛ばして、iPadから「OK Google, ラジオをつけて」という音声ファイルを再生してGoogle Homeでradikoを再生
どちらもMESHを使っているが、MESHはiOSショートカットに対応していないので「ショートカット」アプリから直接は使えない。
しかしIFTTTを経由すればMESHに信号を飛ばせるので、iOSからIFTTTのトリガーを叩ければ実行可能だ。
そこで、Googleアシスタントを使ってiOSとIFTTTをつなぐ。
こちらの記事のように、ショートカットアプリのGoogleアシスタントアクションを使えば、テキストでGoogleアシスタントにコマンドを送ることができる。
それで送ったコマンドを、IFTTTのGoogleアシスタントチャンネルでトリガーとすれば、
iOSショートカット→Googleアシスタント→IFTTT→MESH
のリレーができる。
1. IFTTTでMESHに信号を飛ばして、その時刻が日の出前だったら部屋の照明を点灯するMESHレシピを実行
というわけで、1.の「IFTTTでMESHに信号を飛ばして、その時間が日の出前だったら部屋の照明を点灯するMESHレシピを実行」を再構築する。
GoogleアシスタントとiOSショートカット
iOSショートカットの「オートメーション」を使用するので、実際に目覚ましを鳴らす(=アプリを起動する)端末でやること。
「オートメーション」は端末ごとの設定で、iCloudで同期されない。
あっちの端末で作ってから後でこっちの端末で拾うということができないので注意。
まず、Googleアシスタントアプリで何か適当な文言を入力する。
これは後でIFTTTにトリガーワードとして認識させる言葉であって、口で言う必要がないので実際のところは何でもいい。
僕は「朝のアクション」というワードにした。
なるべく他のコマンドと混同しないワードがいいだろう。
だからGoogleアシスタントアプリでは、「朝のアクション」とだけ入力する。
この時点ではGoogleアシスタントは何も実行しないけど、これでOK。
次に、ショートカットアプリで新規個人用オートメーションを作成する。
トリガーから「App」を選択してアプリ(Sleep Meister)を選択、「開いている」にチェックが入っていることを確認して「次へ」。
「アクションを追加」でApp→Assistantを選ぶと、先ほどGoogleアシスタントアプリで入力したワードが候補に出てきているはずなので、それを選択。
「実行時に表示」のチェックは外しておく。
「次へ」で「実行の前に尋ねる」のチェックを外して「完了」でOK。
これだけで、Sleep Meisterが起動したらGoogleアシスタントに「朝のアクション」コマンドを飛ばすアクションが自動化できる。
時間帯によってフィルター
しかしこれだと、就寝前にアラームをセットする時にSleep Meisterを起動した時もオートメーションが発動してしまう。
このアクションが発動するのは朝だけにしたい。
そこで、Sleep Meisterが起動した時刻によってフィルターを作る。
先ほど作ったオートメーションのGoogleアシスタントアクション(「朝のアクション」)の前に、次のようにアクションを追加する。
- 「日時」で「現在の日付」を取得。
- 「入力から数字を取得」で「日時」を選択。日付フォーマットを「なし」、時間フォーマットを「短」にする。
- 「if文」で、もし「数字」が「次の範囲内」「5」および「9」ならば とする。
5と9は5時台から9時台を意味する。(5:00から9:59(≒10:00)まで。) - 先に作っておいたGoogleアシスタントアクション(「朝のアクション」)をif文の条件式の直下にドラッグして入れる。(動作を安定させるため、前に待機時間5秒を入れています)
これで、Sleep Meisterが起動したら常にトリガーは動くが、5時台から9時台までの間に起動した時のみGoogleアシスタントアクションが実行され、それ以外の時間に起動した時はアクションは実行されない。
少し話が逸れましたが、本筋に戻ります。
IFTTT
次はIFTTT。
トリガーはGoogleアシスタントチャンネルから”Say a simple phrase”を選択。
トリガーワードに、先ほどオートメーションで実行させるようにしたワード(ここでは「朝のアクション」)を入力。
続いてアクションを設定。
ここではMESHに信号を飛ばすので、MESHチャンネルを選んで、適当なIDを入力しておく。
ここでは「wakeup」というIDを入力した。
MESH
最後はMESH。
僕は部屋の照明の点灯に関してすでに日の出/日の入りと在宅/不在で点灯をコントロールするレシピを作っていたので、
ここに、先ほど設定した「wakeup」のIDを設定したIFTTTブロックを追加するだけでOK。
これで1.が完成。
2. IFTTTでMESHに信号を飛ばして、iPadから「OK Google, ラジオをつけて」という音声ファイルを再生してGoogle Homeでradikoを再生
続いて2.のほうだが、
Google Homeに喋らずにGoogleアシスタントにコマンドを送る方法をすでに見つけてしまったため、iPadから音声ファイルを再生するという力業は廃止。
1.と同じようにGoogleアシスタントアプリでradikoを起動するコマンドを入力して、先ほどのオートメーションに組み込んでやればOK。
※ショートカットからGoogle Homeデバイスでradikoを再生させる方法はこちらの記事に詳しく書いてあります。
完成形
実際に使っている、1と2を同時に実行するオートメーションがこちら。
これで、自分がやることは今までと変わらず、Twitterを経由せずに朝のアクションを再現することができました。
朝になってSleep Meisterのアラームが鳴ってiPhoneをスリープ解除しようとするとSleep Meisterが起動するので、寝ぼけていてもオートメーションが実行されて、日の出前であれば照明が点灯、その後Google Homeのradikoが再生されます。
自動化が捗る
スマートホームというくらいなので、できるだけスマートにいきたいもの。
ソフトやハードが進化するとアイデアが新しく出てきますね。
もっともっと進化してほしい!
これでまた自動化が捗ります。