apple watch を2台もちしています。
睡眠の計測などで夜用のapple watch から 活動時間用の apple watch に切り替えます。
時々、昼時くらいに、低バッテリー通知が届くことがあります。
つまり充電されないことが・・・・。
これを避けるために、朝のあるタイミングで apple watch のバッテリー残量を 通知などで受け取りたいと思いました。まず思いつくのが、 iOSでお馴染みになった「ショートカット」を使うことです。

ショートカット作っていきましょう。
スクリーンショットは便宜上、iPadのショートカットアプリをiPhoneサイズにして取得しているので、少し画面が異なりますがご了承ください。操作感は変わりません。
まず制約・苦労したこと・工夫したこと(必要に応じて読み飛ばしてください)
Bluetoothの情報を取得することができない
iPhoneのショートカットは、AndroidのTasker のようなものとの思い込みがあるので、割と自由が効くと思ったら、Bluetooth機器の情報を取得することができないことが判明しました。
アップルエコシステムの中で、apple watch くらいは?と思いましたが、apple watch として出てくるものは、apple watch 上で実施するショートカットのみです。
画像認識を駆使
ショートカットには画像から特定の文字列を読み取る OCR 機能があります。
スクリーンショットを撮ることも可能なので組み合わせます。
特定の画面を出すことができない
ショートカットに「ホーム画面へ移動」というアクションがあります。
でもこれは語弊があり、正確には「ホームに戻ろうとする動作をする」です。
ホームボタンがある機種ではホームボタン、ない最近(というかほとんどこれ)は底部からスワイプのジェスチャーですが、アプリを起動した時のホーム(そのアプリが並んだ画面)に戻るや、アプリフォルダの場合はアプリフォルダを選んだ状態に。
つまるところ、何枚目のホーム画面に戻るとか、ウィジェットのみの画面(今日の表示または今日のステータス(Today View))に移動とかができないです。
ウィジェットのスクリーンショットを使うことにする
apple watch のバッテリーは、ウィジェットの「バッテリー」をアイコンのみ形式でなく、アイコンに数字がついた形式かテキスト形式にすると何%かが変わります。これを使います。
順番も要注意です。手持ちのいくつかのBluetooth製品を繋いだところ、apple watch は必ずiPhone本体の次の2番目に出てきます。airpods や 他のヘッドフォンを繋いでもこの優先順位は変わらないです。
固定位置なので使えます。


ショートカットを作っていく
共有ボタンからのアクセスをまず可能にすること
ショートカットを作る+ボタンを押した後で、アクション入力部分を一旦下にスワイプして、真ん中にあるiマークをタップして、共有シートに表示を選びます。
すると「共有シートからアプリ・・・もし入力がない場合:続ける」を最初に
(テストがしやすいだけなので、ここは無くても良いです)

スクリーショットとOCR部分
次にアクション「スクリーンショットを撮る」を検索して追加、
「テキストを抽出」を検索して追加、連続になるので、変数が自動的に「スクリーンショット」になります。


「一致」を検索して「一致するテキスト」を追加、すると変数が自動的に「画像からテキスト」となります。
一致させる文字列をタップすると入力モードになるので、
\d+%
と入力します。


バックスラッシュは読みを入力しても変換候補にできますし、かなフリックだと 9 押しの右、QWERTY キーボードだと記号モードからの選択でも。またキーボードだと Option + ¥マーク です。
取得した文字列の判定
「\d」 部分は数字の0〜1 を意味します。「+」で1回以上続くを示し、その直後に「%」がくるものを検索・マッチさせるためのものです。これで 100% や 76% 3% どの桁が来ても読み取れます。
次に読み取ったテキストを変数に格納するため、「テキスト」と検索して1番上の「テキスト」を選択、フォーム部分をタップすると「変数を選択」が出てくるので、マジック選択の候補の1番前にある「一致」を選択、するとサブウィンドウが開くので、変数名を分かりやすく「一致」にします。真ん中右にある戻るで戻れます。

