import urllib.request, tempfile, smtplib, email, time
from datetime import datetime
from influxdb import InfluxDBClient
tmpdir = tempfile.TemporaryDirectory()
beginning = str((1000*int(time.time()))-(17*3600000))
end = str(1000*int(time.time()))
client = InfluxDBClient(host='127.0.0.1', port=8086, database='solar')
result = client.query("SELECT sum(\"eingespeiste_leistung\") *0.000002777777777 FROM \"Tannenstrasse\" WHERE time >= " + beginning + "ms and time <= " + end + "ms")
kwh = round(result.raw['series'][0]['values'][0][1], 1)
urllib.request.urlretrieve("http://localhost:3000/render/d-solo/-wCxs6mgk/solaranlage?orgId=1&refresh=10s&panelId=2&from=" + beginning + "&to=" + end + "&width=600&height=300&tz=Europe%2FBerlin", tmpdir.name + "/leistung.png")
# Send an HTML email with an embedded image and a plain text message for
# email clients that don't want to display the HTML.
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
# Define these once; use them twice!
strFrom = 'pv-tannenstr@web.de'
strTo = ["tobias.siegel@outlook.com", "wsiegel@web.de"]
# Create the root message and fill in the from, to, and subject headers
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = datetime.today().strftime('%Y-%m-%d') + ' - ' + str(kwh) + 'kWh - Solaranlage'
msgRoot['From'] = strFrom
msgRoot['To'] = ",".join(strTo)
msgRoot.preamble = 'This is a multi-part message in MIME format.'
# Encapsulate the plain and HTML versions of the message body in an
# 'alternative' part, so message agents can decide which they want to display.
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)
msgText = MIMEText('This is the alternative plain text message.')
msgAlternative.attach(msgText)
# We reference the image in the IMG SRC attribute by the ID we give it below
msgText = MIMEText('
', 'html')
msgAlternative.attach(msgText)
# This example assumes the image is in the current directory
fp = open(tmpdir.name + '/leistung.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# Define the image's ID as referenced above
msgImage.add_header('Content-ID', '')
msgRoot.attach(msgImage)
# Send the email (this example assumes SMTP authentication is required)
import smtplib, ssl
context = ssl.create_default_context()
with smtplib.SMTP('smtp.web.de', 587) as server:
server.ehlo() # Can be omitted
server.starttls(context=context)
server.ehlo() # Can be omitted
server.login(strFrom, 'PV-Tannenstr')
server.sendmail(strFrom, strTo, msgRoot.as_string())
tmpdir.cleanup()