Raspberry Pi2を使ってリモートで餌やりをする
2015/09/29
ブログからガレージの金魚にエサをやる
以前からやろうやろうと先延ばしにしてたエサやりのシステムが完成しました!
プラ船のページで完成品が見れます。
是非一度エサやりにきてください
以下にハウツーを残します
ハードウェア
材料
- ホームセンターで売られてる端材の詰め合わせ
- 100均の小さいタッパー
- ペットボトル
- トイレットペーパーの芯
- サーボモーター SG90

モーターにタッパーを取り付けて穴あけ
モーターが回ったときエサが飛び散るのでペットボトルを切ってカバーにします
配線やらソフトウェアの設定は前の記事を参考にしてください
ソフトウェア
続いてソフトウェア
無制限にボコボコとエサをやられたら水があっという間にダメになるので制限をかけます
仕様
- 最後にエサをやった時刻から3時間経過していればエサがやれる
- エサをやれる時刻は10時から20時までの間
- 毎日10時に一度自動でエサをやる
Raspberry Pi2側
まずエサをやった時刻をさくらVPSのDBに保存します
// サクラVPS側
<?php
if (!array_key_exists('tbl', $_POST)) {
exit;
}
require_once('./db_conf.php');
$pdo = getPDO();
$pdo->prepare('insert feed_log value()')->execute();
$pdo = null;
?>
ガレージのRaspberry Pi2からさくらVPSへ送信
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'uri'
require 'net/http'
def http_request(method, uri, query_hash={})
query = query_hash.map{|k, v| "#{k}=#{v}"}.join('&') #ハッシュをオプションの書式に変換
query_escaped = URI.escape(query)
uri_parsed = URI.parse(uri)
http = Net::HTTP.new(uri_parsed.host)
case method.downcase!
when 'get'
return http.get(uri_parsed.path + '?' + query_escaped).body
when 'post'
return http.post(uri_parsed.path, query_escaped).body
end
end
#POSTで送るだけ
http_request('POST', '送信先URL', {:tbl=> 'g'})
サーボブラスターを使ってエサの入ったタッパーを回転させる
#!/bin/sh echo 3=100% > /dev/servoblaster sleep 1 echo 3=20% > /dev/servoblaster #さくらVPSへログ送信 /usr/local/bin/send-feed-log
Sangoのサブスクライバに追記
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'rubygems'
require 'mqtt'
MQTTHOST = "std1.mqtt.shiguredo.jp"
USERNAME = "ユーザー名"
PASSWORD = "パスワード"
# MQTTに接続するためのクライアントを作成します
client = MQTT::Client.new(
MQTTHOST,
:username => USERNAME,
:password => PASSWORD,
:keep_alive => 60
)
# 接続します
client.connect do |c|
# Subscribeします
TOPIC = "ユーザー名/#"
c.get(TOPIC) do |topic, message|
#
# 他省略
#
#feed ←エサ用トピック追加
if topic == "ユーザー名/feed"
`/usr/local/bin/feed`
end
end
end
ブログ側
最後にエサをやった時刻と、次にエサをやれる時刻をJSONで出力する
require_once('./db_conf.php');
$pdo = getPDO();
$ret = array();
// エサやり最終時刻を取得
$sql_ret = $pdo->query("select * FROM feed_log ORDER BY id DESC LIMIT 1")->fetchAll(PDO::FETCH_ASSOC);
$ret['latest'] = $sql_ret[0]['on_at'];
$pdo = null;
$ret['next'] = "";
// 次のエサやり時刻
if((date('Hi') + 0) > 2000 ) {
$ret['next'] = date("Y-m-d", strtotime("+1 day" )) . " 13:00:00";
}else if((date('Hi') + 0) < 1000 ) {
$ret['next'] = date("Y-m-d") . " 13:00:00";
}else{
$ret['next'] = date("Y-m-d H:i:s", strtotime($ret['latest'] . " +3 hour"));
// 次にエサをやれる時刻が20時以降の場合は翌日の13時とする
if(date("Hi", strtotime($ret['next'])) > 2000) {
$ret['next'] = date("Y-m-d", strtotime("+1 day" )) . " 13:00:00";
}
}
header('Access-Control-Allow-Origin: *');
header('Content-type: application/json');
echo json_encode($ret, JSON_PRETTY_PRINT);
エサやりボタン押下でSangoを使ってガレージのRaspberry Pi2にキューを飛ばす
if (!array_key_exists('from', $_POST)) {
exit;
}
require_once('./phpMQTT.php');
require_once('./db_conf.php');
$pdo = getPDO();
// エサやり時刻チェック
$cnt = $pdo->query('select count(*) as cnt from feed_log where on_at > (now() - interval 3 hour)')->fetch(PDO::FETCH_ASSOC);
$pdo = null;
if($cnt['cnt'] === 0) {
$mqtt = new phpMQTT("tcp://std1.mqtt.shiguredo.jp", 1883, md5(time()));
if ($mqtt->connect(null,null,'ユーザー名', 'パスワード')) {
$mqtt->publish("ユーザー名/feed","",0);
$mqtt->close();
}
}
これで一先ずやりたい事は実装できた感じ
やぶ蚊に刺されず屋内から金魚を眺めながらエサがやれるようになりました!
おかげで人には懐かずカメラに懐いてしまった・・・人が近づくと逃げますがカメラが動くとエサくれーしますw
関連記事
-
-
プラ舟はじめました
プラ船買っちゃった 金魚にだだハマりなGW ついにプラ船買ってガレージに設置して …
-
-
穂竜はじめました
先日新しく45cm水槽を立ち上げてまして穂竜という金魚を飼いはじめました。 高頭 …
-
-
100均のタッパーで投げ込み式ろ過器を自作する
ジャンボタライにろ過器を追加したい ベランダ水槽のジャンボタライなのですが、60 …
-
-
RaspberryPi2で動画配信しながら写真も撮りたい
金魚デカくなった? 金魚にエサやってると4月の初頭から飼い始めた琉金が1周り大き …
-
-
福だるま 購入しました
新入り金魚 メイン水槽をリセットしたのでヤフオクで金魚を購入しました 福だるまと …
-
-
Raspberry Pi2でPlanexのGW-450Dが動かなくなった
Raspberry Pi2上で何も考えずソフト類をアップグレードしたらカーネルの …
-
-
プラ舟に外部フィルター追加
安かったのでつい・・・ ヤフオクで安い中古の外部フィルターが売っていたので衝動買 …
-
-
プラ舟のカメラ復活しました
カメラの首振りができなくなっていた プラ船のカメラが横方向に動かなくなっていたの …
-
-
Raspberry Pi2で外部から水槽のLEDを点灯する
外部からネット越しに金魚水槽のLEDを点灯させたい WebIOPiというライブラ …
-
-
Raspberry Pi ZEROをソーラーパネルで動かす
ソーラーパネルでラズパイ! 以前からソーラーパネルを使って電源の要らないRasp …
- PREV
- ピンポンパール投入しました
- NEXT
- Raspberry Pi2に2台のカメラを繋いで同時配信する



Comment
こんにちは。初めまして。ponと申します。
ラズパイを使った水槽への自動給餌機に興味があり、情報を探していたところ、こちらの記事に出会いました。
いくつかお聞きしたいことがあるのですが、よろしいでしょうか?
ご連絡お待ちしております。
答えられる範囲であればー