やりたい事6:売買料金を算出する

すでに、やりたい事5:色々と改良で売買電力の計測は行っているのですが、金額換算で見てみたくなり、さくっと金額レポートがメールで届くように修正しました。

変更内容はこんな感じです

requests.py

def send_email():
    try:
       #=================================
       # 昨日の時間範囲
       #=================================
       post_datetime = datetime.datetime.now()
       post_datetime = post_datetime + timedelta(hours=9)
       post_datetime_s = datetime.datetime(post_datetime.year, post_datetime.month, post_datetime.day,0,0,0,0)
       post_datetime_s = post_datetime_s - timedelta(hours=24)
       post_datetime_e = post_datetime_s + timedelta(hours=24)
       post_datetime_s = post_datetime_s - timedelta(hours=9)
       post_datetime_e = post_datetime_e - timedelta(hours=9)
       sql = ("SELECT * FROM ListHour WHERE date_time >= DATETIME('%s') AND date_time < DATETIME('%s') ORDER BY date_time ASC" % (post_datetime_s, post_datetime_e))
       power_consumption = db.GqlQuery(sql)
       power_consumption = power_consumption.fetch(60)
       
       out_power = []
       gen_watt_total = 0
       use_watt_total = 0
       sell_watt_total = 0
       buy_watt_total = 0
       txt = ""
       for fav in power_consumption:
           gen_watt = fav.watt_value1
           use_watt = fav.watt_value1 + fav.watt_value2
           
           gen_watt_total = gen_watt_total + gen_watt
           use_watt_total = use_watt_total + use_watt
           if fav.watt_sell != None:
               sell_watt_total = sell_watt_total + fav.watt_sell
           if fav.watt_buy != None:
               buy_watt_total = buy_watt_total + fav.watt_buy
           txt = txt + (fav.date_time + timedelta(hours=9)).strftime("%Y/%m/%d %H:%M") + ',' + str(gen_watt / fav.write_cnt) + ',' + str(use_watt / fav.write_cnt) + '\r\n'
       
       gen_watt_total = float(gen_watt_total) / (30.0 * 1000.0)
       use_watt_total = float(use_watt_total) / (30.0 * 1000.0)
       sell_watt_total = float(sell_watt_total) / (30.0 * 1000.0)
       buy_watt_total = float(buy_watt_total) / (30.0 * 1000.0)
       
       sender_address = "you <?????????@????.????>"
       subject = u"電力計測結果" + post_datetime_s.strftime(" %Y/%m/%d")
       body = u'昨日の電力量結果を送信します。\n\n'
       body += u'総発電電力:' + str.format('{0:03.2f}', gen_watt_total) + u'kWh\n'
       body += u'総使用電力:' + str.format('{0:03.2f}', use_watt_total) + u'kWh\n'
       body += u'--------------------\n'
       body += u'買電電力(金額):' + str.format('{0:03.2f}', buy_watt_total) + u'kWh(' + str.format('{0:03.2f}', buy_watt_total * 24) + u'円)\n'
       body += u'売電電力(金額):' + str.format('{0:03.2f}', sell_watt_total) + u'kWh(' + str.format('{0:03.2f}', sell_watt_total * 37) + u'円)\n'
       body += u'--------------------\n'
       body += u'買電金額は24円/kWhで計算しています\n'
       body += u'売電金額は37円/kWhで計算しています\n'
       mail.send_mail(sender=sender_address,
                  to=sender_address,
                  subject=subject,
                  body=body,
                  attachments=[post_datetime_s.strftime("watt_%Y_%m_%d") + '.txt', txt])
    except:
       logging.error("send mail error")
       logging.error(traceback.format_exc())


こんな感じで毎日メールが届きます