solar_edge/solar_edge.py
2020-10-28 08:04:44 -07:00

69 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
import urllib.request
import json
import os
import shutil
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
#### 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")
## get JSON from solar edge server
url = os.getenv('URL')
infile = os.getenv('INFILE')
outfile = os.getenv('OUTFILE')
font_face = os.getenv('FONT_FACE')
ssh_host = os.getenv('SSH_HOST')
ssh_port = os.getenv('SSH_PORT')
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
image = Image.open(bundle_dir + "/" + infile)
font = ImageFont.truetype(bundle_dir + "/" + font_face, 19)
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)
## upload image to website or copy to folder
if ssh_host:
ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect(hostname=ssh_host, port=ssh_port, username=ssh_user)
scp = SCPClient(ssh.get_transport())
scp.put(outfile, ssh_folder)
scp.close()
ssh.close()
else:
shutil.copy2(outfile, ssh_folder)
os.remove(outfile)