静止画ベースの見守りサービス「MONITOR」とセンサハンドラの「PondSlider」を作りました

この記事は個人開発 #2 Advent Calendar 2018の5日目です。
昨日は @sti320a さんの「ログイン不要／最短15秒でソースコードを共有できるWebアプリ「Harigami」を作った」 でした。ログイン不要、というところに魅力を感じ、大変参考になりました

# MONITOR と PondSlider について
## [MONITOR](https://monitor.uedasoft.com/)
[MONITOR](https://monitor.uedasoft.com/) は、静止画ベースの見守りサービスです
Raspberry Pi や BeagleBone といった Board Computer から 定期的に post してくる カメラ画像を受け取り、古い画像を捨てて最新の画像をブラウザに表示します


<div>
<img src="https://4.bp.blogspot.com/-OGXt2TNMqo8/W8woXmNy50I/AAAAAAAABjA/DSEBmGx3d9E32eDFyOIWhPUyVrNFCZMXgCEwYBhgL/s400/2018-09-09%2B14.37.02.png" width="49%"> 
<img src="https://2.bp.blogspot.com/-v3afY9sXf3g/W8vMYgoKGqI/AAAAAAAABi0/Ur3R7A0dyjE-BdmvPGtmnoPs65xQ10gKQCLcBGAs/s400/2018-10-05%2B08.45.39.jpg" width="49%">
</div>

[こちら](https://monitor3.uedasoft.com/)から使えますので、つかってくださる方がいらっしゃいましたらうれしいです


オマケでセンサーデータの時系列表示もやってますが、メインはカメラ画像です

<img src="https://2.bp.blogspot.com/-3JhqCyKvdK0/W5oZgTLwKbI/AAAAAAAAAqU/1CIp2FM8mokAK7n-YNE5wO8YRN6bj9NDQCEwYBhgL/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2018-09-13%2B17.01.33.png" width="80%"> 

※2020.04.26
[Ken Matsui](https://medium.com/@matken.jp)様、[Raspberry Pi 3B+でCO2濃度を計測してグラフ表示](https://medium.com/matken-blog/measure-co2-concentration-with-raspberry-pi-3b-plus-and-display-it-as-a-graph-8190234dab45) で Monitor をご紹介いただきまして誠にありがとうございました。設定方法とか私のドキュメントよりもわかりやすくて脱帽いたしました。

## [PondSlider](https://pypi.org/project/pondslider/)
[PondSlider](https://pypi.org/project/pondslider/)は、Board Computer 側でいろいろなセンサデータを取得して MONITOR に投げたり、SDカードに保存したり、その他いろいろと必要な事をするセンサハンドラです
![ss.2018-11-03.13.56.11.png](https://qiita-image-store.s3.amazonaws.com/0/46544/8df8953c-65c9-cef8-6bcf-a0bcb0a41d5e.png)

# なぜ静止画ベースなのか
最も安くて安全に運用できる方法だと考えました

セキュリティ設定をエンドユーザーに頼らざるを得ない IPカメラベースの見守りはセキュリティの事故が多発しているという笑い話みたいな現実がありますが、サーバを利用した動画ベースの見守りは安全ですが通信費も運用費も安価ではありません

静止画ベースだとカメラ側の通信機能を 3G網に頼らざるを得ない屋外や海外でも月々10$程度の通信費で見守りが可能になるので、海外に設置した機器や海外での工事の見守りにも気軽に利用できます

背景等の詳細は[こちら](http://jpmonitorserviceatelierueda.blogspot.com/2018/12/raspberry-pi-30.html)とか[こちら](https://qrunch.io/entries/9HkiebSPOvmuSfjZ/Ll82p5RL3QT5zqFN)をご参照いただければ幸いです

# なぜセンサーハンドラが必要なのか
これまで４年ほど、センサーを読んでなにかをするモノをいろいろとつくってきているのですが、データシートを読んで自分でコードを書く必要が生じたのはこれまで [この](https://qiita.com/UedaTakeyuki/items/c5226960a7328155635f)一回しかなくて、あとは全て、どなたかが github や pypi に公開してくださっているコードを import して使わせていただいています

私のような下々の者が手にするようなセンサーだと、ほぼ、すでに誰かがコードを公開してくださっているので、それを流用させていただくことが現実的なのですが、その流用を流暢にやってくれるフレームワークが欲しかったのが理由です
背景などの詳細は[こちら](http://jpmonitorserviceatelierueda.blogspot.com/2018/11/pondslider-sensor.html)をご参照いただければ幸いです

# なぜこんな名前なのか
MONITOR はモニタリングの MONITOR と、大好きなオオトカゲ(Monitor Lizard)をかけてます
賢者様なんじゃないかと思うほど賢そうな顔してるのですが、その顔のままガブっと噛みつくところとかたまらなく愛らしいです
![monitor.jpg](https://qiita-image-store.s3.amazonaws.com/0/46544/844039d0-419c-1e52-efd2-02c6771b94a3.jpeg)

PondSlider は、MONITOR と co-work するようなのをなにかないか考えてて、そういえば MONITOR Lizard の周りにミドリガメいっぱいいたなと思って PondSlider（アカミミガメ）と付けました

ルンビニ公園で MONITOR に頭から丸呑みにされつつある PondSlider を見てしまい、このネーミングが適切だったのかちょっと悩んでます

某所で MONITOR と PondSlider のコードを使って [IoT原理の社内教育](https://github.com/UedaTakeyuki/slider_lesson_text)をやらせていただいた時、教育担当の方に「どんな隙間にも滑り込んでいくようなデバイスなので Slider と呼びます」と嘘ついたら納得された上に Technical Term だと勘違いされて授業前にそのように紹介されてしまい大変焦りつつも申し訳なく思いました件、この場をかりてお詫びもうしあげます


# リリースについて
## いつからつくりはじめたのか
2014年ぐらいからつくりはじめました
作り始めた理由は適当なサービスが他になかったからです

静止画ベースの見守りは2012年ぐらいから、ヒヨコ舎の画像を定期的に撮影して Twitte に上げていらっしゃる方とかがいらっしゃいましたが、定期的に POST される写真の最新のみを保存して表示する、というそのものズバリなサービスがなく、だったら自分で作ろうと思いました

センサーデータの時系列表示は、当時から Xivley や M2X みたいな専用の物、サーバの監視を流用する物などいろいろあったのですが、いろいろ試してみて納得できず、自分でつくりました
初期のコードはサーバ側の [MONITOR](https://github.com/UedaTakeyuki/monitor)、デバイス側の [SLIDER](https://github.com/UedaTakeyuki/slider)ともに公開しています
SLIDER は時々 clone してくださる方がいて嬉しいです

実用的なバージョンは、国内の野菜工場の監視に使っていただいたり、ミャンマーの田園地帯で小規模発電プラントの監視に使っていただいたりしました

## いつリリースしたのか
[MONITOR](https://monitor.uedasoft.com/) は 2018年の9月にリリースしました、作り始めてからリリースまで４年もたってる大作です ^^;;;

リリースするまでの間は、誰かから相談を受ける都度、アカウントを作って提供してました
世にリリースしなかったのはアカウント登録を綺麗につくる自信がなかったからです

## なぜリリースしたのか
ドットインストールで FireBase Auth を見て、「あ、これだと僕でもユーザ登録つくれそう」と思ったのが直接の動機です。なので、MONITOR のユーザ登録は FireBaseAuthUI そのままです

Raspberry Pi を前提にした無料の見守りサービスをリリースしたモチベーションは運用や設置のコストが原因で必要な見守りができていない現場の存在が歯痒く、コストを劇的に下げる手段は人に頼まず自分でやることなのですが、装置や設置は情報を発信するとして、サーバは敷居が高いので僕が提供すればなんとかなるのではないか、というアイデアのフィージビリティを実際に試してみたいという、単なる Resarch Question の仮説検証です ^^;;;

# リリースしてみてなにが大変だったか
ユーザ向けのドキュメンテーションとトラクションが大変ですね
どっちもまだ全然、質どころか量が足りてないと痛感します
ドキュメントも揃ってないコードが人から使って貰えるわけもなく、人が使わないコードに価値などなく、本当になやましいです
自分で測ってみたのですが、ドキュメント書くのってコード書くより***ステップあたりの生産性が１０倍ぐらい低い***です

このあたり、なにかいい方法はないものか今も試行錯誤を繰り返してます

# 今後どうするか
[aiortc](https://github.com/jlaine/aiortc)で RPi と ブラウザ間での P2P の見守りにすると本当に必要なとき以外はデバイス側の通信が発生しないようにしたらさらに通信費を安くできそうで面白そうです


[PondSlider のサンプルハンドラ](https://github.com/UedaTakeyuki/handlers)、自分がこれまで作って来たものをここにまとめていかないといけないな、と思っているのですがサボってるところもあり申し訳ないです
ありがたくも clone したりスターつけてくださる方がいらっしゃればモチベーションに繋がりますのでありがたいです

# Poursuivons la mission

Advent Calendar 2018 「個人開発 #2」 明日、12月6日は @terumichi1209さんの投稿です！お楽しみに！