数を数える
apple watch のバッテリーウィジェットにおいて2番目に出てくるので、「数」と検索して、「Σ数える」を選択。自動選択が間違っているので 先ほど設定した「テキスト」となっている部分を長押しして「一致」の変数に変更します。
今 「一致」にはOCRで読み込んだ何%という文字列の「リスト」が入っています。
このリストの2番目が apple watch が2番目なので、2つ目だけを選択させるために、「リスト」と検索して「リストから項目を取得」を選びます。


また自動選択が間違っているので、「Σ数」を長押しして「一致」に変更します。続く「最初の項目」もタップして「項目のインデックス」を選び、数字も「2」に変更します。


読み上げる または LINEするなど
読み上げする場合は、「読み上げ」を検索して、「テキストを読み上げる」を選択
「リストからの項目」になっている部分をタップすると、他の文字列も入力できます。
試しに「apple watch のバッテリー残量は」を前に付けることにします。
読み上げは Siri がやってくれますが、読み上げ後に SIri がしばらく立ち上がっているようなので、「Siri」と検索して「Siriを終了して続ける」を選択します。


LINEする場合は、「LINE」を検索して、「メッセージを送信」を選択、宛先はLINEの相手の名前を直接入力します。

テストをする
出来上がったショートカットをタイル一覧になっているところで長押しして「名称変更」して適当な
バッテリーウィジェットのスクリーンショットなどで、共有を選び、先ほど名称変更したショートカットがあると思うので選択して、読み上げが行われることを確認します。

ブラッシュアップする
if文で読み上げをさせない選択肢を
今の状態では、何%をOCRで取得できなくても、「apple watch のバッテリー残量は」が読み上げられてしまいますので、分岐を組み入れます
「if」と検索して「if文」を選択します。
「〜の条件の場合(if文の最初)」の右側の余白部分を長押しして握り状態にします。上下に移動させられるので、「Σ 一致 の項目の数を数える」の直後まで上げて話します。
「条件」をタップして、「Σ数」を選びます。


「が次と等しい」をタップして「が次よりも大きいか等しい」を選択、「数字」をタップして「2」を入力します。
この条件でアクションが実施されるようにしたいので、「if文の終了」の後にある全アクションを移動させます。


最大の問題点スクショを撮る場面を固定する
ショートカットの「オートメーション」を利用しましょう。
ある条件や時間を指定して、実行したいショートカットを選べます。
apple watch を付け替えるタイミングを想像します。 朝起きて、apple watch を外し付け、iPhoneの充電を充電器(自分は MagSafe の充電器)から外すシチュエーションを想定します。
「充電器」を選択して「接続解除されている」のみを選択に変更して、必ず「すぐに実行」を選びます。
右上の「次へ」を選び、作ったショートカットを選びます。
スクショを撮るアクションの隠し仕様
スクリーンショットを撮るというアクションは、「画面が点灯している必要がある」という隠し条件があります。これは厄介です。
しかしながら、iPhoneは充電器から取り外した時に必ずロック画面になります。
ロック画面が点灯している間にスクショを撮れば良いでしょう。
なのでロック画面のカスタマイズをします。
バッテリーウィジェットの2コマタイプを選択して配置します。
配置後タップして「自動」を無効にしてデバイスで、当該のapple watch を選択します。
これを2つ設置します。
2つ置いたのは理由があります。先ほどのショートカットで 2つ目の項目を読み上げるように組み上げたという理由もありますが、充電器から外した時に、1番上部に 何% と充電状態が出るタイミングがあります。それはスクショのタイミングで消えている時もあればそうでない時もあります。1個目と数える場合は2個目が左に置いたウィジェットが対象に、消えている場合は2個目が右に置いた(左と同じ)ウィジェットが対象になります。
ロック画面のカスタマイズ領域は非常に狭いのに、このためだけに一列を使ってしまうのは非常に残念ではありますが、目的のためと割り切ります。
また数字に%と付いたものを読み取るので、天気系のウィジェットを置いている人は注意です。降水確率の文字列を読み取ってしまう可能性があります。
ある時間にショートカットを実行する
オートメーションでは時間を指定できます。
ある時間、たとえばまだ家にいて、apple watch の充電が間に合う時間を選ぶと良いでしょう。
でも、先ほどのスクショの仕様から、画面を点灯させる必要があります。
iPhoneは通知が来ると画面が点灯し一瞬ロック画面が表示されます。これを使いましょう。
もちろん指定の時間にiPhoneを使っている時にスクショ動作してしまいますが、この時は あっ! apple watch の残量気にすべきと備忘アクションになるため我慢します。
画面を点灯させるためにリマインダーを使う
手っ取り早く時間で通知を行う方法としてリマインダーを使う手があります。
リマインダーアプリで、新規に追加、タイトルを必ず入れましょう 後でこれを条件にショートカットを使うので、分かりやすいものが良いです。自分は 「トリガー」 と「トリガー2」にします。
時刻を有効にして、繰り返しも毎日にします。
必要に応じて場所なども入れてください。
7:15 と 8:15 の2つ用意しました。必要に応じて増減させてください。
オートメーションで時刻を選択して完了ですが、自動的に「確認後に実行」になるため作ったオートメーションのタイルの右側にある「>」をタップして、オートメーション部分を「すぐに実行」に変更ください。


