モノづくりエンジニアのための情報ポータルサイト|エンジニアピット

CAREER LAB簡単「IoT」体験!Raspberry Piで「室温つぶやきボックス」を作ってみた!(後編)

簡単「IoT」体験!
Raspberry Piで「室温つぶやきボックス」
を作ってみた!(後編)
DATE2015/04/28
前編では、「1wire」によるデジタル温度センサを検証し、実際に室温を測定し表示するプログラミングまで挑戦してみました。

後編では、自動的に温度ログを取得し、設定した温度になったらツイートできるようにしてみたいと思います!
簡単「IoT」体験!Raspberry Piで「室温つぶやきボックス」を作ってみた!(後編)

Raspberry Piからツイートしてみる!

まずは、TwitterのツイートをRaspberry Pi側からコントロールできるようにしてみましょう! 最も簡単な方法として、コンソール画面から操作できる「TTYtter」というツールを利用するのが良いでしょう。

Raspberry Piのコンソール画面から、「TTYtter」をインストールします。

$ sudo apt-get install ttytter

そして、「ttytter」を実行します。

$ ttytter -ssl

実行後に文字列がズラッと表示されてストップするので、エンターキーを押して以下のようなリンクが表示されるのを確認してください。

https://api.twitter.com/oauth/authorize************

ここに表示されたリンクを、パソコンのブラウザから開いて「連携認証」を承認します。
「連携認証」を承認します
すると、「PIN番号」が表示されるのでメモしておきましょう。

もう一度、Raspberry Piのコンソール画面に戻り、「Enter PIN>」の箇所へ先ほどメモした「PIN番号」を入力して実行すれば準備は完了です!

5. A PIN will appear. Enter it below.
Enter PIN> 84****

これで、Raspberry Piのコンソール画面からツイートを行うことができるようになりました。ツイートするには、以下のようなコマンドを実行すればOK!

$ ttytter -ssl -status="つぶやきテスト!"

実行後に、ツイートを確認してみると、見事に成功しているのが分かります!
ツイートを確認してみると、見事に成功!
この方法を応用すれば、デジタル温度センサで取得した室温をツイートすることも可能になるわけです。

自動的に室温をツイートしてみよう!

前編同様に、シェルスクリプトを使ったプログラミングに挑戦してみましょう!前編では、部屋の室温を表示するところまで行いましたが、今度は「while文」を利用して一定の間隔で表示するようにしてみます。

1 #!/bin/sh
2
3 while :
4 do
5  text=`cat /sys/bus/w1/devices/28-00000647dd91/w1_slave`
6  temp_value=`echo $text | awk '{print substr($0, 70)}'`
7  echo "現在の温度は、`expr $temp_value / 1000`℃です"
8  sleep 1
9  done

前編で作ったコードに、「while文」と「sleep文」を追加しただけですが、これで1秒間隔おきに室温を更新しながら表示してくれます。(※「CTRL+C」で終了します)

すでにお気づきの方もいると思いますが、「echo」で表示している部分を「ttytter」のコマンドに置き換えれば、簡単に室温をツイートすることが可能ですね!

3 while :
4 do
5  text=`cat /sys/bus/w1/devices/28-00000647dd91/w1_slave`
6  temp_value=`echo $text | awk '{print substr($0, 70)}'`
7
8  tweet="現在の温度は、`expr $temp_value / 1000`℃です"
9  ttytter -ssl -status=$tweet
10
11  sleep 30
12  done

上記の例では、「tweet」変数に室温メッセージを格納し、TTYtterコマンドでツイートしています。

これを実行すると、30秒間隔で室温をツイートできているのが確認できます。
TTYtterコマンドでツイートしています

設定した温度を超えたらツイートする!

それでは最終段階として、先ほどのスクリプトに「条件判定」を追加し、設定した室温かそれを超えた場合のみツイートするように改造してみましょう!

条件判定に関しては「if文」を使い、ひとまず「35℃」以上になったらツイートするようにしてみます。

1 if [ $temp_value -ge 35000 ]; then
2  ttytter -ssl -status=$tweet
3 fi

「temp_value」変数には、生の室温データが入っているので、コレを比較することで判定するようにしています。

最終的なソースコードは、以下のとおり!

1 #!/bin/sh
2
3 while :
4 do
5 text=`cat /sys/bus/w1/devices/28-00000647dd91/w1_slave`
6 temp_value=`echo $text | awk '{print substr($0, 70)}'`
7 tweet="【注意】室内温度が、`expr $temp_value / 1000`℃になっています!"
8 if [ $temp_value -ge 35000 ]; then
9 ttytter -ssl -status=$tweet
10 fi
11  sleep 900
12  done

上記スクリプトを実行することで、15分毎に室温を取得するようになり、35℃以上になった場合には自動でツイートをしてくれるようになります。
35℃以上になった場合には自動でツイート
あとは、Raspberry Piとブレッドボードを簡易ケースなどに入れて、部屋の隅っこにでも常駐させておけば「室温つぶやきボックス」の完成です!
「室温つぶやきボックス」の完成です!

まとめ

前編・後編にわたり、Raspberry Piで簡単な「IoT」に触れてみましたが、いかがだったでしょうか?

応用として、スイッチを使った手動ツイートや、条件をもっと増やしてバラエティに富んだツイートを実装しても楽しいでしょう。今回検証したように、さまざまなモノがインターネットに繋がることで、その可能性はどんどん広がっていきます。

ぜひ、みなさんもRaspberry Piで自分だけの「IoT」作品にトライしてみてください!

エンジニアピット キャリアラボ一覧へ戻る