raspberry piを使って充実したアクアリウムライフを目指す

## 前書き
魚を飼っている人なら、
「家に置いてある水槽が今どんな状態なのか気になる」
ってことあると思います。

熱帯魚は結構敏感な生き物で、
夏場エアコンつけ忘れる -> 水温上がりすぎて煮魚になる
なんてことが稀によくあります。

私は自宅に水槽を持っているのですが、特に夏場や冬場だと
・魚たちは今どうしてるかな
・エアコン不調で、水温おかしくなったりしてないかな
と、思うことがあります。

で、こういう不安をエンジニアリングで解決するのが真の漢(エンジニア)ではないか、
何か自分で解決できやしないかね？と思い立ったのが始まりです。

raspberry piを選んだ理由は、Iot = raspberry piみたいなイメージが前からあって、
とりあえずraspberry piあればなんとかなるだろ！っていう軽い気持ちから。


## やること
今回やるのは下記2点です。
・家にいなくても、お魚さんの状態を見たい！
・何かしらの原因で水温が設定温度から急激に上昇した場合に対処したい！

## 用意するもの
私が購入したものを記載しておきます。
AmazonのURLも貼っておきますが、
同じようなものであれば別のもので代用しても問題ないと思います！

・raspberry pi 本体
https://www.amazon.co.jp/gp/product/B01N216X19

・水温計
https://www.amazon.co.jp/gp/product/B0082MYD06

・水温計とraspberry piを接続するための細々したもの
https://www.amazon.co.jp/gp/product/B06Y48V9DL
https://www.amazon.co.jp/gp/product/B00DSKCS68

・USB扇風機
100均で購入

・カメラ
https://www.amazon.co.jp/gp/product/B06XNW8TMF

## 実践
### 1.raspberry piの立ち上げ
raspberry piの初期設定ですが、探せばいっぱい記事が出てくると思うんで説明は省きます。

特に↑でURL貼ったスターターキットについてはOSインストール済みのメモリーカードがついてくるので、
・SDカードをraspberry pi本体に入れて電源繋いで起動
・別のPCからSSHで接続して必要なモジュール入れていく
という感じで、非常に簡単に初期設定ができます。

当たり前ですが一番最初の最初はwi-fiすら動かないので、
LANケーブルさして繋げてあげる必要がありますのでご注意ください。

一応、参考にしたURLを貼っておきます。
[1.Raspberry Pi 2B/3B 準備]
http://store.techshare.jp/html/page97.html

### 2.水温計の取り付けとデータ取得
水温計の取り付けはこちらのページを参考にしました。
[adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing.pdf]
https://cdn-learn.adafruit.com/downloads/pdf/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing.pdf
取り付けについては、上記と全く同じでなくとも大丈夫なようです。

必要なモジュール類のインストールについてはこちらを参考にしました。
[Raspberry Piと1-Wireステンレス防水温度センサ(DS18B20)を使って水温を計る]
http://denshikousaku.net/raspberry-pi-and-ds18b20

私の場合はなかったのですが、ものによっては測定誤差がかなり大きい製品もあるそうです。
ご利用になる際にはその辺りも注意して、実際の温度と測定値の差異をちゃんと見てあげた方が良さそうです。

### 3.USB扇風機の取り付けとON/OFF制御
扇風機の取り付けに関しては、説明不要！USBぶっ挿せばOKです。

問題はON/OFFの制御。
デフォルトのママではできませんのでこれもモジュール入れてあげる必要があります。
例によって下記を参考にしました。
[Raspberry PiにUSB扇風機を接続してUSBポートをON/OFF制御する方法]
http://kinokotimes.com/2017/03/07/usb-control-method-by-raspberry-pi/

記事内にもあるのですが、うっかりLAN用のポートをOFFにしてしまうとSSHで接続できなくなりますのでご注意ください。

### 4.カメラの取り付けと映像の送信
USBポート接続のカメラでもよかったのですが、なんとなくこちらを選びました。
例によって取り付けはこちらを参考に。
[Raspberry Piカメラのセットアップ方法]
https://www.rs-online.com/designspark/raspberry-pi-camera

映像の受け取りは、とりあえずmacで受け取るべく、mac側にmplayerを入れてあげました。

注意点としては、初期設定だとカメラの上下が逆です。
なので、カメラ起動時の設定変えてあげた方が良いかと思います。
raspberry pi側でカメラ起動する際に、以下のようにオプション付けてあげればできます。

```
raspivid -t 999999 -vf -hf -o - | nc [insert the IP address of the client] 5001 
```

### 5.水温チェックの仕組みを作る
やりたいこととしては
・水温がN度より上昇したら、USB扇風機をONにする
です。
以下のようなプログラムを書きました。

``` python:water.py
#coding:utf-8
#!/usr/bin/env python

import commands

# 水温計で取得したデータが書き込まれるファイルを見に行きます
f = '/sys/bus/w1/devices/28-0317319e82ff/w1_slave'
fp = open(f, 'r')
str = fp.readlines()[1]
fp.close

# ファイルからこんな文字列が取れる -> "2b 01 4b 46 7f ff 0c 10 b2 t=18687"
# t=xxx の部分が、現在の温度です
templeture = str.split("t=")[1]

# 取得した温度がN度以上だったら、USBをONに、そうでなければOFFにします
# 1でON、0でOFFになります
flag = "1" if int(templeture) > 26000 else "0"
command = "sudo hub-ctrl -h 0 -P 2 -p " + flag

commands.getoutput(command)
```

こいつをcron設定に追加してあげればOKです。

## 出来上がったものがこちら

出来上がったのがこちら
![IMG_4627.JPG](https://qiita-image-store.s3.amazonaws.com/0/12037/1bad150f-7217-8f2c-d31b-acbf6afb44f3.jpeg)

半端ない手作り感。
実際に取り付けてるところは、、、これからってことで。。。

とりあえず、今回はここまで。
本当に最低限必要なものを取り付けたって感じですね。
すごい何かを期待してくださった方には、申し訳ないです。。。

## まとめ
### raspberry piはとても簡単、IoT入門としてはちょうどいい
僕みたいな初心者野郎でも割と簡単に、楽しく、思ってたものが作れました。
簡単そうだけど、多少めんどくさそうって人は先にAmazonで買っちゃうのをお勧めします。
買ってしまえば後には引けない理論で。

### raspberry piのノウハウは世の中に溢れている
わからないことがあれば、調べればすぐやり方が出てきます。
もうちょっと難しいことやりたいって方は、raspberry piじゃなくてArduinoでやってみるとかもいいかと思います。

### この後やりたいこと
チェックして動かすことはできるようになりましたが、今だとカメラの映像をmacでしか受けられません。
せっかくここまで作ったので、定期的に写真撮ってLINEで自分に送るとかして、
自宅で使用できるレベルまでは持っていけるようにしたいです。難易度もそんなに高くないだろうし。


以上、ここまで読んでくださってありがとうございましたm(_ _)m