ホームアプリのオートメーションからSSHを使ったスクリプトを実行することができるようになった。
と言っても、実はiOS13以前から設定はできていたが、何故か動作しなかった。
それがiOS 14から?無事動作するようになっていた。
今回はこの機能を使って、「ホーム」アプリに登録しているモーションセンサーが検知したら、LINEグループに対して不審者を検知した旨の通知を送信してみる。
今回の説明は、以前設定したRaspberry Piを使用している。
24時間低電力で稼働を考えたら、ラズパイを揃えてみるのもありだろう。
この記事ではHomebridgeの設定もしているので、一緒にやってみるのも良いかもしれない。
ラズパイとHomebridgeの環境構築は以下の記事を参考にどうぞ。
LINE Notifyのアクセストークンを取得する
上記サイトからLINE Notifyのトークンを発行する。(LINE IDでのログインが必要)
自分のLINE IDでログイン後、以下のようなページが表示される。
トークンを発行するをクリックする。
まずはトークン名を入力する。
通知を送信したいトークルームを選択できるので、該当のトークルームをクリックして発行するボタンを押そう。
このリストの表示されるのは、自分に対してのみか、グループのトークルームのみである。
今回上の画像では表示していないが、不審者検知の目的であれば、検知したら家族のグループルームに通知を送信したかったので、家族グループをLINEであらかじめ作成しておき、家族グループを選択した。
LINE Notifyをグループトークルームに招待しておくのを忘れずに。
発行するボタンを押すと、トークンが発行される(英数字の羅列)ので、コピーしてメモしておこう。
間違ってもLINE Notifyトップページの連携中のサービスから連携解除をして何度も発行できるので、神経質になる必要はない。
Raspberry Piにシェルファイルを置く
ラズパイにはpiユーザーがあるのとシェルフォルダを作っている前提である。
これは以前の記事の2-1で解説しているので参考にしてほしい。
ファイルを転送
curl -X POST -H 'Authorization: Bearer ここにトークンを貼り付け' -F 'message=家に不審者が侵入した可能性があります。' https://notify-api.line.me/api/notify
まずは上記をテキストエディタにコピペした後、「ここにトークンを貼り付け」の部分を先ほど取得したトークンに置き換えよう。
messageの後の「家に不審者〜」の部分の文字列は自分好みに変えても構わない。
置き換えた後はファイル名を「distrustsensing.sh」にしてデスクトップ上に保存しよう。(拡張子がtxtにならないよう注意)
次にファイルをSCPで転送する。
ターミナルを開き以下のコマンドを打とう。
$ scp ~/Desktop/distrustsensing.sh pi@raspberrypi.local:~/shell/
piユーザーのパスワードを入力して転送完了だ。
実行権限付与
新しいターミナルを開き、ラズパイにpiユーザーでログインしよう。
$ ssh pi@raspberrypi.local
シェルディレクトリに移動。(昔の記事にて作成したディレクトリ)
$ cd ~/shell
実行権限を与える。
$ chmod 755 distrustsensing.sh
権限を与えた後、以下のコマンドでdistrustsensing.shを実行してみてLINEグループに通知が送信されればOKだ。
$ ./distrustsensing.sh
ホームアプリからオートメーションを作成
iPhone等から「ホーム」アプリを起動させる。
下のオートメーションタブをタップして、右上の+ボタンからオートメーションを追加する。
今回はモーションセンサーが検知した時に、通知を送りたいので、「センサーが何かを検知したとき」をタップする。
もちろん、ここの条件を変えて通知タイミングを変えることもできる。
モーションセンサーを選択し、次へをタップ。
書きながら思ったのは、空気質が悪くなったら通知を送るなんてこともできるなぁなんて。
次へをタップ。
動きを検知したら、何を動作させるかの画面が出てくるが、一番下までスクロールすると、詳細に「ショートカットに変換」ボタンがあるのでこれをタップ。
+ボタンをタップする。
SSHのみを使うならば、シーンとアクセサリを設定の部分は不要なので、×をタップして消しておこう。
検索ボックスに「ssh」と入力し、SSH経由でスクリプトを実行をタップする。
ホストにRaspberryPiのIPアドレスか、ホスト名「raspberrypi.local」(以前の記事の通りに環境作っていた場合)を入力し、ユーザには「pi」、パスワートにはpiユーザのパスワートを入力する。
スクリプト欄には「/home/pi/shell/distrustsensing.sh」を入力する。
これが終わったら右下の再生ボタンをタップしてうまく動作するか確認してみよう。
もしテストの際、未知のホスト云々が出た場合は、承認しておこう。
無事動作したら次へボタンをタップしよう。
完了ボタンをタップしてオートメーションに登録が完了だ。
早速モーションセンサーを反応させて、オートメーションが実行されてLINE通知が行われるか確認してみよう。
ちなみにiOS13以前はこの設定までできていたが、SSHを実行することができなかった。
ホームハブのApple TVやiPadも14系にアップデートを行なっておく必要があると思うので忘れずに。
LINEの通知
このようにオートメーションが作動する条件が揃うと、LINE Notifyから通知が送信される。
[不審者感知]の部分はトークン発行時につけたトークン名、それ以外の部分はシェルファイルを作る際のmessageで指定した文字列である。
終わりに
今回はモーションセンサーに絞ったが、「ホーム」アプリのオートメーションでトリガーにできるものならなんでも可能なので、様々な物をトリガーにして遊んでみるのも楽しいだろう。
このような条件でこんな通知を送ったら面白いのでは?と言うものがあれば是非教えてほしい。
かなり簡単にスマートホームの条件に合わせてLINEを使って通知を送ることができるので是非やってみてはいかがだろうか。
コメント