温度記録: アプリ定期実行で温度を測定してアプリステータスで確認
前回のレッスンでは、アプリを1時間ごとにクラウド実行させました。
今回は、前回タイムアウトのメッセージが表示されていた「アプリステータス」の部分に、温度センサーで取得した温度を表示するアプリを作っていきます。
アプリステータスとは
アプリステータスは、クラウド実行する場合に利用できる、状態を確認するための仕組みです。
前回のレッスンで、タイムアウトの結果が表示されていた部分がアプリステータスです。

プログラムに何も書かなければこのようにタイムアウトが記録されますが、アプリステータスの部分に、好きな情報を表示させることも可能です。
ステータスを「成功」と「エラー」から選ぶことができ、アイコンと色が変わります(成功は緑、エラーはオレンジで表示されます)。

そして、文字の部分に好きな文字列を表示させることができます。
今回は「成功」のステータスで、文字の部分に温度が表示されるようにしてみましょう。
温度センサー
まずは今回使うパーツを確認し、準備しておきましょう。写真のようなパーツが温度センサーです。

温度センサーは距離センサーと同じくセンサーなので、外部の情報を検出し、信号やデータに変換する装置です。
そうしたセンサーの中で、温度を測定することができるのが温度センサーです。
アプリを作る
では、アプリを作っていきましょう。
開発者コンソールから「アプリ開発」→「新規作成」→「ブラウザアプリ(ブロックプログラム)」と進み、「obniz Board/1Yを使うテンプレート」の「Empty」を選びます。
お好きなアプリ名(ここでは「温度記録」としました)を入力し、「アプリを作成」を押してください。

前回はアプリ設定の画面は飛ばしましたが、今回は先にクラウド実行の設定をしてしまいましょう。
定期的に温度を測定したいので、「クラウド実行」の「時間で実行」にevery/10minutesと入力します。
(最初は10分という短い時間で動作確認をすることをおすすめしますが、動作確認ができたら、お好きな時間間隔で動くようにしていただいて構いません)
クラウド実行の設定ができたら、「プログラムを編集」を押して、プログラムの作成に移ります。

まずは一旦、温度センサーの値をコンソールに表示して、確認してみましょう。
温度センサーを正しいピンに接続し、以下のようなプログラムを作って、右上の実行ボタンを押します。
コンソールへの表示も慣れてきましたね。忘れずにループではさめたでしょうか。

実行すると、コンソールに温度センサーで取得した値が次々と表示されていきます。多少の誤差は存在しますが、現在の気温が確認できると思います。
ではこのプログラムを、アプリステータスに温度を表示するプログラムに作り替えていきましょう。
アプリステータスに情報を表示するには、「クラウド」カテゴリの「アプリを終了。ステータス〇〇テキストXX」ブロックを使います。

ステータスは「成功」にし、テキストの部分に温度センサーの計測温度を入れて、以下のようなプログラムにしてみましょう。

これで、10分ごとにアプリステータスに温度が表示されるようになりました。思ったより簡単だったのではないでしょうか。
一応これで完成にしてもいいのですが、もう少しだけプログラムを改良してみます。
このプログラムを、右上の実行ボタンを押してブラウザ実行すると、コンソールに次のようなエラーメッセージが表示されると思います。

クラウド実行ではないから、アプリを終了したりアプリステータスに何か表示したりできないよ、ということですね。
「アプリを終了。ステータス〇〇テキストXX」ブロックは、クラウド実行のときのみに使えるブロックなので、ブラウザ実行をするとこのようなエラーが出てしまいます。
クラウド実行では問題なく動作するのでこのままでもいいのですが、ブラウザ実行でこのエラーメッセージが出ないようにしてみましょう。
やることは簡単で、「クラウド」カテゴリの「クラウドで実行している」という条件ブロックをもしもブロックに入れ、「アプリを終了。ステータス〇〇テキストXX」ブロックをはさむだけです。


これでブラウザ実行をしても、エラーメッセージは表示されないようになりました。
これは、もしもブロックによって「もしクラウドで実行しているなら、アプリを終了し、アプリステータスに温度を記録する」というプログラムになったためです。
ブラウザ実行のときは「もしクラウドで実行しているなら」の条件に当てはまらないので、「アプリを終了。ステータス〇〇テキストXX」ブロックは実行されず、エラーにならないというわけです。
今回はブラウザ実行させるプログラムはなかったので、最初のプログラムでも問題はありませんでしたが、ブラウザ実行とクラウド実行でプログラムを使い分けたい場合は、「もしクラウドで実行しているなら」という条件を使う必要が出てきます。
クラウド実行させたい部分はもしもブロックの中に入れる、ブラウザ実行もさせたい部分はもしもブロックの外に置く、ということを頭に入れておくといいでしょう。
アプリをインストールしてアプリステータスを確認する
アプリが完成したので、デバイスにインストールしてクラウド実行させましょう。
プログラムを保存し、開発者コンソールに戻ります。
皆さんのデバイスには、前回のレッスンで作った時報のアプリがインストールされていると思います。
1つのデバイスには1つのアプリまでしかインストールできないので、今回の温度記録アプリをインストールするには、時報アプリをアンインストールする必要があります。
左側のタブから「デバイス」を選び、デバイス一覧の画面にいきます。
「アプリを開く」の横にある下三角形のボタンを押すと、1番下に「アンインストール」があるので、そこを押してください。

これで時報のアプリがアンインストールできたので、今回作った温度記録アプリをインストールします。
前回のレッスンのときのように、アプリ設定やアプリ一覧の画面からインストールしても、今のデバイス一覧の画面から「自分のアプリをインストール」でインストールしても構いません。

アプリがインストールできたら、10分経つのを待ちます。
うまくアプリがクラウド上で動作すれば、アプリステータスのところに、温度センサーで取得した値が表示されるはずです。

発展:表示する文字列を工夫する
現在のプログラムでは、アプリステータスには温度センサーが取得した値が、ただの数字として表示されます。
これではこの数字が何を表しているのか一見わかりにくいので、もう少しわかりやすくなるように、表示を工夫してみましょう。
今は「12.7」のように表示されていますが、これを「温度:12.7°」という表示にしようと思います。
温度記録アプリの、プログラム編集画面に移動してください。
好きな文字列を作るには、「文字列」カテゴリのブロックを使います。

「温度:」と「°」という文字列ブロックを用意し、計測温度のブロックと合わせて、「テキストの作成」ブロックの空欄に順番に入れていきます。
「テキストの作成」ブロックは、右端のプラスボタンを押すことで、空欄の数を増やすことができます。

これをアプリステータスに表示するテキストの部分に入れれば完成です。

プログラムを保存して、デバイス一覧の画面に戻ります。
10分後にアプリステータスに文字列が表示されるのを待ちましょう。狙い通りの表示になっていれば成功です!

このように文字列ブロックを使えば、自由に文字列を作ることができます。
今後もアプリステータスに表示する情報がわかりやすくなるように、文字列ブロックを上手に活用していきましょう。