IMG_6609

第4回ではGPIOポートにセンサーデバイスを接続して、温度や湿度、気圧の測定を行いました。第5回ではスマートフォン側からの操作で、Raspberry Piをコントロールします。スマートフォン上のボタンを押すと、Raspberry Piのシャットダウンを行うシステムを作ります。

Blynkのインストールやセットアップ手順については第1回第4回までの記事で解説しています。

Raspberry Piには電源ボタンが無いため、電源を切るときはシャットダウンコマンドを実行しなくてはなりません。今回はBlynkを使い、スマートフォン上のボタンを押すとシャットダウンするシステムを作りますが、一つ注意しなければいけないことがあります。うっかりボタンに触れて、シャットダウンしてしまう恐れがあります。

そこで今回は、安全装置つきのシャットダウンボタンを作ります。安全装置には「スライダー」ウィジットを使用します。スライダーを一番右までスライドさせないと、ボタンを押してもシャットダウンが実行されないようにします。

バーチャルポートは次のように割り当てることにします。
  • V10 … 安全装置(スライダー)
  • V11 … シャットダウンボタン

ファイル名:BLYNK_WRITE_V10.sh
#!/bin/sh
SLIDER_FILE=/tmp/V10
echo $1 > $SLIDER_FILE

サンプルプログラム BLYNK_WRITE_V10.sh  はスライダーが動くと(値が変更されると)実行されるプログラムです。スライダーの値を受け取り、それをファイルに保存しています。

ファイル名:BLYNK_WRITE_V11.sh
#!/bin/sh
SLIDER_FILE=/tmp/V10
if [ "$1" = "1" ] ; then
  if [ -e $SLIDER_FILE ] ; then
    num=`cat $SLIDER_FILE`
    if [ $num -eq 255 ] ; then
      rm $SLIDER_FILE
      shutdown -h now
    fi
  fi
fi

サンプルプログラム BLYNK_WRITE_V11.sh  はボタンが押されると実行されるプログラムです。ボタンが押された状態(値=1)の場合、スライダーの値が入っているファイルを読み込み、値が 255 だったら、シャットダウンコマンドを実行します。

プログラムの準備ができたら、次はアプリ側にウィジットを配置していきましょう。

はじめに「Slider S」ウィジットを追加します。SとLの違いは大きさですので、どちらでもかまいません。
IMG_6602

ピンは「Virtual」の「V10」を選択します。横の数字は最小値と最大値で、今回は一番右に動かした場合に255になるようにしたいので、このままにします。SEND VALUES ON RERELASE ONLYという項目がありますが、これはONにすると指を離したとき、つまり値が最終決定されたときだけ呼び出されます。OFFにするとスライダーを動かしている最中も頻繁に呼び出されますが、今回は最終決定した値だけが取れればよいのでONのままにします。
IMG_6603

次に「Button」ウィジットを追加します。
IMG_6604

ピンは「Virtual」の「V11」を選択します。
IMG_6607

これで準備が整いました。Blynkを起動していない場合は、起動します。
$ cd ~/blynk
$ sudo ./blynk --token=自分のAUTH TOKEN

アプリの右上の三角ボタンをタップしてRaspberry Piに接続します。マークが四角に変わったら接続完了です。
IMG_6607B

まずはスライダーが左にある状態で、シャットダウンボタンを押してみてください。何も起こらないはずです。
IMG_6608

それでは今度はスライダーを一番右まで動かしてから、シャットダウンボタンを押してみてください。即座にシャットダウンが実行されます。
IMG_6609

シャットダウンしてもスマートフォンのBlynkの画面上ではスライダーは自動的に戻らないため、次回操作する場合は、一旦スライダーの位置を戻してから操作してください。

今回はシャットダウンのコマンド「shutdown -h now」を実行させましたが、簡単なシェルスクリプトになっていますので、ここに任意のコマンドを書くだけで様々な動作をさせることができます。ぜひいろいろと実験してみてください。


さて、次回はBlynkを使って、リモコンの赤外線信号で家電をコントロールする実験を行います。しかし夏場のエアコンを使うシーズンが過ぎてしまったため、内容は変更になる可能性があります。


連載 IoTサービス「Blynk」を使ってRaspberry Piをスマホからコントロールしよう