2014年3月1日土曜日

Linux環境で室温を定期的にツイートする

以前、USB温度計を使ってMRTGに表示する設定をしました。
MRTGの画面を見れば、家の外にいても室内の気温が見れるけど…ずっとHTTPのポート開放しておくのもメンドクサイし…

せっかくなので気温を定期的にtweetしてみる。
つぶやくためのTwitter側の設定と、つぶやく用の環境の設定がそれぞれ必要。

twitterのアカウントの準備

当たり前ですがtwitterのアカウントを準備する。

そして、外部APIからつぶやけるように、アカウントの設定を行う。
1. Twitter Appsにアクセスして、Twitterのアカウントでログイン。
2. 『Create an application』画面で各項目を入力し、アプリケーションを作成する。

アプリケーション名: 任意の名称
アプリケーションの説明: 説明を10文字以上
アプリケーションのウェブサイトURL: 自分のTwitterのURLなど
アプリケーションの種類: クライアントアプリケーションを選択
標準のアクセスタイプ: Read & Writeを選択
Twitterでログインする: チェックをつける

3. 表示される「Consumer key」と「Consumer secret」をメモする。

tweetできる環境を構築

rubyでつぶやきます。
この辺を参考にしました。↓
http://ramtiga.hatenablog.jp/entry/20110409/p1

TwitterのOAuth登録として、以下を実行する。
このとき、表示されるOAuthの「token」と「token_secret」をメモする。

# gem install oauth get-twitter-oauth-token
# get-twitter-oauth-token
Consumer Key: *****
Consumer Secret: *****
...
...
...
Token: *****    # ←tokenとしてメモ
Secret: *****   # ←token_secretとしてメモ

これで環境でつぶやけるようになった。
あとはRubyでつぶやくようのソースコードを準備する。
それほど難しくないけど。
#!/usr/local/bin/ruby
require 'rubygems'
require 'twitter'

CONSUMER_KEY       = "*****"  # Twitter Appsでメモした「Consumer key」の値
CONSUMER_SECRET    = "*****"  # Twitter Appsでメモした「Consumer secret」の値
ACCESS_TOKEN        = "*****" # OAuth登録でメモした「token」の値
ACCESS_TOKEN_SECRET = "*****" # OAuth登録でメモした「token_secret」の値

Twitter.configure do |config|
  config.consumer_key       = CONSUMER_KEY
  config.consumer_secret    = CONSUMER_SECRET
  config.oauth_token        = ACCESS_TOKEN
  config.oauth_token_secret = ACCESS_TOKEN_SECRET
end

# temperコマンド実行
result = `temper`
temp = result.split(",")[1]

# 日時取得
time = Time.now.strftime("%Y-%m-%d %H:%M:%S")

MSG1 = "["
MSG2 = "] の気温 : "

MSG = MSG1 + time + MSG2 + temp

Twitter.update(MSG)

これでつぶやけるようになりました。

cronに登録

あとはこのスクリプトを定期的に実行されるように設定する。
Linux環境なのでcronに登録しました。

# cat /etc/cron.d/tweetTemper
1,21,41 * * * * root /usr/local/bin/tweetTemper.rb

毎時1,21,41分につぶやくように設定。(0,20,40にすると、MRTGのupdateと重複してしまうため、わざと)

0 件のコメント:

コメントを投稿