ついにraspberry piを常時起動する日がきた。
I2c通信が可能な温度センサーADT7410を使ってそのデータをメールで送れるようにしてみた。
右下のブレッドボードにささっているのがADT7410raspberry piはアナログ入力がないのでI2cを使わざるを得ない。4本の脚にそれぞれVCC、SDA、SCL、GNDを接続する
プログラム的にはこんな具合だが温度を連続して取得する様にはしていない。
後でメールで送る為、一度に一回のみ取得するようにしている。
import smbus
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
i2c = smbus.SMBus(1)
address = 0x48
block = i2c.read_i2c_block_data(address, 0x00, 12)
temp = (block[0] << 8 | block[1]) >> 3
if(temp >= 4096):
temp -= 8192
print("Temperature:%6.2f" % (temp / 16.0))
time.sleep(1)
if(temp >= 410):
GPIO.setup(27, GPIO.OUT)
GPIO.output(27, 1)
else:
GPIO.setup(27, GPIO.OUT)
GPIO.output(27, 0)
GPIO.cleanup()
これをi2c.pyというファイル名でデスクトップに保存。
次にメールの設定
sSMTPをインストールする
sudo apt-get install -y ssmtp
インストールが完了したら,/etc/ssmtp/ssmtp.conf の設定変更
sudo nano /etc/ssmtp/ssmtp.confから下記を変更する。
root=*****@gmail.com ※自分のGメールアドレスを入力
mailhub=smtp.gmail.com:587
そしてこちらは追記
AuthUser=*****@gmail.com
AuthPass=password ※Gmailのパスワード
UseSTARTTLS=YES
※場合によってはアカウントのセキュリティ設定変更が必要なので注意してほしい
これでメールの設定はOK、次にスケジュール実行機能のあるcronを使う。
これはデフォルトで搭載されているのでインストールは必要ない。
まず設定を変更する。
crontab -e
最後の行にPythonファイルを実行する様に追記する。
0 7,22 * * *sudo python /home/pi/Desktop/i2c.py
始めの*が左から分、時、日、月、曜日を表す、これだと毎日7:00、22:00にてメール送信をする設定となる。
あとは送信するメールアドレスを追記
MAILTO="メールアドレス"
これでこのメールアドレスに毎日7時、22時に温度のメールが来るようになる。
常時監視なら外気温度を取りたいところだがとりあえず室内で今は我慢。
今後はエアコン操作も視野に入れてみたい。