ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

Raspberry Piで部屋の温度を定期的にTwitterに投稿

      2016/05/12

ひとりぶろぐのmoyashi (@hitoriblog) です。

Raspberry Piよいです。

約3,300円で買えるLinuxパソコンRaspberry PiをMacで使う | ひとりぶろぐ 約3,300円で買えるLinuxパソコンRaspberry PiをMacで使う | ひとりぶろぐ

僕の見立てによれば……、これはかなり流行るね!(←もう十分世界中で流行ってるし流行りすぎて買えない)

僕はモニタ無し、Arch Linux、母艦Macというかなり偏った使い方をしています。

現在TwiProwl / IMAProwlを動かしiPhoneの後方プッシュ通知支援部隊として活躍しているうちのRaspberry Piですが、もっとフィジカルコンピューティングっぽいことをしたい。

IMG 0423

Strawberry Linuxで売ってるUSB温度/湿度センサーをRaspberry Piにつないで、Twitterに定期的に自分チの室温/湿度を定期的に投稿してみようかと。(続きは[Read More]から)

USB温度・湿度計モジュール・キット – USBRH – ネット販売 USB温度・湿度計モジュール・キット - USBRH - ネット販売

気づきましたか? このセンサーの方がRaspberry Piより高いんです。

とりあえず挿してみる。

IMG 0424

dmesgを見ると認識しているようです。

[  105.174653] usb 1-1.2: new low speed USB device number 5 using dwc_otg
[  105.281214] usb 1-1.2: New USB device found, idVendor=1774, idProduct=1001
[  105.281248] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  105.281268] usb 1-1.2: Product: Hygrometer/Thermometer
[  105.281284] usb 1-1.2: Manufacturer: Strawberry Linux Co.,Ltd.
[  105.300881] generic-usb 0003:1774:1001.0002: hiddev0: USB HID v1.00 Device [Strawberry Linux Co.,Ltd. Hygrometer/Thermometer] on usb-bcm2708_usb-1.2/input0

センサーからのデータの取得には、ここにあるusbrhコマンドを利用。

USBRH on Linux USBRH on Linux

ただし、これをコンパイルしただけだと「usb_set_configuration error」と出て動かないので、以下のページにある修正を施す。

USB温湿度計 – PukiWiki USB温湿度計 - PukiWiki

パッチにしました。

usbrh.diff.zip

以下の手順でパッチを当てつつusbrhコマンドをコンパイル。

# pacman -S unzip patch gcc make
# wget http://hitoriblog.com/wp-content/uploads/2012/07/usbrh.diff_.zip
# unzip usbrh.diff_.zip
# wget http://www.dd.iij4u.or.jp/~briareos/soft/usbrh-0.05.tar.gz
# tar xvzf usbrh-0.05.tar.gz
# patch -p0 <usbrh.diff
# cd usbrh-0.05
# make
# cp usbrh /usr/bin

この辺全部Raspberry Piにsshして実機上でやっている作業です。

セルフコンパイルでやっていけてしまうところがポイント。

試しに実行してみる。

# usbrh
29.26 43.09

動いた! 湿度まで取れてしまうなんて、このセンサーなかなかやりよるです。

Twitterに自動投稿

取得した温度/湿度をTwitterに投稿してみませう。

# pacman -S ruby
# gem install twitter

以下のページを参考に、アプリケーション登録をします。

【これは流行る】Tweetbotで投稿するときに付くクライアント名をカスタマイズする方法 | ひとりぶろぐ 【これは流行る】Tweetbotで投稿するときに付くクライアント名をカスタマイズする方法 | ひとりぶろぐ

SettingsタブでAccess levelをRead and writeに設定してからDetailsタブのYour access token内、Create my access tokenボタンを押してトークンを生成。Detailsタブがこんな感じになればOK。

Access level	 Read and write 
About the application permission model
Consumer key	----------------------
Consumer secret	-------------------------------------------
Request token URL	https://api.twitter.com/oauth/request_token
Authorize URL	https://api.twitter.com/oauth/authorize
Access token URL	https://api.twitter.com/oauth/access_token
Callback URL	None
Your access token

Use the access token string as your "oauth_token" and the access token secret as your "oauth_token_secret" to sign requests with your own Twitter account. Do not share your oauth_token_secret with anyone.

Access token	--------------------------------------------------
Access token secret	----------------------------------------
Access level	Read and write

Consumer key, Consumer secret, Access token, Access token secretをメモる。

Rubyスクリプトを書く。メモっておいたConsumer key, Consumer secret, Access token, Access token secretを埋める。

テスト。

# ruby usbrh.rb

これでうまく投稿されていればひとまずOK。

最後に、crontabに2時間おきぐらいの実行をスケジュール登録。

# crontab -e

こんなのを登録。

*/120 * * * * /usr/bin/ruby /root/usbrh.rb

これで、Raspberry Piの電源が入ってる限りは2時間おきにTwitterに温度と湿度を投稿し続けます。

でっていう!

 - Linux, Raspberry Pi