Raspberry Piで温度・湿度・気圧を定期的にツイートするbotを作った

f:id:karaage:20160502163012j:plain:w640

2017/08/21 .twitter_configへの注記を追加

きっかけ

 ある日、妻に「あの、外にあるRaspberry Piってやつ、温度・湿度記録しているなら自動でツイートしてくれるようにできないの?」と相談を受けました。知らない人のために説明すると、外にあるRaspberry Piというのは、家庭菜園の栽培記録のために作った「電波ガーデニング」のことです。詳しくは下記記事参照ください。

 もちろん、忙しい私はビシッと男らしくこう言ってやりましたよ

「はっ!拝承っ!!直ちに機能追加いたしますぅぅ!!有り難き幸せ!!」

 てね☆

温度・湿度・気圧を定期的にツイートする方法

 以下のようなツイートを一定期間毎に繰り返すbotをつくります。

 もうこういうネタは、何番煎じかもわかりませんが、やってみると色々発見もあったので記録しておきます。これ以降は宇宙語が続くので、興味ある方のみご覧ください。

基本セットアップ方法

 まずは、下記記事を参照に必要なものを購入して、ハードウェアとソフトウェアのセットアップを実施ください。

 次に、Twitterを使用するために以下のコマンドでtwythonというライブラリとOAuthを使った認証に必要なrequests_oauthlibというライブラリをインストールします。

$ sudo pip install twython
$ sudo pip install requests_oauthlib

 後は、以下サイトでtwitterアプリを登録して、Consumer keyとAccess tokenをゲットしましょう。携帯電話番号を登録しないといけないのがちょっとハードル高いですね。

ソフト使い方(ツイートする方法)

 ソフトは以下の「電波ガーデニング」のリポジトリにtweet_sensor_data.pyという名前で保存しました。以下です。

 まず、リポジトリを以下コマンドでclone(コピー)します。

$ cd
$ git clone https://github.com/karaage0703/denpa-gardening.git

 次にdenp-gardeningの下の.twitter_configというファイルに、自分のtwitterのKEYを書き込んで下さい。

 ちなみに.twitter_configのような、頭文字に.がつくようなファイルは隠しファイルになり普通は見えません。ターミナルでls -a等すると確認できるようになりますので注意して下さい。ファイルは、以下コマンドで編集できます(viエディタで編集する場合)。

$ vi ~/denpa-gardening/.twitter_config

 後は、以下実行すれば温度、湿度、気圧がツイートされます。

$ python ~/denpa-gardening/tweet_sensor_data.py

 一応、温度、湿度に応じて微妙にセリフが変わるようになっています。

 ただ、このままだとツイートしたいときにわざわざ自分でコマンドを毎回打たないといけないので面倒です。cronを使って、1時間毎にツイートするようにしましょう。まず以下実行して、crontabを編集します。

$ crontab -e

 以下のような1行を加えれば、毎時00分にツイートされるようになります。

00 * * * * python ./denpa-gardening/tweet_sensor_data.py

 ちなみに今回のプログラム作ることで、自分が以下のような基礎的なことを知らなかったことが白日のもとに晒されました。

  • pythonのプログラム名にはハイフン(-)を使うことは推奨されていない
  • 自作ライブラリのimportの仕方
  • .pycというファイルはライブラリimportしたときに生成されるファイル
  • プログラムの絶対パスの取得の方法

 ダメダメですね

おまけ機能

 温度、湿度だけしゃべるのも面白くないので、以下で作ったbotのソフトを使い回ししてたまに会話してくれるbotにしてみました。

 なかなか電波な感じですね。

まとめ

 というわけで今更ながらよくあるbotを作ってしまいました。妻の評判は上々です。やったね!そしてこれで「電波ガーデニング」ようやくIoTになりましたね。今後の改良案としては以下があって、頑張ればそれぞれ1時間くらいでできる気はするのですが、どこまでやるかは迷い中です。誰か気が向いたら作って下さい(人任せ)。

  • 家庭菜園の写真をツイート
  • 温度・湿度の1日毎のグラフをツイート
  • ツイートを学習して会話を覚える