solar_edge/solar_edge.py

69 lines
1.7 KiB
Python
Raw Normal View History

2019-04-15 16:15:57 -06:00
#!/usr/bin/env python3
import urllib.request
import json
import os
2019-04-15 17:26:14 -06:00
import shutil
2019-04-15 16:15:57 -06:00
from PIL import ImageFont
from PIL import ImageDraw
from PIL import Image
from dotenv import load_dotenv
from paramiko import SSHClient
from scp import SCPClient
2020-10-28 09:04:44 -06:00
#### HEAR BE DRAGONS
# set python environment
if getattr(sys, 'frozen', False):
bundle_dir = sys._MEIPASS
else:
# we are running in a normal Python environment
bundle_dir = os.path.dirname(os.path.abspath(__file__))
# load environmental variables
load_dotenv(bundle_dir + "/.env")
2019-04-15 16:15:57 -06:00
## get JSON from solar edge server
2020-10-28 09:04:44 -06:00
url = os.getenv('URL')
2019-04-15 16:15:57 -06:00
infile = os.getenv('INFILE')
outfile = os.getenv('OUTFILE')
font_face = os.getenv('FONT_FACE')
ssh_host = os.getenv('SSH_HOST')
2020-10-28 09:04:44 -06:00
ssh_port = os.getenv('SSH_PORT')
2019-04-15 16:15:57 -06:00
ssh_user = os.getenv('SSH_USER')
ssh_folder = os.getenv('SSH_FOLDER')
req = urllib.request.Request(url)
# parsing response
r = urllib.request.urlopen(req).read()
cont = json.loads(r.decode('utf-8'))
co2 = str(round(cont['envBenefits']['gasEmissionSaved']['co2']))+" lb"
trees = str(round(cont['envBenefits']['treesPlanted']))
## create image for website
fill_color = "#298246"
xpos = 91
2020-10-28 09:04:44 -06:00
image = Image.open(bundle_dir + "/" + infile)
font = ImageFont.truetype(bundle_dir + "/" + font_face, 19)
2019-04-15 16:15:57 -06:00
draw = ImageDraw.Draw(image)
draw.text((xpos, 81), co2, font=font, fill=fill_color)
draw.text((xpos, 157), trees, font=font, fill=fill_color)
image.save(outfile)
2019-04-15 17:26:14 -06:00
## upload image to website or copy to folder
if ssh_host:
ssh = SSHClient()
ssh.load_system_host_keys()
2020-10-28 09:04:44 -06:00
ssh.connect(hostname=ssh_host, port=ssh_port, username=ssh_user)
2019-04-15 17:26:14 -06:00
scp = SCPClient(ssh.get_transport())
scp.put(outfile, ssh_folder)
scp.close()
ssh.close()
else:
shutil.copy2(outfile, ssh_folder)
2019-04-15 16:15:57 -06:00
os.remove(outfile)