LEDのON/OFFをiOSのショートカットを使って行う
LEDを使う(点灯、消灯、点滅など)Pythonのプログラムを書いたら、そのプログラムをラズパイの上で実行しなければなりません(当たり前ですが)。つまり、ラップトップやデスクトップのコンピュータからVNC経由でラズパイの画面を見て、ThonnyでPythonのプログラムを開いて、実行ボタンをクリックします。ラップトップやデスクトップではなく、タブレットやスマートフォンでVNCを使うこともできますが、いずれにせよ、ラズパイの画面上でThonnyの実行ボタンをタップする必要はあります。
LEDを使いたいだけなのに、VNCのあの「もったり」した動作に付き合い、Thonnyを動かして。。。というのは面倒なときもありますよね。もっと手軽にLEDを使いたいというニーズに応えるには、iOSのショートカット(Shortcuts)という機能が便利です。これはアップルが開発したiOSアプリで、WiFiでラズパイと通信し、ラズパイ側のPythonプログラムをSSH経由で実行できるようになります(ここではSSHが何かを知っている必要はありません)。以下の動画のような使用感です。
ショートカット(Shortcuts)は、iOSのバージョン12から利用可能です。iOSの最近のバージョンには初めから含まれているので、App Storeからダウンロードする必要はありません。
残念ながら、ショートカットのAndroid版はありません。ただし、Androidからラズパイ上のプログラムを実行する方法はあります(LEDのON/OFFをAndroidとBluetoothで行うを参照)。
セットアップ
まずは、お使いのiPhone/iPadにShortcutsアプリがあることを確認してください。なければApp Storeからダウンロードしてください。ShortcutsはiOSのバージョン12以上で動作します。
次に、ラズパイ画面左上のアイコン(ラズパイのロゴ)をクリックしてメニューを開き、「Preferences」を選択、さらに「Raspberry Pi Configuration」を選択してください。「Raspberry Pi Configuration」というウィンドウが開いたら、「Interfaces」を開き、SSHを「Enable」にします。その後、OKボタンをクリックしてウィンドウを閉じてください。
SSHが正常に使えるようになっていることを確認するために、ラップトップ(あるいはデスクトップ)コンピュータ上でTerminalを起動して、以下のコマンドを実行してください。
ssh pi@<hostname>.local
<hostname>はラズパイの名前です。ラズパイの名前がpandaなら、「ssh pi@panda.local」としてください。パスワードを求められるので、ラズパイ用のパスワードを入力してください。すべてうまく行くと、以下のような行(コマンドプロンプト)が表示されて、$の右側にカーソルが点滅している状態になります。
pi@panda:~ $
これは正常に(SSHを使って)コンピュータからラズパイにログインできたということです。ここでは、これ以上SSHそのものやSSHの使い方には踏み込みません。カーソルが点滅しているところに「exit」と入力してリターンキーを押してください。これで、ラズパイからログアウトします。これで、SSHが正常に動作していることが確認できました。
使う回路とプログラムの準備、テスト
ここでは以下の回路を使います。これは「複数のLEDを点滅させる(複数のGPIOピンを使う)」で作ったものと同じです。
この回路でLEDを点滅させるプログラムがled2-on-off-alternate.pyです。これも「複数のLEDを点滅させる(複数のGPIOピンを使う)」で作ったものと同じです。このプログラムをラズパイ上のThonnyにコピーして保存してください。そして、このプログラムをThonnyを使って実行して、正常に動作することを確認してください。2つのLEDが交互に10回点滅すれば成功です。
次に、同じプログラムの動作を、別の方法でテストします。ラズパイの上でTerminalを開いて、以下のコマンドを実行してください。
python3 ~/iot-python/led2-on-off-alternate.py
「python3」と「~」の間にスペースが入っていることに注意。ここでは、ワークショップ中に作った「iot-python」というフォルダの中にプログラム(led2-on-off-alternate.py)が保存されていると想定しています。先ほどのテストと同じように、2つのLEDが交互に10回点滅すれば成功です。
ShortcutsからLEDを点滅させる
いよいよ、このプログラムをiOSのShortcutsから実行します。iOS上でShortcutsを実行し、画面右上の「+」をタップして、新しいショートカットを作ります。ここでは、ラズパイ上のプログラムを実行するショートカットを作ります。
次の画面の一番下にある検索欄に「ssh」とタイプします。
すると、以下のように「Run Script Over SSH」という項目が表示されるので、それをタップします。
次の画面で「Show More」をタップして、以下のように各情報を入力します。
入力項目 | 入力値 |
---|---|
Host | <hostname>.local |
Port | 22 |
User | pi |
Authentication | 「Password」を選択 |
Password | ラズパイ用のパスワード |
Input | 無視(何も入力しなくてよい) |
Script | python3 ~/iot-python/led2-on-off-alternate.py |
<hostname>はラズパイの名前です。ラズパイの名前がpandaなら、「panda.local」としてください。
入力が終わったら、画面右上の「Next」をタップして、作成中のショートカットに名前をつけて、画面右上の「Done」をタップしてください。すると以下のように、作成したショートカットが表示されます。
この例では、ショートカットの名前は「Blink My LEDs」になっています。これをタップすると、ShortcutsがWiFi経由で<hostname>.localに接続(ログイン)し、python3 ~/iot-python/led2…pyというコマンドを実行します。 その結果LEDが点滅します。
ShortcutsはデフォルトでSiriと連携しています。Siriを起動して(「Hey Siri」と話しかけたり、電源ボタンを長押しするなど)、今作ったショートカットの名前を言うと、LEDが点滅します。
ここでは、ShortcutsがSSH経由でリモートマシンのプログラムを実行する機能だけを使っていますが、他にもいろいろと面白い・便利な機能があります。詳細についてはマニュアルをどうぞ。