Blueberry pi 
@kanayannet
今日話すこと 
1.Blueberry piって? 
2.何故やろうと思ったか? 
3.最適温度 
4.仕様 
5.実装方法 
6.まとめ
Blueberry pi って?
raspberry pi
raspberry pi
Blueberry
Blueberry pi って? 
raspberry pi と 
インターネット技術を 
ブルーベリー栽培に活かす。
何故やろうと思ったか? 
前回のLTで… 
記録のつけ忘れや水のやり忘れ を 
通知したい!
この季節は水やり必須!! 
7~9月の最高気温
何故やろうと思ったか? 
でも、雨の日 や 気温の低い日は 
それほど水やりの必要は無い…
何故やろうと思ったか? 
少なくとも…温度を検知する必要がある。
何故やろうと思ったか? 
出来れば大きさがコンパクトで 
開発が慣れてる環境(Linux)で
何故やろうと思ったか? 
¥ 4,479
何故やろうと思ったか? 
Raspbian is a free operating system based on Debian optimized 
for the Raspberry Pi hardware. 
ラズベリーパイのハードウェアに最適化された 
Debian base の オペレーティングシステム
何故やろうと思ったか? 
これだ!
最適温度
最適温度 
水やりには適さない
最適温度 
水やりには適さない 
植物は、日光を浴びて光合成を行う。 
光合成の原料になるのは水。 
また、温度調節のために、葉から水分を 
蒸散させる。
最適温度 
水やりには適さない 
炎天下で水を与えても蒸れてしまう。 
(野菜をゆがいているのと同じ状態) 
* 根腐れして枯れてしまう…orz
最適温度 
水やりには適さない 
なので、朝一番に水やりが基本。
そろそろヤバい!
WEBのネタ全然ない!
そろそろ出てきますよ
仕様 
1. 時間帯は朝(6:30) 
2. 気温が20度を超えていて 
3. 湿度が40%未満なら 
4. 検知メールを送る
実装方法 
まずはOSから 
1. RPi-sd card builder をMacに入れる 
2. 1 のツールを使い SDカード に 
OSイメージを書き出す
実装方法 
電源入れるまで 
1. SDカードを Raspberry pi に入れる 
2. ディスプレイはHDMI で出力 
3. キーボードは市販のもので動く(USB) 
4. USB電源を繋ぐと起動が始まる
実装方法 
電源入れるまで
実装方法 
初期起動 
1. change_timezone -> asia tokyo 
2. change_locale -> ja_JP.UTF-8 
3. configure_keyboard -> japanese
実装方法 
初期起動 
1. 再起動が始まる 
2. ID: pi 
3. pass: raspberry 
4. OS起動
実装方法 
温度を検知する 
1. strawberry-linux で購入(写真) 
2. USB接続 
3. ハードウェアを認識(dmesgで確認) 
4. driver をインストール(githubで公開)
実装方法 
温度を検知する 
1. コマンド実行(usbrh) 
2. 温度・湿度確認
実装方法 
無線LAN接続にする 
1. IEEE802.11n/g/b 規格の無線LAN 
2. USB で接続可能 なものを購入
実装方法 
無線LAN接続にする 
sudo vi /etc/network/interfaces 
auto lo 
iface lo inet loopback 
iface eth0 inet dhcp 
! 
allow-hotplug wlan0 
iface wlan0 inet dhcp 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 
iface default inet dhcp
実装方法 
無線LAN接続にする 
wpa_passphrase SSID名 パスフレーズ >> /etc/wpa_supplicant/ 
wpa_supplicant.conf 
! 
sudo reboot 
! 
ifconfig でIPが割り振られていれば成功
実装方法 
メールを流す 
1. Ruby を動かす(1.9.3 install済) 
2. gem install actionmailer
実装方法 
メールを流す 
require 'action_mailer' 
! 
ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
address: ‘SMTP server', 
port: 587, 
domain: ‘SMTP server domain', 
user_name: 'アカウント名', 
password: 'パスワード', 
authentication: ‘plain', 
enable_starttls_auto: true 
} 
! 
class TempSensor < ActionMailer::Base 
def sendmail(body) 
mail( 
to: '送信したいアドレス', 
from: '送信元アドレス', 
subject: '水やりアラーム', 
body: body.to_s 
) 
end 
def get_temp_humid() 
sensor_value = `usbrh` 
(temp,humid) = sensor_value.chomp.split(/ /) 
return {temp: temp.to_i,humid: humid.to_i} 
end 
end
実装方法 
メールを流す 
temp_sensor = TempSensor.new() 
ret = temp_sensor.get_temp_humid() 
if ret[:temp] >= 20 && ret[:humid] <= 40 
temp_sensor.sendmail(“現在の気温:#{ret[:temp]}n現在の温度:#{ret[:humid]}“).deliver 
end 
1. 毎日7時に起動する 
2. バッチ処理に仕掛ける(cron) 
3. 0 7 * * * プログラム名
実装方法 
完成画像
実装方法 
課題 
1. USB電源ケーブルが届くところでない 
と意味をなさない(電池切れる) 
2. 出来れば土植の植物の近くに置きたい 
(現在はベランダに温度センサーだけ 
出す) 
3. 防水仕様どうすっか… 
4. 出先で画像(様子)も見たい…
実装方法 
他の事例 
1. カメラを付けてペットの様子を出先で観察 
2. munin で温度をグラフ化
実装方法 
まとめ 
1. raspbian はLinux に慣れている人ならや 
りやすい。 
2. 外部(スマホ)から web api を使って連携さ 
せたくなる 
3. CPU や DISK IO を使うような処理は重く 
なりやすい。 
* rbenv で ruby を install すると2時間く 
らいかかります。
ご清聴ありがとうございました。

Blueberrypi