畑の監視システムの構築のカバー画像
畑の監視システムの構築
2023/9/16
このエントリーをはてなブックマークに追加

畑の監視システムの構築

今うちには畑(家庭菜園)があり、その監視システムを作成してひと段落ついたので記念にまとめます。
主な機能は以下の通りです。

モチベーション

  • 夏休み自由研究として記録したい
  • grpcのストリーミングrpcでいろいろやりたい
  • 映像配信周り触ってみたい

構成

全体の構成をざっくりまとめます

物理構成

hard-struct

ソフトウェア的な構成

ネーミングセンスはおわってる

  • farmcamera-server
    • 映像配信をするサーバー
    • カメラから取得した映像フレームを配信する
  • farmcamera-streamer
    • 映像中継サーバー
    • farmcamera-serverからフレームを受け取り配信する
  • farmchat
    • 配信画面で利用しているチャット用サーバー
  • farm-poster
    • k8sのcronjob
    • 毎朝の撮影, gif用の3分間隔の撮影, 1日のおわりにgifの生成をする
  • blog

software-struct

今後の展望

現在のライブ配信が multipart/x-mixed-replace を使っためちゃくちゃ簡易的な配信になっている。
なこれを camera server 側で hls 形式にエンコードしてもう少し扱いやすい形にしたい。
farmcamera-server <-> farmcamera-streamer 間をせっかくなので SRT でやり取りするのも視野にいれたい。

映像配信から離れた部分ではデータがあつまったら土の表面の色合いから水やりタイミングを判定出来るようにするとかしないとかその辺もちょっと検討中になっている。

感想

触りたかった gRPC の Streaming を試せたのでだいたい満足した。
何度か偶々ストリームが詰まったのか一度に大きなサイズのデータが流れてエラーになっていた。

  • grpcのデフォルトでメッセージサイズの上限値があった

カメラPCの性能次第だけどいい感じにエンコードしてからやりとり出来るともっといい感じの世界になるかもしれない。
ただ、フレーム単位でのやりとりからtsファイルとかになると gRPC で送受信するにはでかい気もしていて結局この部分でのgRPCを辞めることになるかもしれない。

畑の監視システムの構築 - ねこの部屋