{"id":17173248,"url":"https://github.com/theodorju/ewire","last_synced_at":"2026-04-13T23:31:28.085Z","repository":{"id":129593422,"uuid":"340735842","full_name":"theodorju/ewire","owner":"theodorju","description":"Website with accessible graphs of Greece's electrical grid state. Developed as a personal project. Based on my thesis at AUTh.","archived":false,"fork":false,"pushed_at":"2021-09-23T17:28:13.000Z","size":1861,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-12-16T16:12:50.151Z","etag":null,"topics":["beautifulsoup4","bokeh","css","electrical","electrical-engineering","electrical-grid","ewire","flask","html","javascript","python","visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theodorju.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-02-20T19:26:23.000Z","updated_at":"2023-05-14T08:34:53.000Z","dependencies_parsed_at":"2023-06-12T12:00:19.985Z","dependency_job_id":null,"html_url":"https://github.com/theodorju/ewire","commit_stats":{"total_commits":24,"total_committers":1,"mean_commits":24.0,"dds":0.0,"last_synced_commit":"ec2a2b3aa0e050f7f27e36531796b96d5dadf067"},"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorju%2Fewire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorju%2Fewire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorju%2Fewire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorju%2Fewire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theodorju","download_url":"https://codeload.github.com/theodorju/ewire/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245347088,"owners_count":20600432,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beautifulsoup4","bokeh","css","electrical","electrical-engineering","electrical-grid","ewire","flask","html","javascript","python","visualization"],"created_at":"2024-10-14T23:50:20.439Z","updated_at":"2026-04-13T23:31:23.011Z","avatar_url":"https://github.com/theodorju.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ewire\r\n\r\n## General Information\r\nThe project is based on my thesis for Aristotle University of Thessaloniki. The thesis can be found [here](https://ikee.lib.auth.gr/record/294600/files/theodor-athanasiadis-thesis.pdf).\r\n\r\nThe main goal of the thesis was to bridge the gap in between the electrical consumers and the electrical grid. In particular, through the webpage which was acompannied by a smart-lamp (using Rapsberry-PI), the users would have information regarding the hourly state of the electrical grid, namely\r\nits load and the renewable energy infusion. This repository includes the code for an updated version of the webpage.\r\n\r\nThe webpage aims to quickly provide comprehensive graphs of daily load forecast and renewable energy infusion in Greece's Electrical Grid. The information for the daily load forecast as well as the renewable energy infusion are provided as excel files from the the Indepented Power Transmission Operator (IPTO) of Greece. Using python, those files are downloaded on the server and then plotted, each on a corresponding page.\r\n\r\n## Page Sections\r\n\r\n### Landing Page\r\nLanding Page including the logo and a responsive navigation bar.\r\n![](/static/assets/read-me-images/main-section.png)\r\n\r\n### Visualizations\r\nVisualization section where the users can view the latest Daily Load forecasted values or the latest Renewable Energy Infusion forecasted values.\r\n![](/static/assets/read-me-images/visualizations.png)\r\n\r\n### Contact form\r\nContact form with working validation. The contact form cannot be submitted with empty values or with an email that does not pass a (albeit basic) email validation. The messages are saved in an SQLite Database.\r\n![](/static/assets/read-me-images/contact-form.png)\r\n\r\n### Daily Load Forecast Graph\r\nGraph of Daily Load Forecast updated each day based on a scheduler. Bokeh was used to generate the graph.\r\n![](/static/assets/read-me-images/daily-forecast.png)\r\n\r\n### Renewable Energy Infusion\r\nGraph of Renewable Energy Infusion updated each day based on a scheduler. Bokeh was used to generate the graph.\r\n![](/static/assets/read-me-images/renewable-forecast.png)\r\n\r\n\r\n## Further information\r\n\r\n### Assumptions:\r\nDaily load forecast and renewable energy infusion predictions are generated from an outside system based on the requirements of [IPTO](https://www.IPTO.gr/en). The algorithm that performs the scrapping of IPTO site to download the latest forecast files was designed based on the way those files are uploaded, as of Feb. 2021. \r\nThe following assumptions were made:\r\n- Daily Load Forecast and Renewable Infusion Forecast:\r\n    - The files must be in `xlsx` format.\r\n    - The Excel files must have only one sheet.\r\n    - The files must be uploaded daily on: `https://www.IPTO.gr/systima/leitourgia/anafores-leitourgias-systimatos`.\r\n    - The files must be named: `YYYYmmDD_ISPXDayAhead\u003cMode\u003eForecast*` where X is either 1 or 2 based on the file version and `\u003cMode\u003e` is Load for the daily load forecast file or RES for the renewable energy injection prediction file.\r\n    - The files must have a value for each 30-minute interval of each day, i.e. 48 daily values.\r\n    - The values in each file must begin on column `C4` and end on column `AY4`. \r\n\r\n- Working assumptions:\r\n    - If for whatever reason the download of a new file fails, the old values will be used instead an a pop-up should notify the users.\r\n\r\nIf those assumptions are not true, the website is not guaranteed to perform as expected. It is possible that extra modifications in code would be necessary.\r\n\r\n### Database\r\nSQLite was chosen as database because it doesn't require setting up a separate database server and is built-in to Python.\r\nEven though concurrent write request are processes sequentially and might cause the application to slow down, this application is small and such cases are not expected here.\r\n\r\n### Conda environment:\r\n- To create an anaconda environment based on yml file execute:\r\n`conda env create -f environment.yml`\r\n\u003cbr\u003eThis creates a development environment with all the necessary packages, named `ewire`.\r\n\r\n- To activate the environment execute:\r\n`conda activate ewire`\r\n\r\n### Environmental variables:\r\n- To be able to start the server with `flask run` export:\r\n`export FLASK_APP=ewire`\r\n\r\n- To use Flask under development export:\r\n`export FLASK_ENV=development`\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheodorju%2Fewire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheodorju%2Fewire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheodorju%2Fewire/lists"}