外出先でマックやラズパイの電源消し忘れた!と思ったらメールで電源オフをお願いすればいいよ
外出先で「あれ?マックの電源オフにしたかなあ?」と心配した経験ないですか?
そんな時、マックのような精密機器の場合は、スマートプラグなどを使ってコンセントの電源をいきなり落とすわけにはいきません。
というわけで、今回のTALKは、1通のメールだけでマックや”Raspberry Pi“などの電源を丁寧にオフにする仕組みを作っていきます。
< 用意するモノ >
実は、今回特別に用意するモノはありません。すべて手元にあるモノでリモート電源制御の仕掛けを組んでいきます。
< スクリプトエディタってご存知ですか? >
“macOS”には”スクリプトエディタ”というユーティリティソフトが標準でインストールされています。詳しい使い方などは、アップルサポートの”スクリプトエディタユーザガイド“いただくとして、このソフトは”アプリケーション”フォルダのなかにある”ユーティリティ”フォルダに入っています。昔からアップル製品を愛用している方はご存知かと思いますが、アップルは”アップルスクリプト AppleScript“(AppleScript)という物凄く便利なスクリプト言語を長いことサポートしています。自然言語に近い記述で、macOSは勿論のこと、いろいろなアプリを制御することができるスグレモノです。”Automator“は”AppleScript”をより身近に活用できる開発環境なんだと思います。
今回は、この”AppleScript”を最大限に活用して、リモート電源制御の仕掛けを組んでいきます。
< マックの電源オフやスリープをするスクリプトを作成する >
“スクリプトエディタ”起動して、新規書類を開いて下さい。
“ファイル”メニューから”用語説明を開く …”を選択すると、下図のような画面が表示されます。この画面に表示されるアプリケーションは”AppleScript”をサポートしていて、”AppleScript”で制御するためのルールを閲覧することができます。
今回は、”System Events”というアプリケーションを選択して下さい。こちらが、ルールブックです。
左端のリストから”Power Suite”を選択すると、マックの電源回りを選択するコマンドが真ん中のリストに表示されます。”shut down”はマックの電源をオフ、”sleep”はマックをスリープする、といった感じです。思ったより難しくないでしょ?
実際のスクリプトは、こんな具合に記述します。
マックの電源をオフにする。
マックをスリープする。
スクリプトを記述したら、上のバー部分にあるハンマーアイコンをクリックして下さい。上記のようにスクリプト文が変化したら、記述した内容が文法的に正しいということを意味します。
それでは、マックをスリープするスクリプトの再生アイコンをクリックして下さい。最初の一回だけ下図の確認メッセージが表示されますので”OK”ボタンをクリックして下さい。マックがスリープしたらOKです。
文法チェックと動作確認が済んだら、スクリプトの名前を付けて、次の場所にスクリプトファイルを保存して下さい。
“ライブラリ” – “Application Scripts” – “com.apple.mail” フォルダ。”Finder”の”移動”メニューを”オプション”キーを押しながら選択すると、”ライブラリ”がメニューに表示されます。
続いて、”メール”アプリを起動し、”環境設定”画面の”ルール”タブ画面を開いて下さい。下図が設定完了イメージです。
“ルールを追加”ボタンをクリックして、下図の要領で新しいルールを作成して下さい。要約すると、”shut down”というタイトルのメールを受信したら、先程作成した”Macを終了”するスクリプトを実行する、といった内容です。
ルールを編集したら、”OK”ボタンをクリックして、ルールを適用して下さい。
それでは、実際にマックの電源をオフにするメールを自分自身に送ってみましょう。
この仕組みの素晴らしいところは、電源が入っているマックで”メール”アプリが起動中で、上記の仕組みを仕込んだマックなら、複数台のマックを一度に制御できる点です。但し、1点だけ必ず注意すべきポイントがあります。仮に電源が入ったマックで”メール”アプリが起動していないと、次回マックを起動し、”メール”アプリで、このメールを新規扱いで受信してしまうとマックが終了してしまいます。外出先から送ったメールは、必ず既読にすることを忘れないで下さい。
< iPhoneのショートカットを活用する >
上記のように、いちいちメールを作成するのも面倒ですよね。そんな時は、”ショートカット” iOSアプリの出番です。
“新規ショートカット”の”アクションを追加”で、”App” – “メール” – “メールを送信”と進み、下図の要領でショートカットを作成します。
作成したショートカットを、下図のように、iPhoneのホーム画面に登録しておくと便利ですよね。
< マック経由でラズパイの電源をリモートでオフする >
それでは、上記の応用編ということで、マックを経由して、ラズパイの電源をオフにする仕組みを作ってみましょう。
マックの”Automator“を起動し、”新規書類”で”ワークフロー”を選択します。”スクリプト”と検索すると”スクリプトを実行する”というアクションが見つかりますので、アクションを右側のワークロード画面にドラッグ & ドロックして下さい。
マックからラズパイには”SSH“でアクセスするので、”paramiko“というライブラリを使います。”paramiko”の詳しいセットアップ方法は、先日のTALK (“macOSからRaspberry Piにワンクリックでradiko ラジオ放送の再生を指示する “Automatorとparamikoを活用”“)をご覧下さい。
左上のシェル欄を”/user/bin/python”にセットし、下図のようにスクリプトを書きます。
作成したスクリプトは、”書類”フォルダに保存します。
続いて、”スクリプトエディタ”で下図のようにスクリプトを書きます。
作成したスクリプトは、”ライブラリ” – “Application Scripts” – “com.apple.mail” フォルダに保存します。
“メール”アプリを起動し、”環境設定”画面の”ルール”タブ画面を開き、新しいルールを作成します。
例えば、下図の例ですと、”shutdown pi”というタイトルのメールを送信すると、指定したラズパイの電源をリモートでオフにすることができます。
|
|
|
ホームページ “THE POOH FILES”にも是非お立ち寄り下さい。
“Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。