スクショタイミングを調整
リマインダーの時間になると画面が点灯しますが、スクショが最初に動く場合もあり、たまに失敗してスクショ動作にならないことがあります。
先ほど作ったショートカットを改良します。スクショを撮るアクションの前に「待機」を検索して「⌛️待機」を選択します。秒数はデフォルトの「1秒」で大丈夫です。
ロック画面の点灯時間は約2〜3秒ほどなので、充電器から外した時のオートメーションと時刻(リマインダーの時間と同じ)のオートメーションのどちらでも利用できます。
読み上げのショートカットを複製して、待機するバージョン、待機しないバージョンに分けても問題ありません。
リマインダー未完了がたまる問題もショートカットで処理
リマインダー を使うと、未完了が蓄積する弊害があります。
自動的に apple watch 用に用意したリマインダーを完了にする オートメーションも用意します。
まず新規ショートカットを作成。
「リマインダー」を検索して、「リマインダーを検索」を選択。
フィルタを追加をタップして、
「タイトル」「が次を含む」(が次で始まるとかでも可能)にして、「すべて」となっている部分を「リマインダーのタイトル(自分の場合は「トリガー」)」を入力。
フィルタの追加で、「完了済みではない」を追加。
フィルタの追加で、「期限」を選び、「は」になっている部分を「今日である」に変更。


「リスト」を検索して、「リスト」を選択します。自動的に1件2件となっているので、1件と2件を「-」をタップして削除した後「新規項目を追加」して「テキスト」と表示されている部分をタップして「変数を選択」をタップして、リストの直前のタイルの間にある「リマインダー」を選択します。
今回、2つの時間に読み上げを行うことにしているので、リストを挟んでいますが、1つの場合は、次の工程が必要ありませんが、1つの場合も流用できますので設定しておきましょう。
「繰り返し」を検索して、「各項目を繰り返す」を選択。自動的にリストの繰り返しになります。


「リマインダー」を検索して「リマインダーを編集」を選択して、「・・・繰り返す」と「繰り返しの終了」の間に移動させます。すると自動的に「繰り返し項目」と変わるので、「詳細」と表示されている部分をタップして「完了済み」を選択、「いいえ」の部分を「はい」に変更。
リマインダーの処理をオートメーションに
先ほどオートメーションにした時刻の後の時間に、オートメーションを設定します。
自分は 7:15 と 8:15 に apple watch のバッテリー読み上げを設定しているので、8:20 に先ほど作った特定のリマインダーを完了済みにする を設定します。
これで、apple watch の読み上げを行うためだけに画面を点灯させるリマインダーを完了として、未完了が溜まるのを防ぎます。

いくつかのショートカットを共有
apple watch のバッテリー残量を読み上げる(簡易版)



70%未満の時だけ読み上げる版




特定のリマインダーを完了済みにする

