こんな感じで一時間(任意の時間)に一回、Rapberry PiのCPU温度をツイートさせる。
2015-03-11_12:00:03現在 CPU温度は 31.5 ℃です。
— ysdyt_raspi (@ysdyt_raspi) 2015, 3月 11
これが何の役に立つかだって?自己満足だよ!強いて言うなら、ラズパイの定期生存確認が出来る。
必要なパッケージをインストールする
1 2 3 4 |
|
TwitterのAPI情報を取得
Twitterのアカウントを作成し、http://apps.twitter.com/ にアクセス。
「Create New App」をクリックしてアプリケーション名や説明を入力し、登録後の画面で「Access level」を「Read and Write」に変更。
twythonプログラムに与える権限の認証情報は「Keys and Access Tokens」タブにある。
「Create my access token」をクリックし、「API Key」「API Secret」「Access Token」「Access Token Secret」を取得。
twythonを使ってツイートするプログラムの作成
pythonスクリプトを新規作成し、下記を書き込む。
1
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
作成したファイルに実行権限を与える。
1
|
|
その後、一度実行してみてtwitterに投稿されるかを確認してみる。
1
|
|
twitterのタイムライン上で温度の投稿が確認できれば、次はこれを定期実行するようにする。
raspi_bot.pyを定期実行させる
“cron”にてraspi_bot.pyを自動的に定期実行させる。cronについてはこちら
1
|
|
これで新たに開くウィンドウの下部に、次の一文を書き込み保存。
1
|
|
この一文の意味はこちらを参照して欲しいが、
・00 * * * *
-> 一時間に一回、指示したジョブを自動実行
・python /home/pi/raspi_bot.py
-> 自動実行させるジョブ
を表している。定期実行させる間隔は任意に指定できる。
ひとまずこれで完了。時間を置いて様子を見てみると、指定した時間間隔で自動的にツイートされているハズ。
しかしここで問題が、、、
1時間に一回タイムラインに流れるはずのツイートだが、投稿されていない時間があることを発見…
原因を調べるべく、手動でraspi_bot.pyを何度が実行していたところ、下記のようなエラーがたまに出ることがわかった。
1
|
|
エラー曰く、重複した投稿(過去に全く同じ内容のツイートをした場合)はツイート出来ないようになっているらしい。知らなかった…どうやら同じCPU温度を取得しているツイートが弾かれていた模様。
現在時間を取得する(タイムスタンプを取得)
これを回避するべく、タイムスタンプ(現在時刻)を入れることにする。これでツイート内容の重複を回避できる。
例: 「2015-03-11_12:00:03」という部分の情報
2015-03-11_12:00:03現在、CPU温度は 31.5 ℃です。
— ysdyt_raspi (@ysdyt_raspi) 2015, 3月 11
こちらを参考にしながら上記のraspi_bot.py
にタイムスタンプを取得するコードを追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
これで、タイムスタンプが追加されツイートの内容重複が回避される。
自動スリープを解除する
またまた動作を観察していると、どこかの段階から全くツイートされなくなっていた…
調べてみるとラズパイはデフォルトでは自動でスリープする設定になっているらしい。
こちらを参考にして自動スリープを解除した。これでようやく完成。
[訂正] 上記の自動スリープの話はただ単にモニター出力が自動でスリープするという話だった。 ラズパイを起動し続けると(具体的には2日半くらい)自動でシャットダウン?する減少はまだ解決できていない…熱暴走が原因か?