Raspberry Piを使って来客通知システムをつくる

## 概要
* 戸建て住宅用のインターホンとして、来客の通知をメールで送信する製品がある
* 賃貸住宅では備え付けの機器しか使用できず、改造もできない
* インターホンの呼び出しに応じて、カメラ画像を撮影し、メール送信するシステムをつくる

電源部とバスドラムの回路をつくり、スイッチでテストしている様子
![スクリーンショット 2021-03-23 8.24.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/f9e4a3ce-2bdf-228a-fd79-d4967121e328.png)

他のパートも交えRaspberry Piと接続している様子
![19667890_1494514477271382_4849948105847660650_o.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/45fea560-fe12-8766-76a5-14018aa7f019.jpeg)

シーケンサーを開発している様子
![19488955_1494515827271247_4695634475758483470_o.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/5a3e14d0-db98-4878-8272-88c66ccbbf50.jpeg)


## 用意するもの
* Raspberry Pi3 Model B (4でもおそらく大丈夫)
* Raspberry Pi用のケース
* Raspberry Pi用のヒートシンク
* Raspberry Pi3 Model B B+ 対応 電源セット(5V 3.0A)
* GY-30 デジタル光強度センサモジュールI2C 
* サインスマート Raspberry Pi 用 カメラモジュール Camera Module for ラズベリーパイ  
* ジャンパーワイヤー メス-メス
* 熱収縮チューブ
* 本立て(100円ショップ)

## 環境構築
* Raspberry PiのOSをセットアップし、I2Cを有効化する  
https://www.raspberrypi.org/downloads/  
https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-i2c/  
* muttでGmailを送信できるようにしておく  
http://www.tapun.net/raspi/raspberry-pi-ssmtp-mutt

## 組み立て
Raspberry Piと光センサー(GY-30)、カメラを以下のように接続する
![スクリーンショット 2020-09-15 9.39.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/92ecad59-0ab6-2d77-5669-4b646b17607a.png)
※Raspberry Piのピン配置は割愛します。
* インターホンの画面に光センサーを設置する(呼び出しで画面が明るくなることを利用)
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3730313434352f66383534626535652d343636642d666563352d343961372d6666646461303863656434362e6a706567.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/2cea780b-c13c-36e3-4fdb-b25070719fd1.jpeg)
![49472120_2154225237966966_3920311238571065344_o.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/17b01501-0296-4697-0b3e-36e6668ffda5.jpeg)

## プログラミング
* Pythonでwhile文でloopさせ、光センサーからの値が200Lux以上になったら、  
カメラで撮影し、jpg形式で保存する（撮影のたびに上書き）
* 撮影した年月日をテキストファイルに一時的に書き込む（上書き） `body.txt` 
* muttとGmailを使って、撮影した年月日を本文に入れたメール送信を行う `guest.sh`
* 5分間のスリープ時間を設ける（オートロックで呼び出し後、部屋のインターホンで再度呼び出されることの考慮）
* Raspberry Pi起動時に、自動的に `guest.py` が起動するようにする

メインプログラム

```Python:/home/pi/guest/guest.py
import smbus

import picamera

import time

import subprocess

bus = smbus.SMBus(1)

addr = 0x23

camera = picamera.PiCamera()

while True:

    luxRead = bus.read_i2c_block_data(addr,0x11)

    print("Lux: "+str(luxRead[1]* 10))

    if int(luxRead[1]* 10) > 200:

        camera.capture('/home/pi/guest/image.jpg')

        res = subprocess.call("sh /home/pi/guest/guest.sh",shell=True)

        time.sleep(300)

    time.sleep(1)
```

メール送信用のシェルスクリプト

```sh:/home/pi/guest/guest.sh
sudo date > /home/pi/guest/body.txt
sudo mutt -s "guest arrived!" xxxxxx@gmail.com -a /home/pi/guest/image
.jpg < /home/pi/guest/body.txt
```

自動起動の設定

```sh:/etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

sudo python3 /home/pi/guest/guest.py &

exit 0
```

## 注意点
* 検出する光の強さ(Lux)はインターホンによって違うので調整する  
タッチパネルで画面が明るくなるタイプでは、その機能で確かめる
* スリープ時間は、オートロックのエントランスから部屋の距離で調整する
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3730313434352f39376461346635302d633061352d316236312d353862392d6163643462383432623864612e6a706567.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/ae81e20f-97ae-8829-3557-a94fb965b5fd.jpeg)
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3730313434352f38626430643066382d383530662d663932372d663633392d3563633439666666313063352e6a706567.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/996b8857-f286-9ac1-9abe-7d23b84fc679.jpeg)

## 使ってみて
* ネット通販を多用しているので不在時に来客があった際の通知は便利
* 1年半以上使っているが安定動作している