このアイデアはかなり前に出てきました。 ビデオカード(暗号通貨の家)を使用して採掘された暗号通貨で鶏小屋を加熱することを考えている人はいますが、間違いなく、画像、音声、ニューラルネットワークおよびその実際のアプリケーションを認識することについて考えている人がいます。
一般的に、多くの計画があります。 巣の近くで攪拌が行われたという事実は、鳥が巣に登ったか、巣からledい出したことを意味します。 これはopenCVを使えば簡単に理解でき、すでにその方法を知っています。 このブログで簡単に。
しかし、各鳥を認識し、どの鳥が飛んでいないかを分析したらどうでしょうか? 個々の鶏の生産性を評価しますか? 鳥が急ぐことなく、休息する他の正当な理由がない場合(たとえば、日照時間が短い、脱皮)、鶏肉のスープを調理する時間でしょうか?
「鳥ch11は理由もなく急いでいないように思えます。おそらく、さらなる運命を検討する必要があります。」 それから、ch11の鳥は古い猫のクランベリーで、鶏と一緒に住んでいるだけです。
ハッカソン
これがすべて素晴らしいと思うのは忘れられないことでした。 ( 窓の外の車で )動きを検出する最初の経験はうまくいきましたが、今では機器はアイドル状態でした。 いつもすべてが突然起こるので、木曜日のある晴れた日に両親に金曜日の夜にチケットを買って週末に飛び、ニューロチキンハウスのデータ収集をセットアップしました。
主な困難は、有線インターネットの欠如とそれを実行することの根本的な不可能性(荒野、何をすべきか)でした。 しかし、あなたが何に登録しているのかわからないとき、あなたは最善を望みます、はい。
さらに、鶏小屋には出口がありませんでした。 もちろん、両親は、光とアラームを供給することにより、自宅から直接ナイフのスイッチを制御します。 私の父は鶏小屋にソケットを実装する要求に応答し、一般的に彼女は非常に迅速に実現しました。
機器の主要部分は、Raspberry Pi 3とそのカメラボード、電源、USBファンです(ファンなしの画像処理によりプロセッサが最大80度加熱されるため)。 さらに、誰かがpiにインターネットを提供する必要がありました。
だから、ホットスポットの代替品-3g / 4gモデムhuavei、Android上の古いxperia。 このモデムは、別の電源を必要としないという点で優れていますが、Windowsでのみ動作するという点で悪いです。 もちろん、Linuxでそれを入手する方法についての記事はありますが、私は何かが欲しくありませんでした。
厳密に限られた時間の条件(出発の前日が残っていた)では、電話が選ばれました。
プロバイダーは、この地域で静的IPサービスを提供しませんでした。 IPは動的であることが判明し、動的DNSサービスを使用して修正することが決定されました。
そして突然(誰が疑うか)、うまくいきませんでした。 結局のところ、IPは単なる動的ではなく、灰色の動的です。 これは、外部からアクセスすることが不可能であり、ポートが閉じていることを意味します。
同時に、画像サーバーをキャプチャして送信するためのPythonスクリプトは見られましたが、まだ生のままでした。
その間、利用可能な時間の半分はすでに費やされています。
友人は、ssh back connectという素晴らしいものがあることを提案しました。これにより、一般的に失望から救われました。 時間がほとんど残っていなかったので、すべてがどのように機能するかを完全に理解できませんでした。少なくとも何らかの形で機能することが必要でした。
出発の直前に、王冠にはsshトンネル、温度測定、郵便局のアラームが設置されました。その場合、セットアップ全体が鶏小屋に行きました。 インターネットではまだ悪いことがありますが、そうです。 それは十分に暗く、写真には何も見えないことが判明しました。 父はできるだけ早く照明を設置することを約束しました。 当分の間、カメラはオフになりました。
主なことは、インターネットがあった場所ならどこからでもpiに接続できるということです。
設定の詳細
ハッカソンから少し離れて-行進で、この問題をさらに調整することを約束しました。 (永続的なautosshキーワードを使用して) ガイドを読んだ後、逆sshの代わりにautosshをセットアップしようとしました。これは不安定に動作し、クラウンを使用してサポートされていました。 最初はautosshで何も起こりませんでしたが、クラウンで最初のソリューションを使い続けましたが、肥沃な接続の問題により、とにかくautosshで友達を作ることを余儀なくされました。
作業を開始するには、動的グレーIPを使用してリモートデバイスに実行可能ファイル(方法はわかりませんが、googleは実行可能ファイルlinuxを作成します)を作成し、次の行を追加するだけです。
/usr/bin/autossh -M 0 -o ServerAliveInterval=50 -o ServerAliveCountMax=2 -nNTf -R 2222:localhost:22 userB@hostB -p bbbb
この行では、2222は必要のないポートに置き換えることができます。userBをホームサーバー上のユーザー(つまり、鶏小屋にないもの)に、hostBをホームサーバー上のホストに、bbbbをホームサーバーのポートに置き換える必要があります。標準(22)とは異なります。
興味がある場合、または何か変更したい場合は、コマンドパラメータについて自分で読むことができます。 次に、このような行をクローナー(crontab -e)に追加します(クローナーに慣れていない場合は、 1 2 3 4の友人が入力を収集しました)。再起動時にautosshが実行されます。
@reboot /path/to/script/autosshtunnel.sh
したがって、別のリモートマシンからホームサーバーにアクセスしている場合は、セッションが中断しないようにしてください。 つまり、私はラップトップからサーバーにアクセスし、既にサーバーから鶏小屋をノックしています。この場合、サーバーに接続するときと鶏小屋(ラズベリー)に接続するときの永遠のセッションのパラメーターを処方します。
これは、次のパターンに従って行われます。
ssh -o TCPKeepAlive=yes -o ServerAliveInterval=50 user@box.example.com
鶏小屋のシステムに次のように接続します。
ssh -o TCPKeepAlive=yes -o ServerAliveInterval=50 sshuser@localhost -p 2222
リモート接続の可能性がすべてでした。次に、温度アラームについて簡単に説明します。 ubuntuやraspbanなどのdebianシステムでメールのアラームを設定するには、このガイドに従ってください 。ssmtpをインストールし、設定を修正するだけです。 raspbanのメールの過熱に関するアラームの最も簡単なスクリプトは次のようになります。
TEMPERATURE="$(/opt/vc/bin/vcgencmd measure_temp)" NTEMPERATURE="$(echo $TEMPERATURE | tr -dc '0-9.')" LIMIT="61.0" if [ $(echo "$NTEMPERATURE > $LIMIT" | bc) -ne 0 ]; then echo "The critical CPU temperature has been reached $NTEMPERATURE" | sudo /usr/bin/ssmtp -vvv somename@somehost.com fi
その後、このスクリプトを実行可能ファイルにパックし、クラウンにドロップします。 暑くなるまで、2分ごとにスクリプトを実行します。
次に、画像を収集するメインスクリプトについて説明します。 動きに気付いた場合に条件付きで有用と考える画像。 これらの画像については、すでに分析と認識を強化します。 有用なブログは上記で言及されており、そこからスクリプトをベースとして、少し書き直しました。
ガイド自体は、あなたが動作するために必要なことをすでに述べていますが、私はあなたがOpenCVビルドを作成する必要があることを繰り返します。 これには長い時間がかかる場合があります(私の場合は5時間かかりました)。 これに加えて、numpy、imutilsなど、他のライブラリもインストールする必要があります。落とし穴はありませんでした。
メインスクリプトをニーズに合わせて書き直し、次の変更を行いました。
- Python 2をPython 3に変更
- Dropboxの代わりにサーバーを使用しました。
- 元のフレームと圧縮されたフレームが保存されます。
pi_surveillance.pyの完成バージョンは次のようになります(構成内のスクリプトから定数を削除する必要がない限り)。
構成は次のようになります。
{ "show_video": false, "use_server": true, "server_base_path": "/media/server/PIC_LOGS", "min_upload_seconds": 1.0, "min_motion_frames": 3, "camera_warmup_time": 2.5, "delta_thresh": 5, "resolution": [1920, 1080], "fps": 16, "min_area": 6000 }
そして-tempimage.py:
最初に受け取った画像は、巣の中の鶏の尾の画像でした。 天気の良い日にはコンソールを凝視する、人生を通して内向的な5月の素晴らしい贈り物。 暗闇、フレーム内の鳥の頭の欠如、およびスクリプトのカスタマイズの欠如にもかかわらず、画像は本当に喜んでいました。 これは鶏のしっぽです( あなたから千キロ離れたところにいる鶏が巣の中にrawいだと思ってください。
それから照明が設定され、私はもっと感動的な写真を撮った。
スクリプトは、OpenCVが次のように仮想作業環境cvにインストールされているという事実を考慮して起動されます(これをバックグラウンドに正しく送信する方法を理解する必要もあります)。
source ~/.profile workon cv cd ~/chickencoop python3 /home/sshuser/chickencoop/pi_surveillance.py --conf conf.json
継続するには...