# Raspberry Pi と Hubot で観葉植物の水やりを自動化する

*2014-08-02*

> Raspberry Pi と Hubot を使って、Slack から観葉植物の水やりを実行できる装置を作りました。

<iframe src="//player.vimeo.com/video/102211439?title=0&amp;byline=0&amp;badge=0" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen class="vimeo"></iframe>

[Raspberry PI] と [Hubot] を使って、[Slack] から観葉植物の水やりを実行できる装置を作りました。

<!--more-->

## 材料

![](1.jpg)

- [Raspberry Pi Type A 256MB]
- [GPIO 拡張ボード]
- [ジャンパワイヤ]
- [スピーカーケーブル]
- [エポキシ接着剤]
- [灯油缶]
- [アルミ線]
- [S8050 トランジスタ (詰合せで購入)][トランジスタ詰合せ]
- [灯油ポンプ]
- [チューブジョイント]
- [シリコンチューブ] \(4mm x 6mm)
- コルク栓

## 回路

![](2.jpg)

[灯油ポンプ] に直接はんだ付けして、+- 極を[スピーカーケーブル]でブレッドボードに引っ張ってきて、Raspberry Pi から 5V 電源を供給します。

S8050 トランジスタにはそれぞれ、

- E (エミッター): Raspberry Pi GND
- B (ベース): Raspberry Pi GPIO 0
- C (コレクター): 灯油ポンプの　- 極

が接続されています。

![](map.png)

## パイプの分配

![](3.jpg)

植物への水の供給は、[シリコンチューブ]から行います。

コルク栓をカッターナイフで、[灯油ポンプ]のパイプと丁度合う様な大きさに加工し、中央に穴を開け、[チューブジョイント]を[エポキシ接着剤]で固定します。

![](4.jpg)

## Hubot で Slack と連携

チャット応答には [Hubot] を使います。

[Raspberry PI] がプライベートネットワークにあり、Webhook が設定できないため、XMPP 経由で [Slack] と連携します。

詳しいセットアップ方法は、[前のエントリー]に書いています。

npm ライブラリの [pi-gpio] を使って、メッセージに応答し、GPIO の信号を操作します。



以下の様なやりとりで、水やりを指示できます。

![](chat.png)

全てのソースコードは [ngs/watering-pi] で管理しています。

## 完全自動化など

もう一匹、[Heroku] で動かしている [Hubot] を Room に常駐させ、例えば [hubot-cron] を使うことによって、定時に水やりを実行する様に設定できます。

```
cronbot new job 0 10 * * * say wpi water
```

それだけだと、世話している感がないので、[Yo] と連動して水やりを指示する様にする予定です。

![](yo.png)

<iframe src="//player.vimeo.com/video/102190678?title=0&amp;byline=0&amp;badge=0" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen class="vimeo"></iframe>

<script> window.setupAmazonWidget('使用素材') </script>
<script src='https://wms-fe.amazon-adsystem.com/20070822/JP/js/AmazonWidgets.js'></script>

[Raspberry Pi Type A 256MB]: http://www.amazon.co.jp/gp/product/B00CYA6UKI/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00CYA6UKI&linkCode=as2&tag=atsushnagased-22
[GPIO 拡張ボード]: http://www.amazon.co.jp/gp/product/B00FOHXC9K/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00FOHXC9K&linkCode=as2&tag=atsushnagased-22
[エポキシ接着剤]: http://www.amazon.co.jp/gp/product/B003F9VWXW/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B003F9VWXW&linkCode=as2&tag=atsushnagased-22
[灯油缶]: http://www.amazon.co.jp/gp/product/B00A46C2S8/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00A46C2S8&linkCode=as2&tag=atsushnagased-22
[アルミ線]: http://www.amazon.co.jp/gp/product/B003DSCENM/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B003DSCENM&linkCode=as2&tag=atsushnagased-22"
[トランジスタ詰合せ]: http://www.amazon.co.jp/gp/product/B00DEY3VKU/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00DEY3VKU&linkCode=as2&tag=atsushnagased-22
[灯油ポンプ]: http://www.amazon.co.jp/gp/product/B005VJIX3G/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B005VJIX3G&linkCode=as2&tag=atsushnagased-22
[チューブジョイント]: http://www.amazon.co.jp/gp/product/B000EVL82O/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B000EVL82O&linkCode=as2&tag=atsushnagased-22
[シリコンチューブ]: http://www.amazon.co.jp/gp/product/B00FGO7U94/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00FGO7U94&linkCode=as2&tag=atsushnagased-22
[ジャンパワイヤ]: http://www.amazon.co.jp/gp/product/B0079BW7O0/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00F31SQPW&linkCode=as2&tag=atsushnagased-22
[スピーカーケーブル]: http://www.amazon.co.jp/gp/product/B00288EM9C/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00288EM9C&linkCode=as2&tag=atsushnagased-22
[Hubot]: https://hubot.github.com/
[Heroku]: https://www.heroku.com/
[Raspberry PI]: http://www.raspberrypi.org/
[hubot-slack]: https://github.com/tinyspeck/hubot-slack
[hubot-gtalk]: https://github.com/atmos/hubot-gtalk/
[hubot-xmpp]: https://github.com/markstory/hubot-xmpp
[Slack]: https://slack.com/
[前のエントリー]: https://ja.ngs.io/2014/08/01/slack-hubot-xmpp/
[pi-gpio]: https://github.com/rakeshpai/pi-gpio
[hubot-cron]: https://github.com/miyagawa/hubot-cron
[Yo]: http://justyo.co/
[ngs/watering-pi]: https://github.com/ngs/watering-pi


