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
関連記事
-
45cm水槽を修理してみた
大昔に使ってた45cm水槽が出てきたので洗って使おうと思ったんですが水漏れしてま …
-
100均のタッパーで投げ込み式ろ過器を自作する
ジャンボタライにろ過器を追加したい ベランダ水槽のジャンボタライなのですが、60 …
-
RaspberryPi2を使ったリモートのエサやりボタン復活しました
春がきた 春になり水温が上がってきたのでプラ舟ページのエサやりボタンを復活させま …
-
福だるま購入しました
福だるま?玉サバ? ちょっと前、寝室に60cm水槽に立ち上げた水槽へ福だるまを4 …
-
金魚が病気の為、隔離しました
配信中の金魚水槽ですが、金魚が病気で1匹死んでしまったので隔離しました メイン水 …
-
Raspberry Pi ZEROでGW-450D2(無線LANドングル)を使う
ZERO買っちゃった Pimoroniで入荷しているのを見たのでRaspberr …
-
プラ舟に水中カメラ設置
水中カメラを設置したい プラ舟ページで配信しているカメラですが、 鳥やネコ避けの …
-
Raspberry Pi2でリモコンを使って水槽の照明をつける
リモコン操作で照明をつける Web上からRaspberry Pi2で水槽の照明を …
-
穂竜はじめました
先日新しく45cm水槽を立ち上げてまして穂竜という金魚を飼いはじめました。 高頭 …
-
Raspberry Pi2でプラ船のカメラを動かす
カメラの首振り プラ舟内に設置しているカメラにサーボを取り付けて遠隔からカメラの …
- PREV
- ピンポンパール投入しました
- NEXT
- Raspberry Pi2に2台のカメラを繋いで同時配信する
Comment
こんにちは。初めまして。ponと申します。
ラズパイを使った水槽への自動給餌機に興味があり、情報を探していたところ、こちらの記事に出会いました。
いくつかお聞きしたいことがあるのですが、よろしいでしょうか?
ご連絡お待ちしております。
答えられる範囲であればー