HOME → 1 Raspberry Pi → 03 作品集 → 

Raspberry Pi 気象情報のメール送信に成功

Raspberry Pi 作品集
気象情報のメール送信
 
docomoml12014年末、Raspberry Pi と言う超小型のシングルボードコンピュータに出会い、電子工作の趣味が甦る。
 
B+ と言うモデルを3台購入。
最初に取り組んだのが、照度・気温・湿度・気圧を測定する電子工作で、出力は ”キャラクタLCD” だった。
 
しかし、これだと Raspberry Pi を常に見に行かなければならない。
 

 

スポンサー リンク

 

 
 
Raspberry Pi 壁掛け型『百葉箱』 

1gouki2

気象情報取得回路図 
 
そこで、一定間隔で測定した結果を、自分の携帯に送信出来れば家にいなくとも見れると、 メールで通知するプログラムを ”Python” と言う言語で書いた。
 
まずは、POPメール(PC)で試したのち、スマホ(DOCOMO)にも送信することが出来た。
popmail
この過程で、メールボックスの内容を見る方法が判ったり、自動で・大量のメールを送る方法なども理解でき、ハッカー気分に浸る。
 
 
参考書やネットの情報を頼りに、年末年始、昼夜を問わず没頭した。久しぶりに熱中できることに巡り合い、『気力』なるものに改めて気づく。
 
参考:Python PGM List
#! /usr/bin/env /usr/bin/python
# -*- coding: utf-8 -*-
 
import datetime
import time
import signal, sys
from Adafruit_ADS1x15 import ADS1x15
import smbus
import mpl1152a2
from acm1602 import acm1602
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate
 
# アナログ変換セットアップ
ADS1015 = 0x00
ADS1115 = 0x01
gain = 4096
sps = 250
adc = ADS1x15( ic=ADS1015 )
 
# メールセットアップ
def create_message2(from_addr, to_addr, subject, body, encoding):
    # 'text/plain; charset="encoding"'というMIME文書を作ります
    msg = MIMEText(body, 'plain', encoding)
    msg['Subject'] = Header(subject, encoding)
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Date'] = formatdate()
    return msg
 
def send_via_gmail(from_addr, to_addr, msg):
    s = smtplib.SMTP('smtp.gmail.com', 587)
    s.ehlo()
    s.starttls()
    s.login <span style="color: red;">('メールアドレス@gmail.com', 'パスワード')</span>
    s.sendmail(from_addr, [to_addr], msg.as_string())
    s.close()
 
# ループ
SLEEPTIME = 3600
while True:
 
    # 日時取得
    d1 = datetime.datetime.today()
    d2 = datetime.datetime.strftime(d1,"%Y-%m-%d/%H:%M:%S")
 
    # 照度取得
    volts = adc.readADCSingleEnded( 0, gain, sps ) / 1000
#if volts > 1:
#   print( "Well Lighted : " + str(volts) + "V" )
#else:
#   print( "Dark : " + str(volts) + "V" )
 
    # 湿度・気温・気圧取得
    i2c_channel = 1
    i2c = smbus.SMBus( i2c_channel )
    dac = i2c.read_i2c_block_data( 0x27, 0, 4 )
    h = ( ( dac[0] & 0x3f ) << 8 ) | dac[1]
    humi = (float)(h) / 16383 * 100
    t = ( dac[2] << 6 ) | (dac[3] >> 2)
    temp = (float)(t) /16383 * 165 - 40
    pres = mpl1152a2.getpressur( i2c_channel )
 
    # メール送信
    if __name__ == '__main__':
        from_addr = 'xxxxx@gmail.com'
        to_addr = 'yyyyy@hotmail.co.jp'
        subject = u'3F-気象情報'.encode('ISO-2022-JP')
        body = '%s\n' % d2  + u' 照度 :
         ' + str(volts) + " V\n" + u' 温度 :
         %.2f C\n' % temp  + u" 湿度 :
         %.2f %%\n" % humi + u" 気圧 :
         %.2f hPa\n" % pres + u"onjipi より、送信しています。\n"
        msg = create_message2(from_addr, to_addr, subject, body,'ISO-2022-JP')
        send_via_gmail(from_addr, to_addr, msg)
 
    time.sleep( SLEEPTIME )
    
 

以上。
(2015.01.05)

 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください