荷物を受け取れるように、ラズベリーパイを使って受取までのプロセスをほぼ自動化した話。我が家がオートロックマンションのため、共同玄関をどうセキュアに開けるかがキモ。私は宅配便の受取が苦手である。時間指定できるならまだマシだが、指定したその2~3時間どのタイミングで来るかもわからず、待っていなければならないのは苦痛である。以前はコンビニ受け取りもしていたが、やはり段ボールを抱えて家まで帰るのは面倒である。(我が家は3件隣がコンビニだがそれでも面倒は面倒)時間指定ができない宅配便などは、もう諦めて一度不在票入れてもらってその上で時間指定で受け取っていた。配達員の方々には申し訳ないがそうせざるを得ない。一人暮らし、共働きが多い現在、再配達率は相当多いのでは?と思い調べてみたところ、国土交通省の発表では平成31年度4月の段階で16%、都市部に限れば18%に上るそうである。www.mlit.go.jp5~6回に1回が再配達ということになる。配達業界もこれは問題と思っているのだろう、最近はAmazonなどで置き配も始まっている。我が家はオートロックマンション置き配はセキュリティ上不安な面も残るが、再配達問題の解決の一歩にはなるだろう。私も是非利用してみたい。我が家はオートロックマンションのため、インターホンで「解錠」ボタンを押さないと共同玄関が開かない。共同玄関が開かないことには配達員は玄関にたどり着くことができない。これでは置き配してもらうこともできない。我が家のインターホン。解錠ボタンを押さないと共同玄関は開かない。そこで、ラズベリーパイを使ってインターホンを監視、共同玄関を解錠したりユーザに配達を通知するシステムを作ってみた。今回構築したシステムの概要は以下の通りである。配達がわかっている場合と、予定外の配達の場合で動き方が分かれる。予定された配達の場合。Calendarに配達予定を登録しておく。ラズベリーパイは配達予定を取得し、その時間帯にインターホンが鳴ったら共同玄関を開け、配達員を中に入れる。ラズベリーパイは同時にユーザへ配達の旨をプッシュ通知する。19時50分追記)「指定時間帯は誰でも入れてしまうセキュリティホールになる」とのコメントが多くありましたので,このモードは廃止しました.次が予定外の配達の場合。時間指定ができなかったものなど、事前にいつ届くかわからなかいものの場合、ラズベリーパイはインターホンを検知するとその通知とインターホンのモニタ画面をスマホへプッシュする。ユーザはモニタ画面を見て配達員と判断したら、ラズベリーパイに解錠コマンドを送る。今回、Flaskでラズパイ上にサーバを立て、そこにコマンドを送ることにした。予定外の配達の場合オートロックマンションの共同玄関はセキュリティのためにあるため、来る者拒まずすべて通していたらオートロックの意味はなくなってしまう。そのため、「事前にわかっている配達」か、「ユーザが判断して許可した配達」のみ、通すようにした。部屋の玄関までたどり着いたら、簡易宅配ボックスであるOKIPPAを使って受け取る。www.okippa.lifeラズパイでインターホン音検知このシステムのトリガは全てインターホン音である。なにはともあれ、ラズパイでインターホン音を検知する。C270をラズパイに接続し、インターホンが押されたときの「ピロピロピロ・・・」という音を検知している。具体的には、音声データを常に取得、FFTで最大音量の周波数を取得し、インターホン音と一致するかを判定する、というもの。詳細は以下の記事を参照。プログラミング言語にはPythonを使っている。westgate-lab.hatenablog.comインターホンの音を検知したら、同時にユーザのスマホでプッシュ通知を送っている。プッシュ通知にはPushbulletを使った。APIも用意されており、アカウントを作れば簡単にラズパイ→スマホへのプッシュ通知を実装できる。westgate-lab.hatenablog.comラズパイで解錠ボタンを押すインターホン音が検知できたら、次にサーボモータで解錠ボタンを押せるようにしてみる。サーボモータにはマイクロサーボSG92Rを使った。秋月電子にも売っている。pigpioを使い、pythonで動かしている。サーボモータはインターホンに強力両面テープで貼り付けた。解錠ボタンをちょうどよく押せる角度を調整するのがキモである。ここの詳細は以下の記事を参照。westgate-lab.hatenablog.comここまでできると、こういうことができるようになる。ラズパイ+ウェブカメラでインターホン検知→サーボモータで解錠。あまりに反応が早いと怪しいので少し間を空けて。Calendarから配達予定を取得してみる。予定自体はあらかじめユーザがスマホで設定する。APIを使う手順はQuickstartが整備されているので、それに従って設定していけば良い。Calendarを読みに行って新しい配達予定がないかを確認している。読み取った予定をもとに「予定された配達」か「予定外の配達」かを識別している。ここの詳細は以下の記事を参照。westgate-lab.hatenablog.comwestgate-lab.hatenablog.comここまでくれば、一応「予定された配達」は自動で受け取れることができるようになる。ラズパイ+ウェブカメラでインターホンのモニタを抽出、通知するもし、予定外の配達だった場合、ユーザへインターホンのモニタ画像を通知する必要がある。今回は、OpenCVを使った。モニタを撮影してプッシュするとモニタ以外の無駄な領域が多いため、輝度値からモニタ部分のみを検出し、射影変換して向きを補正した上でPushbulletを使ってユーザへ通知している。撮影した画像をそのままPushbulletで通知した場合モニタ部分だけを抽出、向きを補正してPushbulletで通知した場合。こっちのほうが見やすいここの詳細は以下の記事を参照。westgate-lab.hatenablog.comwestgate-lab.hatenablog.com外出先からラズパイに接続されたサーボモータを操作するさて、ここまで来たら、ユーザは通知されたモニタ画像を見て配達か否かを判断できる。これが予定外の配達であると判断した場合は、ラズパイに解錠コマンドを送って共同玄関を開ける必要がある。コマンドを送るだけではない、「即座に判断し、即座に解錠コマンドを送る」必要がある。配達員はインターホンを鳴らして十数秒もすれば不在票を入れて帰ってしまうからである。リモートでラズパイを操作するので有名なのはWebIOPiだが、これは基本GUIによる操作を前提としており、操作に時間がかかってしまう。今回のような用途には不向きである。そこで、今回のシステムではFlaskを使ってラズパイにサーバを立ち上げ、そこにコマンドを送ることにした。家のルータにポートマッピング設定を行い、Flaskで使うポートへのコマンドをラズパイに転送することで、外出先からのラズパイ操作を実現した。ここまで来ると、スマホへの通知画面は以下のようになる。モニタ画像とともにプッシュされたURLを1タップすれば、サーボモータが動作、解錠ボタンが押され共同玄関が開く。まとめのところにも同じ内容を追記しているが、解錠コマンドはインターホンが鳴った時のみ反応すれば良いため、インターホンを検知してから30秒間のみ、応答するようにしている。四六時中コマンドで開けられるわけではない。そもそもインターホンが鳴ってないときに解錠ボタンを押しても共同玄関は開かない。配達時のスマホ通知画面。URLを1タップすれば共同玄関が開くここの詳細は以下の記事を参照。westgate-lab.hatenablog.comまとめようやく、ここまででラズパイを使った再配達撲滅システムが完成した。再配達撲滅システム(オートロックマンション用)、完成した。2020完成以来、再配達を依頼することはなくなった。14時05分追記)このシステムに対してアクセス制御を実装し、セキュリティ対策とした。»プロフィールid:kaname_m平日は宇宙開発エンジニア。欲しいものは作ればいいじゃない。kmizta月別アーカイブはてなブログをはじめよう!kaname_mさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。