Inital Commit
This commit is contained in:
commit
651a4db540
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
.direnv/*
|
||||
__pycache__/*
|
||||
.env
|
BIN
Biko_Regular.otf
Normal file
BIN
Biko_Regular.otf
Normal file
Binary file not shown.
11
README.md
Normal file
11
README.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Solar Edge Status Updater
|
||||
When placed in a cron job this uppdater will make an https call to a json api to retrieve the co2 savings and equivenant trees planted and overlay those numbers on a graphic and upload them to the website.
|
||||
|
||||
# Dependancies
|
||||
Python 3 and the packages `python-dotenv` and `Pillow`
|
||||
The font `Biko_Regular.otf`
|
||||
A `.png` graphic to write text on.
|
||||
|
||||
|
||||
# Bulid Instructions
|
||||
|
BIN
environmental_benefits_blank.png
Normal file
BIN
environmental_benefits_blank.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
14
requirements.txt
Normal file
14
requirements.txt
Normal file
@ -0,0 +1,14 @@
|
||||
asn1crypto==0.24.0
|
||||
bcrypt==3.1.6
|
||||
cffi==1.12.2
|
||||
cryptography==2.4.2
|
||||
idna==2.8
|
||||
paramiko==2.4.2
|
||||
Pillow==6.0.0
|
||||
pkg-resources==0.0.0
|
||||
pyasn1==0.4.5
|
||||
pycparser==2.19
|
||||
PyNaCl==1.3.0
|
||||
python-dotenv==0.10.1
|
||||
scp==0.13.2
|
||||
six==1.12.0
|
51
solar_edge.py
Executable file
51
solar_edge.py
Executable file
@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import urllib.request
|
||||
import json
|
||||
import os
|
||||
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
|
||||
|
||||
## 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_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(infile)
|
||||
font = ImageFont.truetype(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
|
||||
ssh = SSHClient()
|
||||
ssh.load_system_host_keys()
|
||||
ssh.connect(hostname=ssh_host, username=ssh_user)
|
||||
|
||||
scp = SCPClient(ssh.get_transport())
|
||||
scp.put(outfile, ssh_folder)
|
||||
scp.close()
|
||||
ssh.close()
|
||||
|
||||
os.remove(outfile)
|
Loading…
Reference in New Issue
Block a user