works with pyinstaller
This commit is contained in:
		
							parent
							
								
									52442f3cdc
								
							
						
					
					
						commit
						ba56145e86
					
				
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,3 +1,6 @@ | ||||
| .direnv/* | ||||
| __pycache__/* | ||||
| build/* | ||||
| dist/* | ||||
| venv/* | ||||
| .env | ||||
|  | ||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							| @ -29,15 +29,27 @@ pip install -r requirements.txt | ||||
| 
 | ||||
| edit `.env` and update accordingly | ||||
| 
 | ||||
| add to user crontab to update site every 5 minutes | ||||
| ``` | ||||
| */5   *     *   *  *    cd ~/python/solar_edge && direnv exec . python solar_edge.py > /dev/null 2>&1 | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| # Create pyinstaller | ||||
| ``` | ||||
| pyinstaller --onefile solar_edge.spec | ||||
| ``` | ||||
| 
 | ||||
| add to user crontab to update site every 5 minutes | ||||
| ``` | ||||
| 05   *     *   *  *    cd ~/python/solar_edge && direnv exec . python solar_edge.py > /dev/null 2>&1 | ||||
| */5   *     *   *  *    ~/bin/solar_edge > /dev/null 2>&1 | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| # Sample .env if installed on the server | ||||
| ``` | ||||
| SSH_HOST= | ||||
| SSH_PORT= | ||||
| SSH_USER= | ||||
| SSH_FOLDER=/var/www/wordpress | ||||
| URL=https://monitoringapi.solaredge.com/site/55555/envBenefits?systemUnits=Imperial&api_key= | ||||
| @ -49,6 +61,7 @@ FONT_FACE=Biko_Regular.otf | ||||
| # Sample .env file for scp | ||||
| ``` | ||||
| SSH_HOST=myserver.com | ||||
| SSH_PORT=22 | ||||
| SSH_USER=www-data | ||||
| SSH_FOLDER=/var/www/wordpress | ||||
| URL=https://monitoringapi.solaredge.com/site/55555/envBenefits?systemUnits=Imperial&api_key= | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| SSH_HOST=myserver.com | ||||
| SSH_PORT=22 | ||||
| SSH_USER=www-data | ||||
| SSH_FOLDER=/var/www/wordpress | ||||
| URL=https://monitoringapi.solaredge.com/site/55555/envBenefits?systemUnits=Imperial&api_key= | ||||
|  | ||||
| @ -1,3 +1,4 @@ | ||||
| altgraph==0.17 | ||||
| asn1crypto==0.24.0 | ||||
| bcrypt==3.1.6 | ||||
| cffi==1.12.2 | ||||
| @ -8,6 +9,8 @@ Pillow==6.0.0 | ||||
| pkg-resources==0.0.0 | ||||
| pyasn1==0.4.5 | ||||
| pycparser==2.19 | ||||
| pyinstaller==4.0 | ||||
| pyinstaller-hooks-contrib==2020.9 | ||||
| PyNaCl==1.3.0 | ||||
| python-dotenv==0.10.1 | ||||
| scp==0.13.2 | ||||
|  | ||||
| @ -11,12 +11,24 @@ 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) | ||||
| @ -31,8 +43,8 @@ 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) | ||||
| 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) | ||||
| @ -44,7 +56,7 @@ image.save(outfile) | ||||
| if ssh_host: | ||||
|     ssh = SSHClient() | ||||
|     ssh.load_system_host_keys() | ||||
|     ssh.connect(hostname=ssh_host, username=ssh_user) | ||||
|     ssh.connect(hostname=ssh_host, port=ssh_port, username=ssh_user) | ||||
| 
 | ||||
|     scp = SCPClient(ssh.get_transport()) | ||||
|     scp.put(outfile, ssh_folder) | ||||
|  | ||||
							
								
								
									
										33
									
								
								solar_edge.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								solar_edge.spec
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| # -*- mode: python ; coding: utf-8 -*- | ||||
| 
 | ||||
| block_cipher = None | ||||
| 
 | ||||
| 
 | ||||
| a = Analysis(['solar_edge.py'], | ||||
|              pathex=['/home/fwarren/builds/solar_edge'], | ||||
|              binaries=[], | ||||
|              datas=[('.env','.'),('Biko_Regular.otf','.'),('environmental_benefits_blank.png','.')], | ||||
|              hiddenimports=[], | ||||
|              hookspath=[], | ||||
|              runtime_hooks=[], | ||||
|              excludes=[], | ||||
|              win_no_prefer_redirects=False, | ||||
|              win_private_assemblies=False, | ||||
|              cipher=block_cipher, | ||||
|              noarchive=False) | ||||
| pyz = PYZ(a.pure, a.zipped_data, | ||||
|              cipher=block_cipher) | ||||
| exe = EXE(pyz, | ||||
|           a.scripts, | ||||
|           a.binaries, | ||||
|           a.zipfiles, | ||||
|           a.datas, | ||||
|           [], | ||||
|           name='solar_edge', | ||||
|           debug=False, | ||||
|           bootloader_ignore_signals=False, | ||||
|           strip=False, | ||||
|           upx=True, | ||||
|           upx_exclude=[], | ||||
|           runtime_tmpdir=None, | ||||
|           console=True ) | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user